diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/.gitignore b/Application/hu.bme.mit.inf.dslreasoner.application.ide/.gitignore index ae3c17260..d95727ab3 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/.gitignore +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/.gitignore @@ -1 +1,3 @@ /bin/ +/xtend-gen/ +/src-gen/ \ No newline at end of file diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/META-INF/MANIFEST.MF b/Application/hu.bme.mit.inf.dslreasoner.application.ide/META-INF/MANIFEST.MF index 7627464cb..86fc1ceab 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/META-INF/MANIFEST.MF +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/META-INF/MANIFEST.MF @@ -8,9 +8,8 @@ Bundle-ActivationPolicy: lazy Require-Bundle: hu.bme.mit.inf.dslreasoner.application, org.eclipse.xtext.ide, org.eclipse.xtext.xbase.ide, - org.antlr.runtime + org.antlr.runtime;bundle-version="[3.2.0,3.2.1)" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: hu.bme.mit.inf.dslreasoner.application.ide.contentassist.antlr.internal, hu.bme.mit.inf.dslreasoner.application.ide.contentassist.antlr Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.application.ide - diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/AbstractApplicationConfigurationIdeModule.java b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/AbstractApplicationConfigurationIdeModule.java index 94ca0fcb5..60d3bddc3 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/AbstractApplicationConfigurationIdeModule.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/AbstractApplicationConfigurationIdeModule.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.ide; @@ -15,6 +15,9 @@ import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper; import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser; import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +import org.eclipse.xtext.ide.refactoring.IRenameStrategy2; +import org.eclipse.xtext.ide.server.rename.IRenameService2; +import org.eclipse.xtext.ide.server.rename.RenameService2; /** * Manual modifications go to {@link ApplicationConfigurationIdeModule}. @@ -44,4 +47,14 @@ public Class bindIPrefixMatcher() { return FQNPrefixMatcher.class; } + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameService2() { + return RenameService2.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameStrategy2() { + return IRenameStrategy2.DefaultImpl.class; + } + } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/ApplicationConfigurationParser.java b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/ApplicationConfigurationParser.java index 15bd7ac0e..033478a57 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/ApplicationConfigurationParser.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/ApplicationConfigurationParser.java @@ -1,22 +1,258 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.ide.contentassist.antlr; +import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; +import com.google.inject.Singleton; import hu.bme.mit.inf.dslreasoner.application.ide.contentassist.antlr.internal.InternalApplicationConfigurationParser; import hu.bme.mit.inf.dslreasoner.application.services.ApplicationConfigurationGrammarAccess; -import java.util.HashMap; import java.util.Map; import org.eclipse.xtext.AbstractElement; import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser; public class ApplicationConfigurationParser extends AbstractContentAssistParser { + @Singleton + public static final class NameMappings { + + private final Map mappings; + + @Inject + public NameMappings(ApplicationConfigurationGrammarAccess grammarAccess) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + init(builder, grammarAccess); + this.mappings = builder.build(); + } + + public String getRuleName(AbstractElement element) { + return mappings.get(element); + } + + private static void init(ImmutableMap.Builder builder, ApplicationConfigurationGrammarAccess grammarAccess) { + builder.put(grammarAccess.getCommandAccess().getAlternatives(), "rule__Command__Alternatives"); + builder.put(grammarAccess.getImportAccess().getAlternatives(), "rule__Import__Alternatives"); + builder.put(grammarAccess.getDeclarationAccess().getAlternatives(), "rule__Declaration__Alternatives"); + builder.put(grammarAccess.getFileAccess().getAlternatives(), "rule__File__Alternatives"); + builder.put(grammarAccess.getMetamodelEntryAccess().getAlternatives(), "rule__MetamodelEntry__Alternatives"); + builder.put(grammarAccess.getMetamodelAccess().getAlternatives(), "rule__Metamodel__Alternatives"); + builder.put(grammarAccess.getPartialModelEntryAccess().getAlternatives(), "rule__PartialModelEntry__Alternatives"); + builder.put(grammarAccess.getPartialModelAccess().getAlternatives(), "rule__PartialModel__Alternatives"); + builder.put(grammarAccess.getPatternEntryAccess().getAlternatives(), "rule__PatternEntry__Alternatives"); + builder.put(grammarAccess.getGraphPatternAccess().getAlternatives(), "rule__GraphPattern__Alternatives"); + builder.put(grammarAccess.getConfigEntryAccess().getAlternatives(), "rule__ConfigEntry__Alternatives"); + builder.put(grammarAccess.getConfigAccess().getAlternatives(), "rule__Config__Alternatives"); + builder.put(grammarAccess.getTypeScopeAccess().getAlternatives(), "rule__TypeScope__Alternatives"); + builder.put(grammarAccess.getClassTypeScopeAccess().getAlternatives_2(), "rule__ClassTypeScope__Alternatives_2"); + builder.put(grammarAccess.getClassTypeScopeAccess().getAlternatives_3(), "rule__ClassTypeScope__Alternatives_3"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getAlternatives_2(), "rule__ObjectTypeScope__Alternatives_2"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getAlternatives_3(), "rule__ObjectTypeScope__Alternatives_3"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getAlternatives_2(), "rule__IntegerTypeScope__Alternatives_2"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getAlternatives_3(), "rule__IntegerTypeScope__Alternatives_3"); + builder.put(grammarAccess.getRealTypeScopeAccess().getAlternatives_2(), "rule__RealTypeScope__Alternatives_2"); + builder.put(grammarAccess.getRealTypeScopeAccess().getAlternatives_3(), "rule__RealTypeScope__Alternatives_3"); + builder.put(grammarAccess.getStringTypeScopeAccess().getAlternatives_2(), "rule__StringTypeScope__Alternatives_2"); + builder.put(grammarAccess.getStringTypeScopeAccess().getAlternatives_3(), "rule__StringTypeScope__Alternatives_3"); + builder.put(grammarAccess.getTypeReferenceAccess().getAlternatives(), "rule__TypeReference__Alternatives"); + builder.put(grammarAccess.getNumberSpecificationAccess().getAlternatives(), "rule__NumberSpecification__Alternatives"); + builder.put(grammarAccess.getExactNumberAccess().getAlternatives(), "rule__ExactNumber__Alternatives"); + builder.put(grammarAccess.getIntervallNumberAccess().getAlternatives_2(), "rule__IntervallNumber__Alternatives_2"); + builder.put(grammarAccess.getScopeAccess().getAlternatives(), "rule__Scope__Alternatives"); + builder.put(grammarAccess.getDocumentLevelSpecificationAccess().getAlternatives(), "rule__DocumentLevelSpecification__Alternatives"); + builder.put(grammarAccess.getSolverAccess().getAlternatives(), "rule__Solver__Alternatives"); + builder.put(grammarAccess.getConfigurationScriptAccess().getGroup(), "rule__ConfigurationScript__Group__0"); + builder.put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0"); + builder.put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0"); + builder.put(grammarAccess.getREALLiteralAccess().getGroup(), "rule__REALLiteral__Group__0"); + builder.put(grammarAccess.getINTLiteralAccess().getGroup(), "rule__INTLiteral__Group__0"); + builder.put(grammarAccess.getEPackageImportAccess().getGroup(), "rule__EPackageImport__Group__0"); + builder.put(grammarAccess.getViatraImportAccess().getGroup(), "rule__ViatraImport__Group__0"); + builder.put(grammarAccess.getFileDeclarationAccess().getGroup(), "rule__FileDeclaration__Group__0"); + builder.put(grammarAccess.getMetamodelSpecificationAccess().getGroup(), "rule__MetamodelSpecification__Group__0"); + builder.put(grammarAccess.getMetamodelSpecificationAccess().getGroup_2(), "rule__MetamodelSpecification__Group_2__0"); + builder.put(grammarAccess.getAllPackageEntryAccess().getGroup(), "rule__AllPackageEntry__Group__0"); + builder.put(grammarAccess.getAllPackageEntryAccess().getGroup_2(), "rule__AllPackageEntry__Group_2__0"); + builder.put(grammarAccess.getAllPackageEntryAccess().getGroup_2_3(), "rule__AllPackageEntry__Group_2_3__0"); + builder.put(grammarAccess.getMetamodelElementAccess().getGroup(), "rule__MetamodelElement__Group__0"); + builder.put(grammarAccess.getMetamodelElementAccess().getGroup_0(), "rule__MetamodelElement__Group_0__0"); + builder.put(grammarAccess.getMetamodelElementAccess().getGroup_2(), "rule__MetamodelElement__Group_2__0"); + builder.put(grammarAccess.getMetamodelDeclarationAccess().getGroup(), "rule__MetamodelDeclaration__Group__0"); + builder.put(grammarAccess.getPartialModelSpecificationAccess().getGroup(), "rule__PartialModelSpecification__Group__0"); + builder.put(grammarAccess.getPartialModelSpecificationAccess().getGroup_2(), "rule__PartialModelSpecification__Group_2__0"); + builder.put(grammarAccess.getFolderEntryAccess().getGroup(), "rule__FolderEntry__Group__0"); + builder.put(grammarAccess.getFolderEntryAccess().getGroup_2(), "rule__FolderEntry__Group_2__0"); + builder.put(grammarAccess.getFolderEntryAccess().getGroup_2_3(), "rule__FolderEntry__Group_2_3__0"); + builder.put(grammarAccess.getPartialModelDeclarationAccess().getGroup(), "rule__PartialModelDeclaration__Group__0"); + builder.put(grammarAccess.getPatternSpecificationAccess().getGroup(), "rule__PatternSpecification__Group__0"); + builder.put(grammarAccess.getPatternSpecificationAccess().getGroup_2(), "rule__PatternSpecification__Group_2__0"); + builder.put(grammarAccess.getAllPatternEntryAccess().getGroup(), "rule__AllPatternEntry__Group__0"); + builder.put(grammarAccess.getAllPatternEntryAccess().getGroup_2(), "rule__AllPatternEntry__Group_2__0"); + builder.put(grammarAccess.getAllPatternEntryAccess().getGroup_2_3(), "rule__AllPatternEntry__Group_2_3__0"); + builder.put(grammarAccess.getPatternElementAccess().getGroup(), "rule__PatternElement__Group__0"); + builder.put(grammarAccess.getPatternElementAccess().getGroup_0(), "rule__PatternElement__Group_0__0"); + builder.put(grammarAccess.getGraphPatternDeclarationAccess().getGroup(), "rule__GraphPatternDeclaration__Group__0"); + builder.put(grammarAccess.getConfigSpecificationAccess().getGroup(), "rule__ConfigSpecification__Group__0"); + builder.put(grammarAccess.getConfigSpecificationAccess().getGroup_2(), "rule__ConfigSpecification__Group_2__0"); + builder.put(grammarAccess.getConfigSpecificationAccess().getGroup_2_1(), "rule__ConfigSpecification__Group_2_1__0"); + builder.put(grammarAccess.getConfigDeclarationAccess().getGroup(), "rule__ConfigDeclaration__Group__0"); + builder.put(grammarAccess.getDocumentationEntryAccess().getGroup(), "rule__DocumentationEntry__Group__0"); + builder.put(grammarAccess.getRuntimeEntryAccess().getGroup(), "rule__RuntimeEntry__Group__0"); + builder.put(grammarAccess.getMemoryEntryAccess().getGroup(), "rule__MemoryEntry__Group__0"); + builder.put(grammarAccess.getCustomEntryAccess().getGroup(), "rule__CustomEntry__Group__0"); + builder.put(grammarAccess.getScopeSpecificationAccess().getGroup(), "rule__ScopeSpecification__Group__0"); + builder.put(grammarAccess.getScopeSpecificationAccess().getGroup_2(), "rule__ScopeSpecification__Group_2__0"); + builder.put(grammarAccess.getScopeSpecificationAccess().getGroup_2_1(), "rule__ScopeSpecification__Group_2_1__0"); + builder.put(grammarAccess.getClassTypeScopeAccess().getGroup(), "rule__ClassTypeScope__Group__0"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getGroup(), "rule__ObjectTypeScope__Group__0"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getGroup(), "rule__IntegerTypeScope__Group__0"); + builder.put(grammarAccess.getRealTypeScopeAccess().getGroup(), "rule__RealTypeScope__Group__0"); + builder.put(grammarAccess.getStringTypeScopeAccess().getGroup(), "rule__StringTypeScope__Group__0"); + builder.put(grammarAccess.getClassReferenceAccess().getGroup(), "rule__ClassReference__Group__0"); + builder.put(grammarAccess.getObjectReferenceAccess().getGroup(), "rule__ObjectReference__Group__0"); + builder.put(grammarAccess.getIntegerReferenceAccess().getGroup(), "rule__IntegerReference__Group__0"); + builder.put(grammarAccess.getRealReferenceAccess().getGroup(), "rule__RealReference__Group__0"); + builder.put(grammarAccess.getStringReferenceAccess().getGroup(), "rule__StringReference__Group__0"); + builder.put(grammarAccess.getIntervallNumberAccess().getGroup(), "rule__IntervallNumber__Group__0"); + builder.put(grammarAccess.getIntEnumberationAccess().getGroup(), "rule__IntEnumberation__Group__0"); + builder.put(grammarAccess.getIntEnumberationAccess().getGroup_2(), "rule__IntEnumberation__Group_2__0"); + builder.put(grammarAccess.getIntEnumberationAccess().getGroup_2_1(), "rule__IntEnumberation__Group_2_1__0"); + builder.put(grammarAccess.getRealEnumerationAccess().getGroup(), "rule__RealEnumeration__Group__0"); + builder.put(grammarAccess.getRealEnumerationAccess().getGroup_2(), "rule__RealEnumeration__Group_2__0"); + builder.put(grammarAccess.getRealEnumerationAccess().getGroup_2_1(), "rule__RealEnumeration__Group_2_1__0"); + builder.put(grammarAccess.getStringEnumerationAccess().getGroup(), "rule__StringEnumeration__Group__0"); + builder.put(grammarAccess.getStringEnumerationAccess().getGroup_2(), "rule__StringEnumeration__Group_2__0"); + builder.put(grammarAccess.getStringEnumerationAccess().getGroup_2_1(), "rule__StringEnumeration__Group_2_1__0"); + builder.put(grammarAccess.getScopeDeclarationAccess().getGroup(), "rule__ScopeDeclaration__Group__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup(), "rule__GenerationTask__Group__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_0(), "rule__GenerationTask__Group_3_0__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_1(), "rule__GenerationTask__Group_3_1__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_2(), "rule__GenerationTask__Group_3_2__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_3(), "rule__GenerationTask__Group_3_3__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_4(), "rule__GenerationTask__Group_3_4__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_5(), "rule__GenerationTask__Group_3_5__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_6(), "rule__GenerationTask__Group_3_6__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_7(), "rule__GenerationTask__Group_3_7__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_8(), "rule__GenerationTask__Group_3_8__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_9(), "rule__GenerationTask__Group_3_9__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_10(), "rule__GenerationTask__Group_3_10__0"); + builder.put(grammarAccess.getGenerationTaskAccess().getGroup_3_11(), "rule__GenerationTask__Group_3_11__0"); + builder.put(grammarAccess.getConfigurationScriptAccess().getImportsAssignment_0(), "rule__ConfigurationScript__ImportsAssignment_0"); + builder.put(grammarAccess.getConfigurationScriptAccess().getCommandsAssignment_1(), "rule__ConfigurationScript__CommandsAssignment_1"); + builder.put(grammarAccess.getEPackageImportAccess().getImportedPackageAssignment_2(), "rule__EPackageImport__ImportedPackageAssignment_2"); + builder.put(grammarAccess.getViatraImportAccess().getImportedViatraAssignment_2(), "rule__ViatraImport__ImportedViatraAssignment_2"); + builder.put(grammarAccess.getFileSpecificationAccess().getPathAssignment(), "rule__FileSpecification__PathAssignment"); + builder.put(grammarAccess.getFileDeclarationAccess().getNameAssignment_1(), "rule__FileDeclaration__NameAssignment_1"); + builder.put(grammarAccess.getFileDeclarationAccess().getSpecificationAssignment_3(), "rule__FileDeclaration__SpecificationAssignment_3"); + builder.put(grammarAccess.getFileReferenceAccess().getReferredAssignment(), "rule__FileReference__ReferredAssignment"); + builder.put(grammarAccess.getMetamodelSpecificationAccess().getEntriesAssignment_1(), "rule__MetamodelSpecification__EntriesAssignment_1"); + builder.put(grammarAccess.getMetamodelSpecificationAccess().getEntriesAssignment_2_1(), "rule__MetamodelSpecification__EntriesAssignment_2_1"); + builder.put(grammarAccess.getAllPackageEntryAccess().getPackageAssignment_1(), "rule__AllPackageEntry__PackageAssignment_1"); + builder.put(grammarAccess.getAllPackageEntryAccess().getExclusionAssignment_2_2(), "rule__AllPackageEntry__ExclusionAssignment_2_2"); + builder.put(grammarAccess.getAllPackageEntryAccess().getExclusionAssignment_2_3_1(), "rule__AllPackageEntry__ExclusionAssignment_2_3_1"); + builder.put(grammarAccess.getMetamodelElementAccess().getPackageAssignment_0_0(), "rule__MetamodelElement__PackageAssignment_0_0"); + builder.put(grammarAccess.getMetamodelElementAccess().getClassifierAssignment_1(), "rule__MetamodelElement__ClassifierAssignment_1"); + builder.put(grammarAccess.getMetamodelElementAccess().getFeatureAssignment_2_1(), "rule__MetamodelElement__FeatureAssignment_2_1"); + builder.put(grammarAccess.getMetamodelDeclarationAccess().getNameAssignment_1(), "rule__MetamodelDeclaration__NameAssignment_1"); + builder.put(grammarAccess.getMetamodelDeclarationAccess().getSpecificationAssignment_2(), "rule__MetamodelDeclaration__SpecificationAssignment_2"); + builder.put(grammarAccess.getMetamodelReferenceAccess().getReferredAssignment(), "rule__MetamodelReference__ReferredAssignment"); + builder.put(grammarAccess.getPartialModelSpecificationAccess().getEntryAssignment_1(), "rule__PartialModelSpecification__EntryAssignment_1"); + builder.put(grammarAccess.getPartialModelSpecificationAccess().getEntryAssignment_2_1(), "rule__PartialModelSpecification__EntryAssignment_2_1"); + builder.put(grammarAccess.getModelEntryAccess().getPathAssignment(), "rule__ModelEntry__PathAssignment"); + builder.put(grammarAccess.getFolderEntryAccess().getPathAssignment_1(), "rule__FolderEntry__PathAssignment_1"); + builder.put(grammarAccess.getFolderEntryAccess().getExclusionAssignment_2_2(), "rule__FolderEntry__ExclusionAssignment_2_2"); + builder.put(grammarAccess.getFolderEntryAccess().getExclusionAssignment_2_3_1(), "rule__FolderEntry__ExclusionAssignment_2_3_1"); + builder.put(grammarAccess.getPartialModelDeclarationAccess().getNameAssignment_1(), "rule__PartialModelDeclaration__NameAssignment_1"); + builder.put(grammarAccess.getPartialModelDeclarationAccess().getSpecificationAssignment_2(), "rule__PartialModelDeclaration__SpecificationAssignment_2"); + builder.put(grammarAccess.getPartialModelReferenceAccess().getReferredAssignment(), "rule__PartialModelReference__ReferredAssignment"); + builder.put(grammarAccess.getPatternSpecificationAccess().getEntriesAssignment_1(), "rule__PatternSpecification__EntriesAssignment_1"); + builder.put(grammarAccess.getPatternSpecificationAccess().getEntriesAssignment_2_1(), "rule__PatternSpecification__EntriesAssignment_2_1"); + builder.put(grammarAccess.getAllPatternEntryAccess().getPackageAssignment_1(), "rule__AllPatternEntry__PackageAssignment_1"); + builder.put(grammarAccess.getAllPatternEntryAccess().getExclusuionAssignment_2_2(), "rule__AllPatternEntry__ExclusuionAssignment_2_2"); + builder.put(grammarAccess.getAllPatternEntryAccess().getExclusuionAssignment_2_3_1(), "rule__AllPatternEntry__ExclusuionAssignment_2_3_1"); + builder.put(grammarAccess.getPatternElementAccess().getPackageAssignment_0_0(), "rule__PatternElement__PackageAssignment_0_0"); + builder.put(grammarAccess.getPatternElementAccess().getPatternAssignment_1(), "rule__PatternElement__PatternAssignment_1"); + builder.put(grammarAccess.getGraphPatternDeclarationAccess().getNameAssignment_1(), "rule__GraphPatternDeclaration__NameAssignment_1"); + builder.put(grammarAccess.getGraphPatternDeclarationAccess().getSpecificationAssignment_2(), "rule__GraphPatternDeclaration__SpecificationAssignment_2"); + builder.put(grammarAccess.getGraphPatternReferenceAccess().getReferredAssignment(), "rule__GraphPatternReference__ReferredAssignment"); + builder.put(grammarAccess.getConfigSpecificationAccess().getEntriesAssignment_2_0(), "rule__ConfigSpecification__EntriesAssignment_2_0"); + builder.put(grammarAccess.getConfigSpecificationAccess().getEntriesAssignment_2_1_1(), "rule__ConfigSpecification__EntriesAssignment_2_1_1"); + builder.put(grammarAccess.getConfigDeclarationAccess().getNameAssignment_1(), "rule__ConfigDeclaration__NameAssignment_1"); + builder.put(grammarAccess.getConfigDeclarationAccess().getSpecificationAssignment_2(), "rule__ConfigDeclaration__SpecificationAssignment_2"); + builder.put(grammarAccess.getDocumentationEntryAccess().getLevelAssignment_2(), "rule__DocumentationEntry__LevelAssignment_2"); + builder.put(grammarAccess.getRuntimeEntryAccess().getMillisecLimitAssignment_2(), "rule__RuntimeEntry__MillisecLimitAssignment_2"); + builder.put(grammarAccess.getMemoryEntryAccess().getMegabyteLimitAssignment_2(), "rule__MemoryEntry__MegabyteLimitAssignment_2"); + builder.put(grammarAccess.getCustomEntryAccess().getKeyAssignment_0(), "rule__CustomEntry__KeyAssignment_0"); + builder.put(grammarAccess.getCustomEntryAccess().getValueAssignment_2(), "rule__CustomEntry__ValueAssignment_2"); + builder.put(grammarAccess.getConfigReferenceAccess().getConfigAssignment(), "rule__ConfigReference__ConfigAssignment"); + builder.put(grammarAccess.getScopeSpecificationAccess().getScopesAssignment_2_0(), "rule__ScopeSpecification__ScopesAssignment_2_0"); + builder.put(grammarAccess.getScopeSpecificationAccess().getScopesAssignment_2_1_1(), "rule__ScopeSpecification__ScopesAssignment_2_1_1"); + builder.put(grammarAccess.getClassTypeScopeAccess().getTypeAssignment_1(), "rule__ClassTypeScope__TypeAssignment_1"); + builder.put(grammarAccess.getClassTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__ClassTypeScope__SetsNewAssignment_2_0"); + builder.put(grammarAccess.getClassTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__ClassTypeScope__SetsSumAssignment_2_1"); + builder.put(grammarAccess.getClassTypeScopeAccess().getNumberAssignment_3_0(), "rule__ClassTypeScope__NumberAssignment_3_0"); + builder.put(grammarAccess.getClassTypeScopeAccess().getNumberAssignment_3_1(), "rule__ClassTypeScope__NumberAssignment_3_1"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getTypeAssignment_1(), "rule__ObjectTypeScope__TypeAssignment_1"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__ObjectTypeScope__SetsNewAssignment_2_0"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__ObjectTypeScope__SetsSumAssignment_2_1"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getNumberAssignment_3_0(), "rule__ObjectTypeScope__NumberAssignment_3_0"); + builder.put(grammarAccess.getObjectTypeScopeAccess().getNumberAssignment_3_1(), "rule__ObjectTypeScope__NumberAssignment_3_1"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getTypeAssignment_1(), "rule__IntegerTypeScope__TypeAssignment_1"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__IntegerTypeScope__SetsNewAssignment_2_0"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__IntegerTypeScope__SetsSumAssignment_2_1"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getNumberAssignment_3_0(), "rule__IntegerTypeScope__NumberAssignment_3_0"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getNumberAssignment_3_1(), "rule__IntegerTypeScope__NumberAssignment_3_1"); + builder.put(grammarAccess.getIntegerTypeScopeAccess().getNumberAssignment_3_2(), "rule__IntegerTypeScope__NumberAssignment_3_2"); + builder.put(grammarAccess.getRealTypeScopeAccess().getTypeAssignment_1(), "rule__RealTypeScope__TypeAssignment_1"); + builder.put(grammarAccess.getRealTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__RealTypeScope__SetsNewAssignment_2_0"); + builder.put(grammarAccess.getRealTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__RealTypeScope__SetsSumAssignment_2_1"); + builder.put(grammarAccess.getRealTypeScopeAccess().getNumberAssignment_3_0(), "rule__RealTypeScope__NumberAssignment_3_0"); + builder.put(grammarAccess.getRealTypeScopeAccess().getNumberAssignment_3_1(), "rule__RealTypeScope__NumberAssignment_3_1"); + builder.put(grammarAccess.getRealTypeScopeAccess().getNumberAssignment_3_2(), "rule__RealTypeScope__NumberAssignment_3_2"); + builder.put(grammarAccess.getStringTypeScopeAccess().getTypeAssignment_1(), "rule__StringTypeScope__TypeAssignment_1"); + builder.put(grammarAccess.getStringTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__StringTypeScope__SetsNewAssignment_2_0"); + builder.put(grammarAccess.getStringTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__StringTypeScope__SetsSumAssignment_2_1"); + builder.put(grammarAccess.getStringTypeScopeAccess().getNumberAssignment_3_0(), "rule__StringTypeScope__NumberAssignment_3_0"); + builder.put(grammarAccess.getStringTypeScopeAccess().getNumberAssignment_3_1(), "rule__StringTypeScope__NumberAssignment_3_1"); + builder.put(grammarAccess.getStringTypeScopeAccess().getNumberAssignment_3_2(), "rule__StringTypeScope__NumberAssignment_3_2"); + builder.put(grammarAccess.getClassReferenceAccess().getElementAssignment_1(), "rule__ClassReference__ElementAssignment_1"); + builder.put(grammarAccess.getExactNumberAccess().getExactNumberAssignment_0(), "rule__ExactNumber__ExactNumberAssignment_0"); + builder.put(grammarAccess.getExactNumberAccess().getExactUnlimitedAssignment_1(), "rule__ExactNumber__ExactUnlimitedAssignment_1"); + builder.put(grammarAccess.getIntervallNumberAccess().getMinAssignment_0(), "rule__IntervallNumber__MinAssignment_0"); + builder.put(grammarAccess.getIntervallNumberAccess().getMaxNumberAssignment_2_0(), "rule__IntervallNumber__MaxNumberAssignment_2_0"); + builder.put(grammarAccess.getIntervallNumberAccess().getMaxUnlimitedAssignment_2_1(), "rule__IntervallNumber__MaxUnlimitedAssignment_2_1"); + builder.put(grammarAccess.getIntEnumberationAccess().getEntryAssignment_2_0(), "rule__IntEnumberation__EntryAssignment_2_0"); + builder.put(grammarAccess.getIntEnumberationAccess().getEntryAssignment_2_1_1(), "rule__IntEnumberation__EntryAssignment_2_1_1"); + builder.put(grammarAccess.getRealEnumerationAccess().getEntryAssignment_2_0(), "rule__RealEnumeration__EntryAssignment_2_0"); + builder.put(grammarAccess.getRealEnumerationAccess().getEntryAssignment_2_1_1(), "rule__RealEnumeration__EntryAssignment_2_1_1"); + builder.put(grammarAccess.getStringEnumerationAccess().getEntryAssignment_2_0(), "rule__StringEnumeration__EntryAssignment_2_0"); + builder.put(grammarAccess.getStringEnumerationAccess().getEntryAssignment_2_1_1(), "rule__StringEnumeration__EntryAssignment_2_1_1"); + builder.put(grammarAccess.getScopeDeclarationAccess().getNameAssignment_1(), "rule__ScopeDeclaration__NameAssignment_1"); + builder.put(grammarAccess.getScopeDeclarationAccess().getSpecificationAssignment_2(), "rule__ScopeDeclaration__SpecificationAssignment_2"); + builder.put(grammarAccess.getScopeReferenceAccess().getReferredAssignment(), "rule__ScopeReference__ReferredAssignment"); + builder.put(grammarAccess.getGenerationTaskAccess().getMetamodelAssignment_3_0_2(), "rule__GenerationTask__MetamodelAssignment_3_0_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getPartialModelAssignment_3_1_2(), "rule__GenerationTask__PartialModelAssignment_3_1_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getPatternsAssignment_3_2_2(), "rule__GenerationTask__PatternsAssignment_3_2_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getScopeAssignment_3_3_2(), "rule__GenerationTask__ScopeAssignment_3_3_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getNumberSpecifiedAssignment_3_4_0(), "rule__GenerationTask__NumberSpecifiedAssignment_3_4_0"); + builder.put(grammarAccess.getGenerationTaskAccess().getNumberAssignment_3_4_2(), "rule__GenerationTask__NumberAssignment_3_4_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getRunSpecifiedAssignment_3_5_0(), "rule__GenerationTask__RunSpecifiedAssignment_3_5_0"); + builder.put(grammarAccess.getGenerationTaskAccess().getRunsAssignment_3_5_2(), "rule__GenerationTask__RunsAssignment_3_5_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getSolverAssignment_3_6_2(), "rule__GenerationTask__SolverAssignment_3_6_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getConfigAssignment_3_7_2(), "rule__GenerationTask__ConfigAssignment_3_7_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getDebugFolderAssignment_3_8_2(), "rule__GenerationTask__DebugFolderAssignment_3_8_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getTargetLogFileAssignment_3_9_2(), "rule__GenerationTask__TargetLogFileAssignment_3_9_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getTargetStatisticsFileAssignment_3_10_2(), "rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getTagetFolderAssignment_3_11_2(), "rule__GenerationTask__TagetFolderAssignment_3_11_2"); + builder.put(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), "rule__GenerationTask__UnorderedGroup_3"); + } + } + @Inject - private ApplicationConfigurationGrammarAccess grammarAccess; + private NameMappings nameMappings; - private Map nameMappings; + @Inject + private ApplicationConfigurationGrammarAccess grammarAccess; @Override protected InternalApplicationConfigurationParser createParser() { @@ -27,230 +263,9 @@ protected InternalApplicationConfigurationParser createParser() { @Override protected String getRuleName(AbstractElement element) { - if (nameMappings == null) { - nameMappings = new HashMap() { - private static final long serialVersionUID = 1L; - { - put(grammarAccess.getCommandAccess().getAlternatives(), "rule__Command__Alternatives"); - put(grammarAccess.getImportAccess().getAlternatives(), "rule__Import__Alternatives"); - put(grammarAccess.getDeclarationAccess().getAlternatives(), "rule__Declaration__Alternatives"); - put(grammarAccess.getFileAccess().getAlternatives(), "rule__File__Alternatives"); - put(grammarAccess.getMetamodelEntryAccess().getAlternatives(), "rule__MetamodelEntry__Alternatives"); - put(grammarAccess.getMetamodelAccess().getAlternatives(), "rule__Metamodel__Alternatives"); - put(grammarAccess.getPartialModelEntryAccess().getAlternatives(), "rule__PartialModelEntry__Alternatives"); - put(grammarAccess.getPartialModelAccess().getAlternatives(), "rule__PartialModel__Alternatives"); - put(grammarAccess.getPatternEntryAccess().getAlternatives(), "rule__PatternEntry__Alternatives"); - put(grammarAccess.getGraphPatternAccess().getAlternatives(), "rule__GraphPattern__Alternatives"); - put(grammarAccess.getConfigEntryAccess().getAlternatives(), "rule__ConfigEntry__Alternatives"); - put(grammarAccess.getConfigAccess().getAlternatives(), "rule__Config__Alternatives"); - put(grammarAccess.getTypeScopeAccess().getAlternatives(), "rule__TypeScope__Alternatives"); - put(grammarAccess.getClassTypeScopeAccess().getAlternatives_2(), "rule__ClassTypeScope__Alternatives_2"); - put(grammarAccess.getClassTypeScopeAccess().getAlternatives_3(), "rule__ClassTypeScope__Alternatives_3"); - put(grammarAccess.getObjectTypeScopeAccess().getAlternatives_2(), "rule__ObjectTypeScope__Alternatives_2"); - put(grammarAccess.getObjectTypeScopeAccess().getAlternatives_3(), "rule__ObjectTypeScope__Alternatives_3"); - put(grammarAccess.getIntegerTypeScopeAccess().getAlternatives_2(), "rule__IntegerTypeScope__Alternatives_2"); - put(grammarAccess.getIntegerTypeScopeAccess().getAlternatives_3(), "rule__IntegerTypeScope__Alternatives_3"); - put(grammarAccess.getRealTypeScopeAccess().getAlternatives_2(), "rule__RealTypeScope__Alternatives_2"); - put(grammarAccess.getRealTypeScopeAccess().getAlternatives_3(), "rule__RealTypeScope__Alternatives_3"); - put(grammarAccess.getStringTypeScopeAccess().getAlternatives_2(), "rule__StringTypeScope__Alternatives_2"); - put(grammarAccess.getStringTypeScopeAccess().getAlternatives_3(), "rule__StringTypeScope__Alternatives_3"); - put(grammarAccess.getTypeReferenceAccess().getAlternatives(), "rule__TypeReference__Alternatives"); - put(grammarAccess.getNumberSpecificationAccess().getAlternatives(), "rule__NumberSpecification__Alternatives"); - put(grammarAccess.getExactNumberAccess().getAlternatives(), "rule__ExactNumber__Alternatives"); - put(grammarAccess.getIntervallNumberAccess().getAlternatives_2(), "rule__IntervallNumber__Alternatives_2"); - put(grammarAccess.getScopeAccess().getAlternatives(), "rule__Scope__Alternatives"); - put(grammarAccess.getDocumentLevelSpecificationAccess().getAlternatives(), "rule__DocumentLevelSpecification__Alternatives"); - put(grammarAccess.getSolverAccess().getAlternatives(), "rule__Solver__Alternatives"); - put(grammarAccess.getConfigurationScriptAccess().getGroup(), "rule__ConfigurationScript__Group__0"); - put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0"); - put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0"); - put(grammarAccess.getREALLiteralAccess().getGroup(), "rule__REALLiteral__Group__0"); - put(grammarAccess.getINTLiteralAccess().getGroup(), "rule__INTLiteral__Group__0"); - put(grammarAccess.getEPackageImportAccess().getGroup(), "rule__EPackageImport__Group__0"); - put(grammarAccess.getViatraImportAccess().getGroup(), "rule__ViatraImport__Group__0"); - put(grammarAccess.getFileDeclarationAccess().getGroup(), "rule__FileDeclaration__Group__0"); - put(grammarAccess.getMetamodelSpecificationAccess().getGroup(), "rule__MetamodelSpecification__Group__0"); - put(grammarAccess.getMetamodelSpecificationAccess().getGroup_2(), "rule__MetamodelSpecification__Group_2__0"); - put(grammarAccess.getAllPackageEntryAccess().getGroup(), "rule__AllPackageEntry__Group__0"); - put(grammarAccess.getAllPackageEntryAccess().getGroup_2(), "rule__AllPackageEntry__Group_2__0"); - put(grammarAccess.getAllPackageEntryAccess().getGroup_2_3(), "rule__AllPackageEntry__Group_2_3__0"); - put(grammarAccess.getMetamodelElementAccess().getGroup(), "rule__MetamodelElement__Group__0"); - put(grammarAccess.getMetamodelElementAccess().getGroup_0(), "rule__MetamodelElement__Group_0__0"); - put(grammarAccess.getMetamodelElementAccess().getGroup_2(), "rule__MetamodelElement__Group_2__0"); - put(grammarAccess.getMetamodelDeclarationAccess().getGroup(), "rule__MetamodelDeclaration__Group__0"); - put(grammarAccess.getPartialModelSpecificationAccess().getGroup(), "rule__PartialModelSpecification__Group__0"); - put(grammarAccess.getPartialModelSpecificationAccess().getGroup_2(), "rule__PartialModelSpecification__Group_2__0"); - put(grammarAccess.getFolderEntryAccess().getGroup(), "rule__FolderEntry__Group__0"); - put(grammarAccess.getFolderEntryAccess().getGroup_2(), "rule__FolderEntry__Group_2__0"); - put(grammarAccess.getFolderEntryAccess().getGroup_2_3(), "rule__FolderEntry__Group_2_3__0"); - put(grammarAccess.getPartialModelDeclarationAccess().getGroup(), "rule__PartialModelDeclaration__Group__0"); - put(grammarAccess.getPatternSpecificationAccess().getGroup(), "rule__PatternSpecification__Group__0"); - put(grammarAccess.getPatternSpecificationAccess().getGroup_2(), "rule__PatternSpecification__Group_2__0"); - put(grammarAccess.getAllPatternEntryAccess().getGroup(), "rule__AllPatternEntry__Group__0"); - put(grammarAccess.getAllPatternEntryAccess().getGroup_2(), "rule__AllPatternEntry__Group_2__0"); - put(grammarAccess.getAllPatternEntryAccess().getGroup_2_3(), "rule__AllPatternEntry__Group_2_3__0"); - put(grammarAccess.getPatternElementAccess().getGroup(), "rule__PatternElement__Group__0"); - put(grammarAccess.getPatternElementAccess().getGroup_0(), "rule__PatternElement__Group_0__0"); - put(grammarAccess.getGraphPatternDeclarationAccess().getGroup(), "rule__GraphPatternDeclaration__Group__0"); - put(grammarAccess.getConfigSpecificationAccess().getGroup(), "rule__ConfigSpecification__Group__0"); - put(grammarAccess.getConfigSpecificationAccess().getGroup_2(), "rule__ConfigSpecification__Group_2__0"); - put(grammarAccess.getConfigSpecificationAccess().getGroup_2_1(), "rule__ConfigSpecification__Group_2_1__0"); - put(grammarAccess.getConfigDeclarationAccess().getGroup(), "rule__ConfigDeclaration__Group__0"); - put(grammarAccess.getDocumentationEntryAccess().getGroup(), "rule__DocumentationEntry__Group__0"); - put(grammarAccess.getRuntimeEntryAccess().getGroup(), "rule__RuntimeEntry__Group__0"); - put(grammarAccess.getMemoryEntryAccess().getGroup(), "rule__MemoryEntry__Group__0"); - put(grammarAccess.getCustomEntryAccess().getGroup(), "rule__CustomEntry__Group__0"); - put(grammarAccess.getScopeSpecificationAccess().getGroup(), "rule__ScopeSpecification__Group__0"); - put(grammarAccess.getScopeSpecificationAccess().getGroup_2(), "rule__ScopeSpecification__Group_2__0"); - put(grammarAccess.getScopeSpecificationAccess().getGroup_2_1(), "rule__ScopeSpecification__Group_2_1__0"); - put(grammarAccess.getClassTypeScopeAccess().getGroup(), "rule__ClassTypeScope__Group__0"); - put(grammarAccess.getObjectTypeScopeAccess().getGroup(), "rule__ObjectTypeScope__Group__0"); - put(grammarAccess.getIntegerTypeScopeAccess().getGroup(), "rule__IntegerTypeScope__Group__0"); - put(grammarAccess.getRealTypeScopeAccess().getGroup(), "rule__RealTypeScope__Group__0"); - put(grammarAccess.getStringTypeScopeAccess().getGroup(), "rule__StringTypeScope__Group__0"); - put(grammarAccess.getClassReferenceAccess().getGroup(), "rule__ClassReference__Group__0"); - put(grammarAccess.getObjectReferenceAccess().getGroup(), "rule__ObjectReference__Group__0"); - put(grammarAccess.getIntegerReferenceAccess().getGroup(), "rule__IntegerReference__Group__0"); - put(grammarAccess.getRealReferenceAccess().getGroup(), "rule__RealReference__Group__0"); - put(grammarAccess.getStringReferenceAccess().getGroup(), "rule__StringReference__Group__0"); - put(grammarAccess.getIntervallNumberAccess().getGroup(), "rule__IntervallNumber__Group__0"); - put(grammarAccess.getIntEnumberationAccess().getGroup(), "rule__IntEnumberation__Group__0"); - put(grammarAccess.getIntEnumberationAccess().getGroup_2(), "rule__IntEnumberation__Group_2__0"); - put(grammarAccess.getIntEnumberationAccess().getGroup_2_1(), "rule__IntEnumberation__Group_2_1__0"); - put(grammarAccess.getRealEnumerationAccess().getGroup(), "rule__RealEnumeration__Group__0"); - put(grammarAccess.getRealEnumerationAccess().getGroup_2(), "rule__RealEnumeration__Group_2__0"); - put(grammarAccess.getRealEnumerationAccess().getGroup_2_1(), "rule__RealEnumeration__Group_2_1__0"); - put(grammarAccess.getStringEnumerationAccess().getGroup(), "rule__StringEnumeration__Group__0"); - put(grammarAccess.getStringEnumerationAccess().getGroup_2(), "rule__StringEnumeration__Group_2__0"); - put(grammarAccess.getStringEnumerationAccess().getGroup_2_1(), "rule__StringEnumeration__Group_2_1__0"); - put(grammarAccess.getScopeDeclarationAccess().getGroup(), "rule__ScopeDeclaration__Group__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup(), "rule__GenerationTask__Group__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_0(), "rule__GenerationTask__Group_3_0__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_1(), "rule__GenerationTask__Group_3_1__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_2(), "rule__GenerationTask__Group_3_2__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_3(), "rule__GenerationTask__Group_3_3__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_4(), "rule__GenerationTask__Group_3_4__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_5(), "rule__GenerationTask__Group_3_5__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_6(), "rule__GenerationTask__Group_3_6__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_7(), "rule__GenerationTask__Group_3_7__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_8(), "rule__GenerationTask__Group_3_8__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_9(), "rule__GenerationTask__Group_3_9__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_10(), "rule__GenerationTask__Group_3_10__0"); - put(grammarAccess.getGenerationTaskAccess().getGroup_3_11(), "rule__GenerationTask__Group_3_11__0"); - put(grammarAccess.getConfigurationScriptAccess().getImportsAssignment_0(), "rule__ConfigurationScript__ImportsAssignment_0"); - put(grammarAccess.getConfigurationScriptAccess().getCommandsAssignment_1(), "rule__ConfigurationScript__CommandsAssignment_1"); - put(grammarAccess.getEPackageImportAccess().getImportedPackageAssignment_2(), "rule__EPackageImport__ImportedPackageAssignment_2"); - put(grammarAccess.getViatraImportAccess().getImportedViatraAssignment_2(), "rule__ViatraImport__ImportedViatraAssignment_2"); - put(grammarAccess.getFileSpecificationAccess().getPathAssignment(), "rule__FileSpecification__PathAssignment"); - put(grammarAccess.getFileDeclarationAccess().getNameAssignment_1(), "rule__FileDeclaration__NameAssignment_1"); - put(grammarAccess.getFileDeclarationAccess().getSpecificationAssignment_3(), "rule__FileDeclaration__SpecificationAssignment_3"); - put(grammarAccess.getFileReferenceAccess().getReferredAssignment(), "rule__FileReference__ReferredAssignment"); - put(grammarAccess.getMetamodelSpecificationAccess().getEntriesAssignment_1(), "rule__MetamodelSpecification__EntriesAssignment_1"); - put(grammarAccess.getMetamodelSpecificationAccess().getEntriesAssignment_2_1(), "rule__MetamodelSpecification__EntriesAssignment_2_1"); - put(grammarAccess.getAllPackageEntryAccess().getPackageAssignment_1(), "rule__AllPackageEntry__PackageAssignment_1"); - put(grammarAccess.getAllPackageEntryAccess().getExclusionAssignment_2_2(), "rule__AllPackageEntry__ExclusionAssignment_2_2"); - put(grammarAccess.getAllPackageEntryAccess().getExclusionAssignment_2_3_1(), "rule__AllPackageEntry__ExclusionAssignment_2_3_1"); - put(grammarAccess.getMetamodelElementAccess().getPackageAssignment_0_0(), "rule__MetamodelElement__PackageAssignment_0_0"); - put(grammarAccess.getMetamodelElementAccess().getClassifierAssignment_1(), "rule__MetamodelElement__ClassifierAssignment_1"); - put(grammarAccess.getMetamodelElementAccess().getFeatureAssignment_2_1(), "rule__MetamodelElement__FeatureAssignment_2_1"); - put(grammarAccess.getMetamodelDeclarationAccess().getNameAssignment_1(), "rule__MetamodelDeclaration__NameAssignment_1"); - put(grammarAccess.getMetamodelDeclarationAccess().getSpecificationAssignment_2(), "rule__MetamodelDeclaration__SpecificationAssignment_2"); - put(grammarAccess.getMetamodelReferenceAccess().getReferredAssignment(), "rule__MetamodelReference__ReferredAssignment"); - put(grammarAccess.getPartialModelSpecificationAccess().getEntryAssignment_1(), "rule__PartialModelSpecification__EntryAssignment_1"); - put(grammarAccess.getPartialModelSpecificationAccess().getEntryAssignment_2_1(), "rule__PartialModelSpecification__EntryAssignment_2_1"); - put(grammarAccess.getModelEntryAccess().getPathAssignment(), "rule__ModelEntry__PathAssignment"); - put(grammarAccess.getFolderEntryAccess().getPathAssignment_1(), "rule__FolderEntry__PathAssignment_1"); - put(grammarAccess.getFolderEntryAccess().getExclusionAssignment_2_2(), "rule__FolderEntry__ExclusionAssignment_2_2"); - put(grammarAccess.getFolderEntryAccess().getExclusionAssignment_2_3_1(), "rule__FolderEntry__ExclusionAssignment_2_3_1"); - put(grammarAccess.getPartialModelDeclarationAccess().getNameAssignment_1(), "rule__PartialModelDeclaration__NameAssignment_1"); - put(grammarAccess.getPartialModelDeclarationAccess().getSpecificationAssignment_2(), "rule__PartialModelDeclaration__SpecificationAssignment_2"); - put(grammarAccess.getPartialModelReferenceAccess().getReferredAssignment(), "rule__PartialModelReference__ReferredAssignment"); - put(grammarAccess.getPatternSpecificationAccess().getEntriesAssignment_1(), "rule__PatternSpecification__EntriesAssignment_1"); - put(grammarAccess.getPatternSpecificationAccess().getEntriesAssignment_2_1(), "rule__PatternSpecification__EntriesAssignment_2_1"); - put(grammarAccess.getAllPatternEntryAccess().getPackageAssignment_1(), "rule__AllPatternEntry__PackageAssignment_1"); - put(grammarAccess.getAllPatternEntryAccess().getExclusuionAssignment_2_2(), "rule__AllPatternEntry__ExclusuionAssignment_2_2"); - put(grammarAccess.getAllPatternEntryAccess().getExclusuionAssignment_2_3_1(), "rule__AllPatternEntry__ExclusuionAssignment_2_3_1"); - put(grammarAccess.getPatternElementAccess().getPackageAssignment_0_0(), "rule__PatternElement__PackageAssignment_0_0"); - put(grammarAccess.getPatternElementAccess().getPatternAssignment_1(), "rule__PatternElement__PatternAssignment_1"); - put(grammarAccess.getGraphPatternDeclarationAccess().getNameAssignment_1(), "rule__GraphPatternDeclaration__NameAssignment_1"); - put(grammarAccess.getGraphPatternDeclarationAccess().getSpecificationAssignment_2(), "rule__GraphPatternDeclaration__SpecificationAssignment_2"); - put(grammarAccess.getGraphPatternReferenceAccess().getReferredAssignment(), "rule__GraphPatternReference__ReferredAssignment"); - put(grammarAccess.getConfigSpecificationAccess().getEntriesAssignment_2_0(), "rule__ConfigSpecification__EntriesAssignment_2_0"); - put(grammarAccess.getConfigSpecificationAccess().getEntriesAssignment_2_1_1(), "rule__ConfigSpecification__EntriesAssignment_2_1_1"); - put(grammarAccess.getConfigDeclarationAccess().getNameAssignment_1(), "rule__ConfigDeclaration__NameAssignment_1"); - put(grammarAccess.getConfigDeclarationAccess().getSpecificationAssignment_2(), "rule__ConfigDeclaration__SpecificationAssignment_2"); - put(grammarAccess.getDocumentationEntryAccess().getLevelAssignment_2(), "rule__DocumentationEntry__LevelAssignment_2"); - put(grammarAccess.getRuntimeEntryAccess().getMillisecLimitAssignment_2(), "rule__RuntimeEntry__MillisecLimitAssignment_2"); - put(grammarAccess.getMemoryEntryAccess().getMegabyteLimitAssignment_2(), "rule__MemoryEntry__MegabyteLimitAssignment_2"); - put(grammarAccess.getCustomEntryAccess().getKeyAssignment_0(), "rule__CustomEntry__KeyAssignment_0"); - put(grammarAccess.getCustomEntryAccess().getValueAssignment_2(), "rule__CustomEntry__ValueAssignment_2"); - put(grammarAccess.getConfigReferenceAccess().getConfigAssignment(), "rule__ConfigReference__ConfigAssignment"); - put(grammarAccess.getScopeSpecificationAccess().getScopesAssignment_2_0(), "rule__ScopeSpecification__ScopesAssignment_2_0"); - put(grammarAccess.getScopeSpecificationAccess().getScopesAssignment_2_1_1(), "rule__ScopeSpecification__ScopesAssignment_2_1_1"); - put(grammarAccess.getClassTypeScopeAccess().getTypeAssignment_1(), "rule__ClassTypeScope__TypeAssignment_1"); - put(grammarAccess.getClassTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__ClassTypeScope__SetsNewAssignment_2_0"); - put(grammarAccess.getClassTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__ClassTypeScope__SetsSumAssignment_2_1"); - put(grammarAccess.getClassTypeScopeAccess().getNumberAssignment_3_0(), "rule__ClassTypeScope__NumberAssignment_3_0"); - put(grammarAccess.getClassTypeScopeAccess().getNumberAssignment_3_1(), "rule__ClassTypeScope__NumberAssignment_3_1"); - put(grammarAccess.getObjectTypeScopeAccess().getTypeAssignment_1(), "rule__ObjectTypeScope__TypeAssignment_1"); - put(grammarAccess.getObjectTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__ObjectTypeScope__SetsNewAssignment_2_0"); - put(grammarAccess.getObjectTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__ObjectTypeScope__SetsSumAssignment_2_1"); - put(grammarAccess.getObjectTypeScopeAccess().getNumberAssignment_3_0(), "rule__ObjectTypeScope__NumberAssignment_3_0"); - put(grammarAccess.getObjectTypeScopeAccess().getNumberAssignment_3_1(), "rule__ObjectTypeScope__NumberAssignment_3_1"); - put(grammarAccess.getIntegerTypeScopeAccess().getTypeAssignment_1(), "rule__IntegerTypeScope__TypeAssignment_1"); - put(grammarAccess.getIntegerTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__IntegerTypeScope__SetsNewAssignment_2_0"); - put(grammarAccess.getIntegerTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__IntegerTypeScope__SetsSumAssignment_2_1"); - put(grammarAccess.getIntegerTypeScopeAccess().getNumberAssignment_3_0(), "rule__IntegerTypeScope__NumberAssignment_3_0"); - put(grammarAccess.getIntegerTypeScopeAccess().getNumberAssignment_3_1(), "rule__IntegerTypeScope__NumberAssignment_3_1"); - put(grammarAccess.getIntegerTypeScopeAccess().getNumberAssignment_3_2(), "rule__IntegerTypeScope__NumberAssignment_3_2"); - put(grammarAccess.getRealTypeScopeAccess().getTypeAssignment_1(), "rule__RealTypeScope__TypeAssignment_1"); - put(grammarAccess.getRealTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__RealTypeScope__SetsNewAssignment_2_0"); - put(grammarAccess.getRealTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__RealTypeScope__SetsSumAssignment_2_1"); - put(grammarAccess.getRealTypeScopeAccess().getNumberAssignment_3_0(), "rule__RealTypeScope__NumberAssignment_3_0"); - put(grammarAccess.getRealTypeScopeAccess().getNumberAssignment_3_1(), "rule__RealTypeScope__NumberAssignment_3_1"); - put(grammarAccess.getRealTypeScopeAccess().getNumberAssignment_3_2(), "rule__RealTypeScope__NumberAssignment_3_2"); - put(grammarAccess.getStringTypeScopeAccess().getTypeAssignment_1(), "rule__StringTypeScope__TypeAssignment_1"); - put(grammarAccess.getStringTypeScopeAccess().getSetsNewAssignment_2_0(), "rule__StringTypeScope__SetsNewAssignment_2_0"); - put(grammarAccess.getStringTypeScopeAccess().getSetsSumAssignment_2_1(), "rule__StringTypeScope__SetsSumAssignment_2_1"); - put(grammarAccess.getStringTypeScopeAccess().getNumberAssignment_3_0(), "rule__StringTypeScope__NumberAssignment_3_0"); - put(grammarAccess.getStringTypeScopeAccess().getNumberAssignment_3_1(), "rule__StringTypeScope__NumberAssignment_3_1"); - put(grammarAccess.getStringTypeScopeAccess().getNumberAssignment_3_2(), "rule__StringTypeScope__NumberAssignment_3_2"); - put(grammarAccess.getClassReferenceAccess().getElementAssignment_1(), "rule__ClassReference__ElementAssignment_1"); - put(grammarAccess.getExactNumberAccess().getExactNumberAssignment_0(), "rule__ExactNumber__ExactNumberAssignment_0"); - put(grammarAccess.getExactNumberAccess().getExactUnlimitedAssignment_1(), "rule__ExactNumber__ExactUnlimitedAssignment_1"); - put(grammarAccess.getIntervallNumberAccess().getMinAssignment_0(), "rule__IntervallNumber__MinAssignment_0"); - put(grammarAccess.getIntervallNumberAccess().getMaxNumberAssignment_2_0(), "rule__IntervallNumber__MaxNumberAssignment_2_0"); - put(grammarAccess.getIntervallNumberAccess().getMaxUnlimitedAssignment_2_1(), "rule__IntervallNumber__MaxUnlimitedAssignment_2_1"); - put(grammarAccess.getIntEnumberationAccess().getEntryAssignment_2_0(), "rule__IntEnumberation__EntryAssignment_2_0"); - put(grammarAccess.getIntEnumberationAccess().getEntryAssignment_2_1_1(), "rule__IntEnumberation__EntryAssignment_2_1_1"); - put(grammarAccess.getRealEnumerationAccess().getEntryAssignment_2_0(), "rule__RealEnumeration__EntryAssignment_2_0"); - put(grammarAccess.getRealEnumerationAccess().getEntryAssignment_2_1_1(), "rule__RealEnumeration__EntryAssignment_2_1_1"); - put(grammarAccess.getStringEnumerationAccess().getEntryAssignment_2_0(), "rule__StringEnumeration__EntryAssignment_2_0"); - put(grammarAccess.getStringEnumerationAccess().getEntryAssignment_2_1_1(), "rule__StringEnumeration__EntryAssignment_2_1_1"); - put(grammarAccess.getScopeDeclarationAccess().getNameAssignment_1(), "rule__ScopeDeclaration__NameAssignment_1"); - put(grammarAccess.getScopeDeclarationAccess().getSpecificationAssignment_2(), "rule__ScopeDeclaration__SpecificationAssignment_2"); - put(grammarAccess.getScopeReferenceAccess().getReferredAssignment(), "rule__ScopeReference__ReferredAssignment"); - put(grammarAccess.getGenerationTaskAccess().getMetamodelAssignment_3_0_2(), "rule__GenerationTask__MetamodelAssignment_3_0_2"); - put(grammarAccess.getGenerationTaskAccess().getPartialModelAssignment_3_1_2(), "rule__GenerationTask__PartialModelAssignment_3_1_2"); - put(grammarAccess.getGenerationTaskAccess().getPatternsAssignment_3_2_2(), "rule__GenerationTask__PatternsAssignment_3_2_2"); - put(grammarAccess.getGenerationTaskAccess().getScopeAssignment_3_3_2(), "rule__GenerationTask__ScopeAssignment_3_3_2"); - put(grammarAccess.getGenerationTaskAccess().getNumberSpecifiedAssignment_3_4_0(), "rule__GenerationTask__NumberSpecifiedAssignment_3_4_0"); - put(grammarAccess.getGenerationTaskAccess().getNumberAssignment_3_4_2(), "rule__GenerationTask__NumberAssignment_3_4_2"); - put(grammarAccess.getGenerationTaskAccess().getRunSpecifiedAssignment_3_5_0(), "rule__GenerationTask__RunSpecifiedAssignment_3_5_0"); - put(grammarAccess.getGenerationTaskAccess().getRunsAssignment_3_5_2(), "rule__GenerationTask__RunsAssignment_3_5_2"); - put(grammarAccess.getGenerationTaskAccess().getSolverAssignment_3_6_2(), "rule__GenerationTask__SolverAssignment_3_6_2"); - put(grammarAccess.getGenerationTaskAccess().getConfigAssignment_3_7_2(), "rule__GenerationTask__ConfigAssignment_3_7_2"); - put(grammarAccess.getGenerationTaskAccess().getDebugFolderAssignment_3_8_2(), "rule__GenerationTask__DebugFolderAssignment_3_8_2"); - put(grammarAccess.getGenerationTaskAccess().getTargetLogFileAssignment_3_9_2(), "rule__GenerationTask__TargetLogFileAssignment_3_9_2"); - put(grammarAccess.getGenerationTaskAccess().getTargetStatisticsFileAssignment_3_10_2(), "rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2"); - put(grammarAccess.getGenerationTaskAccess().getTagetFolderAssignment_3_11_2(), "rule__GenerationTask__TagetFolderAssignment_3_11_2"); - put(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), "rule__GenerationTask__UnorderedGroup_3"); - } - }; - } - return nameMappings.get(element); + return nameMappings.getRuleName(element); } - + @Override protected String[] getInitialHiddenTokens() { return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" }; @@ -263,4 +278,12 @@ public ApplicationConfigurationGrammarAccess getGrammarAccess() { public void setGrammarAccess(ApplicationConfigurationGrammarAccess grammarAccess) { this.grammarAccess = grammarAccess; } + + public NameMappings getNameMappings() { + return nameMappings; + } + + public void setNameMappings(NameMappings nameMappings) { + this.nameMappings = nameMappings; + } } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/PartialApplicationConfigurationContentAssistParser.java b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/PartialApplicationConfigurationContentAssistParser.java index e6e847701..078014b28 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/PartialApplicationConfigurationContentAssistParser.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/PartialApplicationConfigurationContentAssistParser.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.ide.contentassist.antlr; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.g b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.g index e9a919382..62faa875d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.g +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.g @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ grammar InternalApplicationConfiguration; @@ -2373,6 +2373,12 @@ rule__Solver__Alternatives ('ViatraSolver') { after(grammarAccess.getSolverAccess().getViatraSolverEnumLiteralDeclaration_2()); } ) + | + ( + { before(grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3()); } + ('TPTPSolver') + { after(grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3()); } + ) ; finally { restoreStackSize(stackSize); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.tokens b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.tokens index f7f2179e0..0ee7adba8 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.tokens +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfiguration.tokens @@ -1,50 +1,51 @@ -'#'=38 -'*'=55 -'+='=54 -','=26 -'-'=18 -'.'=17 -'..'=45 -'::'=29 -'<'=39 -'='=23 -'>'=40 +'#'=39 +'*'=56 +'+='=55 +','=27 +'-'=19 +'.'=18 +'..'=46 +'::'=30 +'<'=40 +'='=24 +'>'=41 'AlloySolver'=15 'SMTSolver'=14 +'TPTPSolver'=17 'ViatraSolver'=16 -'config'=34 -'constraints'=33 -'debug'=50 -'epackage'=20 -'excluding'=28 -'file'=22 -'folder'=31 +'config'=35 +'constraints'=34 +'debug'=51 +'epackage'=21 +'excluding'=29 +'file'=23 +'folder'=32 'full'=13 -'generate'=47 -'import'=19 -'int'=42 -'log'=51 -'log-level'=35 -'memory'=37 -'metamodel'=30 -'models'=32 -'node'=41 +'generate'=48 +'import'=20 +'int'=43 +'log'=52 +'log-level'=36 +'memory'=38 +'metamodel'=31 +'models'=33 +'node'=42 'none'=11 'normal'=12 -'number'=56 -'output'=53 -'package'=27 -'partial-model'=48 -'real'=43 -'runs'=57 -'runtime'=36 -'scope'=46 -'solver'=49 -'statistics'=52 -'string'=44 -'viatra'=21 -'{'=24 -'}'=25 +'number'=57 +'output'=54 +'package'=28 +'partial-model'=49 +'real'=44 +'runs'=58 +'runtime'=37 +'scope'=47 +'solver'=50 +'statistics'=53 +'string'=45 +'viatra'=22 +'{'=25 +'}'=26 RULE_ANY_OTHER=10 RULE_ID=4 RULE_INT=5 @@ -99,3 +100,4 @@ T__54=54 T__55=55 T__56=56 T__57=57 +T__58=58 diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationLexer.java b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationLexer.java index 46e0af6fb..7a19253d4 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationLexer.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationLexer.java @@ -25,6 +25,7 @@ public class InternalApplicationConfigurationLexer extends Lexer { public static final int T__13=13; public static final int T__57=57; public static final int T__14=14; + public static final int T__58=58; public static final int T__51=51; public static final int T__52=52; public static final int T__53=53; @@ -212,10 +213,11 @@ public final void mT__17() throws RecognitionException { try { int _type = T__17; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:17:7: ( '.' ) - // InternalApplicationConfiguration.g:17:9: '.' + // InternalApplicationConfiguration.g:17:7: ( 'TPTPSolver' ) + // InternalApplicationConfiguration.g:17:9: 'TPTPSolver' { - match('.'); + match("TPTPSolver"); + } @@ -232,10 +234,10 @@ public final void mT__18() throws RecognitionException { try { int _type = T__18; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:18:7: ( '-' ) - // InternalApplicationConfiguration.g:18:9: '-' + // InternalApplicationConfiguration.g:18:7: ( '.' ) + // InternalApplicationConfiguration.g:18:9: '.' { - match('-'); + match('.'); } @@ -252,11 +254,10 @@ public final void mT__19() throws RecognitionException { try { int _type = T__19; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:19:7: ( 'import' ) - // InternalApplicationConfiguration.g:19:9: 'import' + // InternalApplicationConfiguration.g:19:7: ( '-' ) + // InternalApplicationConfiguration.g:19:9: '-' { - match("import"); - + match('-'); } @@ -273,10 +274,10 @@ public final void mT__20() throws RecognitionException { try { int _type = T__20; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:20:7: ( 'epackage' ) - // InternalApplicationConfiguration.g:20:9: 'epackage' + // InternalApplicationConfiguration.g:20:7: ( 'import' ) + // InternalApplicationConfiguration.g:20:9: 'import' { - match("epackage"); + match("import"); } @@ -294,10 +295,10 @@ public final void mT__21() throws RecognitionException { try { int _type = T__21; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:21:7: ( 'viatra' ) - // InternalApplicationConfiguration.g:21:9: 'viatra' + // InternalApplicationConfiguration.g:21:7: ( 'epackage' ) + // InternalApplicationConfiguration.g:21:9: 'epackage' { - match("viatra"); + match("epackage"); } @@ -315,10 +316,10 @@ public final void mT__22() throws RecognitionException { try { int _type = T__22; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:22:7: ( 'file' ) - // InternalApplicationConfiguration.g:22:9: 'file' + // InternalApplicationConfiguration.g:22:7: ( 'viatra' ) + // InternalApplicationConfiguration.g:22:9: 'viatra' { - match("file"); + match("viatra"); } @@ -336,10 +337,11 @@ public final void mT__23() throws RecognitionException { try { int _type = T__23; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:23:7: ( '=' ) - // InternalApplicationConfiguration.g:23:9: '=' + // InternalApplicationConfiguration.g:23:7: ( 'file' ) + // InternalApplicationConfiguration.g:23:9: 'file' { - match('='); + match("file"); + } @@ -356,10 +358,10 @@ public final void mT__24() throws RecognitionException { try { int _type = T__24; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:24:7: ( '{' ) - // InternalApplicationConfiguration.g:24:9: '{' + // InternalApplicationConfiguration.g:24:7: ( '=' ) + // InternalApplicationConfiguration.g:24:9: '=' { - match('{'); + match('='); } @@ -376,10 +378,10 @@ public final void mT__25() throws RecognitionException { try { int _type = T__25; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:25:7: ( '}' ) - // InternalApplicationConfiguration.g:25:9: '}' + // InternalApplicationConfiguration.g:25:7: ( '{' ) + // InternalApplicationConfiguration.g:25:9: '{' { - match('}'); + match('{'); } @@ -396,10 +398,10 @@ public final void mT__26() throws RecognitionException { try { int _type = T__26; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:26:7: ( ',' ) - // InternalApplicationConfiguration.g:26:9: ',' + // InternalApplicationConfiguration.g:26:7: ( '}' ) + // InternalApplicationConfiguration.g:26:9: '}' { - match(','); + match('}'); } @@ -416,11 +418,10 @@ public final void mT__27() throws RecognitionException { try { int _type = T__27; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:27:7: ( 'package' ) - // InternalApplicationConfiguration.g:27:9: 'package' + // InternalApplicationConfiguration.g:27:7: ( ',' ) + // InternalApplicationConfiguration.g:27:9: ',' { - match("package"); - + match(','); } @@ -437,10 +438,10 @@ public final void mT__28() throws RecognitionException { try { int _type = T__28; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:28:7: ( 'excluding' ) - // InternalApplicationConfiguration.g:28:9: 'excluding' + // InternalApplicationConfiguration.g:28:7: ( 'package' ) + // InternalApplicationConfiguration.g:28:9: 'package' { - match("excluding"); + match("package"); } @@ -458,10 +459,10 @@ public final void mT__29() throws RecognitionException { try { int _type = T__29; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:29:7: ( '::' ) - // InternalApplicationConfiguration.g:29:9: '::' + // InternalApplicationConfiguration.g:29:7: ( 'excluding' ) + // InternalApplicationConfiguration.g:29:9: 'excluding' { - match("::"); + match("excluding"); } @@ -479,10 +480,10 @@ public final void mT__30() throws RecognitionException { try { int _type = T__30; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:30:7: ( 'metamodel' ) - // InternalApplicationConfiguration.g:30:9: 'metamodel' + // InternalApplicationConfiguration.g:30:7: ( '::' ) + // InternalApplicationConfiguration.g:30:9: '::' { - match("metamodel"); + match("::"); } @@ -500,10 +501,10 @@ public final void mT__31() throws RecognitionException { try { int _type = T__31; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:31:7: ( 'folder' ) - // InternalApplicationConfiguration.g:31:9: 'folder' + // InternalApplicationConfiguration.g:31:7: ( 'metamodel' ) + // InternalApplicationConfiguration.g:31:9: 'metamodel' { - match("folder"); + match("metamodel"); } @@ -521,10 +522,10 @@ public final void mT__32() throws RecognitionException { try { int _type = T__32; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:32:7: ( 'models' ) - // InternalApplicationConfiguration.g:32:9: 'models' + // InternalApplicationConfiguration.g:32:7: ( 'folder' ) + // InternalApplicationConfiguration.g:32:9: 'folder' { - match("models"); + match("folder"); } @@ -542,10 +543,10 @@ public final void mT__33() throws RecognitionException { try { int _type = T__33; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:33:7: ( 'constraints' ) - // InternalApplicationConfiguration.g:33:9: 'constraints' + // InternalApplicationConfiguration.g:33:7: ( 'models' ) + // InternalApplicationConfiguration.g:33:9: 'models' { - match("constraints"); + match("models"); } @@ -563,10 +564,10 @@ public final void mT__34() throws RecognitionException { try { int _type = T__34; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:34:7: ( 'config' ) - // InternalApplicationConfiguration.g:34:9: 'config' + // InternalApplicationConfiguration.g:34:7: ( 'constraints' ) + // InternalApplicationConfiguration.g:34:9: 'constraints' { - match("config"); + match("constraints"); } @@ -584,10 +585,10 @@ public final void mT__35() throws RecognitionException { try { int _type = T__35; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:35:7: ( 'log-level' ) - // InternalApplicationConfiguration.g:35:9: 'log-level' + // InternalApplicationConfiguration.g:35:7: ( 'config' ) + // InternalApplicationConfiguration.g:35:9: 'config' { - match("log-level"); + match("config"); } @@ -605,10 +606,10 @@ public final void mT__36() throws RecognitionException { try { int _type = T__36; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:36:7: ( 'runtime' ) - // InternalApplicationConfiguration.g:36:9: 'runtime' + // InternalApplicationConfiguration.g:36:7: ( 'log-level' ) + // InternalApplicationConfiguration.g:36:9: 'log-level' { - match("runtime"); + match("log-level"); } @@ -626,10 +627,10 @@ public final void mT__37() throws RecognitionException { try { int _type = T__37; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:37:7: ( 'memory' ) - // InternalApplicationConfiguration.g:37:9: 'memory' + // InternalApplicationConfiguration.g:37:7: ( 'runtime' ) + // InternalApplicationConfiguration.g:37:9: 'runtime' { - match("memory"); + match("runtime"); } @@ -647,10 +648,11 @@ public final void mT__38() throws RecognitionException { try { int _type = T__38; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:38:7: ( '#' ) - // InternalApplicationConfiguration.g:38:9: '#' + // InternalApplicationConfiguration.g:38:7: ( 'memory' ) + // InternalApplicationConfiguration.g:38:9: 'memory' { - match('#'); + match("memory"); + } @@ -667,10 +669,10 @@ public final void mT__39() throws RecognitionException { try { int _type = T__39; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:39:7: ( '<' ) - // InternalApplicationConfiguration.g:39:9: '<' + // InternalApplicationConfiguration.g:39:7: ( '#' ) + // InternalApplicationConfiguration.g:39:9: '#' { - match('<'); + match('#'); } @@ -687,10 +689,10 @@ public final void mT__40() throws RecognitionException { try { int _type = T__40; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:40:7: ( '>' ) - // InternalApplicationConfiguration.g:40:9: '>' + // InternalApplicationConfiguration.g:40:7: ( '<' ) + // InternalApplicationConfiguration.g:40:9: '<' { - match('>'); + match('<'); } @@ -707,11 +709,10 @@ public final void mT__41() throws RecognitionException { try { int _type = T__41; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:41:7: ( 'node' ) - // InternalApplicationConfiguration.g:41:9: 'node' + // InternalApplicationConfiguration.g:41:7: ( '>' ) + // InternalApplicationConfiguration.g:41:9: '>' { - match("node"); - + match('>'); } @@ -728,10 +729,10 @@ public final void mT__42() throws RecognitionException { try { int _type = T__42; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:42:7: ( 'int' ) - // InternalApplicationConfiguration.g:42:9: 'int' + // InternalApplicationConfiguration.g:42:7: ( 'node' ) + // InternalApplicationConfiguration.g:42:9: 'node' { - match("int"); + match("node"); } @@ -749,10 +750,10 @@ public final void mT__43() throws RecognitionException { try { int _type = T__43; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:43:7: ( 'real' ) - // InternalApplicationConfiguration.g:43:9: 'real' + // InternalApplicationConfiguration.g:43:7: ( 'int' ) + // InternalApplicationConfiguration.g:43:9: 'int' { - match("real"); + match("int"); } @@ -770,10 +771,10 @@ public final void mT__44() throws RecognitionException { try { int _type = T__44; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:44:7: ( 'string' ) - // InternalApplicationConfiguration.g:44:9: 'string' + // InternalApplicationConfiguration.g:44:7: ( 'real' ) + // InternalApplicationConfiguration.g:44:9: 'real' { - match("string"); + match("real"); } @@ -791,10 +792,10 @@ public final void mT__45() throws RecognitionException { try { int _type = T__45; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:45:7: ( '..' ) - // InternalApplicationConfiguration.g:45:9: '..' + // InternalApplicationConfiguration.g:45:7: ( 'string' ) + // InternalApplicationConfiguration.g:45:9: 'string' { - match(".."); + match("string"); } @@ -812,10 +813,10 @@ public final void mT__46() throws RecognitionException { try { int _type = T__46; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:46:7: ( 'scope' ) - // InternalApplicationConfiguration.g:46:9: 'scope' + // InternalApplicationConfiguration.g:46:7: ( '..' ) + // InternalApplicationConfiguration.g:46:9: '..' { - match("scope"); + match(".."); } @@ -833,10 +834,10 @@ public final void mT__47() throws RecognitionException { try { int _type = T__47; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:47:7: ( 'generate' ) - // InternalApplicationConfiguration.g:47:9: 'generate' + // InternalApplicationConfiguration.g:47:7: ( 'scope' ) + // InternalApplicationConfiguration.g:47:9: 'scope' { - match("generate"); + match("scope"); } @@ -854,10 +855,10 @@ public final void mT__48() throws RecognitionException { try { int _type = T__48; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:48:7: ( 'partial-model' ) - // InternalApplicationConfiguration.g:48:9: 'partial-model' + // InternalApplicationConfiguration.g:48:7: ( 'generate' ) + // InternalApplicationConfiguration.g:48:9: 'generate' { - match("partial-model"); + match("generate"); } @@ -875,10 +876,10 @@ public final void mT__49() throws RecognitionException { try { int _type = T__49; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:49:7: ( 'solver' ) - // InternalApplicationConfiguration.g:49:9: 'solver' + // InternalApplicationConfiguration.g:49:7: ( 'partial-model' ) + // InternalApplicationConfiguration.g:49:9: 'partial-model' { - match("solver"); + match("partial-model"); } @@ -896,10 +897,10 @@ public final void mT__50() throws RecognitionException { try { int _type = T__50; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:50:7: ( 'debug' ) - // InternalApplicationConfiguration.g:50:9: 'debug' + // InternalApplicationConfiguration.g:50:7: ( 'solver' ) + // InternalApplicationConfiguration.g:50:9: 'solver' { - match("debug"); + match("solver"); } @@ -917,10 +918,10 @@ public final void mT__51() throws RecognitionException { try { int _type = T__51; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:51:7: ( 'log' ) - // InternalApplicationConfiguration.g:51:9: 'log' + // InternalApplicationConfiguration.g:51:7: ( 'debug' ) + // InternalApplicationConfiguration.g:51:9: 'debug' { - match("log"); + match("debug"); } @@ -938,10 +939,10 @@ public final void mT__52() throws RecognitionException { try { int _type = T__52; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:52:7: ( 'statistics' ) - // InternalApplicationConfiguration.g:52:9: 'statistics' + // InternalApplicationConfiguration.g:52:7: ( 'log' ) + // InternalApplicationConfiguration.g:52:9: 'log' { - match("statistics"); + match("log"); } @@ -959,10 +960,10 @@ public final void mT__53() throws RecognitionException { try { int _type = T__53; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:53:7: ( 'output' ) - // InternalApplicationConfiguration.g:53:9: 'output' + // InternalApplicationConfiguration.g:53:7: ( 'statistics' ) + // InternalApplicationConfiguration.g:53:9: 'statistics' { - match("output"); + match("statistics"); } @@ -980,10 +981,10 @@ public final void mT__54() throws RecognitionException { try { int _type = T__54; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:54:7: ( '+=' ) - // InternalApplicationConfiguration.g:54:9: '+=' + // InternalApplicationConfiguration.g:54:7: ( 'output' ) + // InternalApplicationConfiguration.g:54:9: 'output' { - match("+="); + match("output"); } @@ -1001,10 +1002,11 @@ public final void mT__55() throws RecognitionException { try { int _type = T__55; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:55:7: ( '*' ) - // InternalApplicationConfiguration.g:55:9: '*' + // InternalApplicationConfiguration.g:55:7: ( '+=' ) + // InternalApplicationConfiguration.g:55:9: '+=' { - match('*'); + match("+="); + } @@ -1021,11 +1023,10 @@ public final void mT__56() throws RecognitionException { try { int _type = T__56; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:56:7: ( 'number' ) - // InternalApplicationConfiguration.g:56:9: 'number' + // InternalApplicationConfiguration.g:56:7: ( '*' ) + // InternalApplicationConfiguration.g:56:9: '*' { - match("number"); - + match('*'); } @@ -1042,10 +1043,10 @@ public final void mT__57() throws RecognitionException { try { int _type = T__57; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:57:7: ( 'runs' ) - // InternalApplicationConfiguration.g:57:9: 'runs' + // InternalApplicationConfiguration.g:57:7: ( 'number' ) + // InternalApplicationConfiguration.g:57:9: 'number' { - match("runs"); + match("number"); } @@ -1058,15 +1059,36 @@ public final void mT__57() throws RecognitionException { } // $ANTLR end "T__57" + // $ANTLR start "T__58" + public final void mT__58() throws RecognitionException { + try { + int _type = T__58; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalApplicationConfiguration.g:58:7: ( 'runs' ) + // InternalApplicationConfiguration.g:58:9: 'runs' + { + match("runs"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__58" + // $ANTLR start "RULE_ID" public final void mRULE_ID() throws RecognitionException { try { int _type = RULE_ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10476:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) - // InternalApplicationConfiguration.g:10476:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalApplicationConfiguration.g:10482:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalApplicationConfiguration.g:10482:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* { - // InternalApplicationConfiguration.g:10476:11: ( '^' )? + // InternalApplicationConfiguration.g:10482:11: ( '^' )? int alt1=2; int LA1_0 = input.LA(1); @@ -1075,7 +1097,7 @@ public final void mRULE_ID() throws RecognitionException { } switch (alt1) { case 1 : - // InternalApplicationConfiguration.g:10476:11: '^' + // InternalApplicationConfiguration.g:10482:11: '^' { match('^'); @@ -1093,7 +1115,7 @@ public final void mRULE_ID() throws RecognitionException { recover(mse); throw mse;} - // InternalApplicationConfiguration.g:10476:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalApplicationConfiguration.g:10482:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* loop2: do { int alt2=2; @@ -1142,10 +1164,10 @@ public final void mRULE_INT() throws RecognitionException { try { int _type = RULE_INT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10478:10: ( ( '0' .. '9' )+ ) - // InternalApplicationConfiguration.g:10478:12: ( '0' .. '9' )+ + // InternalApplicationConfiguration.g:10484:10: ( ( '0' .. '9' )+ ) + // InternalApplicationConfiguration.g:10484:12: ( '0' .. '9' )+ { - // InternalApplicationConfiguration.g:10478:12: ( '0' .. '9' )+ + // InternalApplicationConfiguration.g:10484:12: ( '0' .. '9' )+ int cnt3=0; loop3: do { @@ -1159,7 +1181,7 @@ public final void mRULE_INT() throws RecognitionException { switch (alt3) { case 1 : - // InternalApplicationConfiguration.g:10478:13: '0' .. '9' + // InternalApplicationConfiguration.g:10484:13: '0' .. '9' { matchRange('0','9'); @@ -1191,10 +1213,10 @@ public final void mRULE_STRING() throws RecognitionException { try { int _type = RULE_STRING; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10480:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) - // InternalApplicationConfiguration.g:10480:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalApplicationConfiguration.g:10486:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalApplicationConfiguration.g:10486:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) { - // InternalApplicationConfiguration.g:10480:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalApplicationConfiguration.g:10486:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) int alt6=2; int LA6_0 = input.LA(1); @@ -1212,10 +1234,10 @@ else if ( (LA6_0=='\'') ) { } switch (alt6) { case 1 : - // InternalApplicationConfiguration.g:10480:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + // InternalApplicationConfiguration.g:10486:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' { match('\"'); - // InternalApplicationConfiguration.g:10480:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + // InternalApplicationConfiguration.g:10486:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* loop4: do { int alt4=3; @@ -1231,7 +1253,7 @@ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>= switch (alt4) { case 1 : - // InternalApplicationConfiguration.g:10480:21: '\\\\' . + // InternalApplicationConfiguration.g:10486:21: '\\\\' . { match('\\'); matchAny(); @@ -1239,7 +1261,7 @@ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>= } break; case 2 : - // InternalApplicationConfiguration.g:10480:28: ~ ( ( '\\\\' | '\"' ) ) + // InternalApplicationConfiguration.g:10486:28: ~ ( ( '\\\\' | '\"' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1264,10 +1286,10 @@ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>= } break; case 2 : - // InternalApplicationConfiguration.g:10480:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + // InternalApplicationConfiguration.g:10486:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' { match('\''); - // InternalApplicationConfiguration.g:10480:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + // InternalApplicationConfiguration.g:10486:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* loop5: do { int alt5=3; @@ -1283,7 +1305,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>= switch (alt5) { case 1 : - // InternalApplicationConfiguration.g:10480:54: '\\\\' . + // InternalApplicationConfiguration.g:10486:54: '\\\\' . { match('\\'); matchAny(); @@ -1291,7 +1313,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>= } break; case 2 : - // InternalApplicationConfiguration.g:10480:61: ~ ( ( '\\\\' | '\\'' ) ) + // InternalApplicationConfiguration.g:10486:61: ~ ( ( '\\\\' | '\\'' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1334,12 +1356,12 @@ public final void mRULE_ML_COMMENT() throws RecognitionException { try { int _type = RULE_ML_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10482:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) - // InternalApplicationConfiguration.g:10482:19: '/*' ( options {greedy=false; } : . )* '*/' + // InternalApplicationConfiguration.g:10488:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalApplicationConfiguration.g:10488:19: '/*' ( options {greedy=false; } : . )* '*/' { match("/*"); - // InternalApplicationConfiguration.g:10482:24: ( options {greedy=false; } : . )* + // InternalApplicationConfiguration.g:10488:24: ( options {greedy=false; } : . )* loop7: do { int alt7=2; @@ -1364,7 +1386,7 @@ else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) { switch (alt7) { case 1 : - // InternalApplicationConfiguration.g:10482:52: . + // InternalApplicationConfiguration.g:10488:52: . { matchAny(); @@ -1394,12 +1416,12 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { try { int _type = RULE_SL_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10484:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) - // InternalApplicationConfiguration.g:10484:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + // InternalApplicationConfiguration.g:10490:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalApplicationConfiguration.g:10490:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? { match("//"); - // InternalApplicationConfiguration.g:10484:24: (~ ( ( '\\n' | '\\r' ) ) )* + // InternalApplicationConfiguration.g:10490:24: (~ ( ( '\\n' | '\\r' ) ) )* loop8: do { int alt8=2; @@ -1412,7 +1434,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { switch (alt8) { case 1 : - // InternalApplicationConfiguration.g:10484:24: ~ ( ( '\\n' | '\\r' ) ) + // InternalApplicationConfiguration.g:10490:24: ~ ( ( '\\n' | '\\r' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1432,7 +1454,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { } } while (true); - // InternalApplicationConfiguration.g:10484:40: ( ( '\\r' )? '\\n' )? + // InternalApplicationConfiguration.g:10490:40: ( ( '\\r' )? '\\n' )? int alt10=2; int LA10_0 = input.LA(1); @@ -1441,9 +1463,9 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { } switch (alt10) { case 1 : - // InternalApplicationConfiguration.g:10484:41: ( '\\r' )? '\\n' + // InternalApplicationConfiguration.g:10490:41: ( '\\r' )? '\\n' { - // InternalApplicationConfiguration.g:10484:41: ( '\\r' )? + // InternalApplicationConfiguration.g:10490:41: ( '\\r' )? int alt9=2; int LA9_0 = input.LA(1); @@ -1452,7 +1474,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { } switch (alt9) { case 1 : - // InternalApplicationConfiguration.g:10484:41: '\\r' + // InternalApplicationConfiguration.g:10490:41: '\\r' { match('\r'); @@ -1484,10 +1506,10 @@ public final void mRULE_WS() throws RecognitionException { try { int _type = RULE_WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10486:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // InternalApplicationConfiguration.g:10486:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalApplicationConfiguration.g:10492:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalApplicationConfiguration.g:10492:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // InternalApplicationConfiguration.g:10486:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalApplicationConfiguration.g:10492:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt11=0; loop11: do { @@ -1541,8 +1563,8 @@ public final void mRULE_ANY_OTHER() throws RecognitionException { try { int _type = RULE_ANY_OTHER; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:10488:16: ( . ) - // InternalApplicationConfiguration.g:10488:18: . + // InternalApplicationConfiguration.g:10494:16: ( . ) + // InternalApplicationConfiguration.g:10494:18: . { matchAny(); @@ -1557,8 +1579,8 @@ public final void mRULE_ANY_OTHER() throws RecognitionException { // $ANTLR end "RULE_ANY_OTHER" public void mTokens() throws RecognitionException { - // InternalApplicationConfiguration.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) - int alt12=54; + // InternalApplicationConfiguration.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) + int alt12=55; alt12 = dfa12.predict(input); switch (alt12) { case 1 : @@ -1891,49 +1913,56 @@ public void mTokens() throws RecognitionException { } break; case 48 : - // InternalApplicationConfiguration.g:1:292: RULE_ID + // InternalApplicationConfiguration.g:1:292: T__58 { - mRULE_ID(); + mT__58(); } break; case 49 : - // InternalApplicationConfiguration.g:1:300: RULE_INT + // InternalApplicationConfiguration.g:1:298: RULE_ID { - mRULE_INT(); + mRULE_ID(); } break; case 50 : - // InternalApplicationConfiguration.g:1:309: RULE_STRING + // InternalApplicationConfiguration.g:1:306: RULE_INT { - mRULE_STRING(); + mRULE_INT(); } break; case 51 : - // InternalApplicationConfiguration.g:1:321: RULE_ML_COMMENT + // InternalApplicationConfiguration.g:1:315: RULE_STRING { - mRULE_ML_COMMENT(); + mRULE_STRING(); } break; case 52 : - // InternalApplicationConfiguration.g:1:337: RULE_SL_COMMENT + // InternalApplicationConfiguration.g:1:327: RULE_ML_COMMENT { - mRULE_SL_COMMENT(); + mRULE_ML_COMMENT(); } break; case 53 : - // InternalApplicationConfiguration.g:1:353: RULE_WS + // InternalApplicationConfiguration.g:1:343: RULE_SL_COMMENT { - mRULE_WS(); + mRULE_SL_COMMENT(); } break; case 54 : - // InternalApplicationConfiguration.g:1:361: RULE_ANY_OTHER + // InternalApplicationConfiguration.g:1:359: RULE_WS + { + mRULE_WS(); + + } + break; + case 55 : + // InternalApplicationConfiguration.g:1:367: RULE_ANY_OTHER { mRULE_ANY_OTHER(); @@ -1947,94 +1976,96 @@ public void mTokens() throws RecognitionException { protected DFA12 dfa12 = new DFA12(this); static final String DFA12_eotS = - "\1\uffff\5\50\1\60\1\uffff\3\50\4\uffff\1\50\1\45\4\50\3\uffff\4\50\1\45\1\uffff\1\45\2\uffff\3\45\2\uffff\2\50\1\uffff\6\50\3\uffff\5\50\4\uffff\1\50\1\uffff\6\50\3\uffff\6\50\7\uffff\13\50\1\175\11\50\1\u0089\11\50\1\u0094\1\50\1\u0096\1\50\1\u0098\1\u0099\5\50\1\uffff\12\50\2\uffff\1\50\1\u00aa\1\u00ab\7\50\1\uffff\1\50\1\uffff\1\50\2\uffff\20\50\2\uffff\2\50\1\u00c7\2\50\1\u00ca\1\50\1\u00cc\1\u00cd\1\u00ce\3\50\1\u00d2\2\50\1\u00d5\3\50\1\u00d9\1\u00da\1\50\1\u00dc\1\50\1\u00de\1\50\1\uffff\1\u00e0\1\50\1\uffff\1\u00e2\3\uffff\3\50\1\uffff\2\50\1\uffff\1\u00e8\2\50\2\uffff\1\50\1\uffff\1\u00ec\1\uffff\1\50\1\uffff\1\50\1\uffff\3\50\1\u00f2\1\50\2\uffff\2\50\1\uffff\1\50\1\u00f7\1\u00f8\2\50\1\uffff\1\u00fb\1\u00fc\2\50\2\uffff\2\50\2\uffff\1\50\1\u0102\1\u0103\1\50\1\u0105\2\uffff\1\u0106\2\uffff"; + "\1\uffff\6\51\1\62\1\uffff\3\51\4\uffff\1\51\1\46\4\51\3\uffff\4\51\1\46\1\uffff\1\46\2\uffff\3\46\2\uffff\2\51\1\uffff\7\51\3\uffff\5\51\4\uffff\1\51\1\uffff\6\51\3\uffff\6\51\7\uffff\14\51\1\u0081\11\51\1\u008d\11\51\1\u0098\1\51\1\u009a\1\51\1\u009c\1\u009d\6\51\1\uffff\12\51\2\uffff\1\51\1\u00af\1\u00b0\7\51\1\uffff\1\51\1\uffff\1\51\2\uffff\21\51\2\uffff\2\51\1\u00cd\2\51\1\u00d0\1\51\1\u00d2\1\u00d3\1\u00d4\4\51\1\u00d9\2\51\1\u00dc\3\51\1\u00e0\1\u00e1\1\51\1\u00e3\1\51\1\u00e5\1\51\1\uffff\1\u00e7\1\51\1\uffff\1\u00e9\3\uffff\4\51\1\uffff\2\51\1\uffff\1\u00f0\2\51\2\uffff\1\51\1\uffff\1\u00f4\1\uffff\1\51\1\uffff\1\51\1\uffff\4\51\1\u00fb\1\51\2\uffff\2\51\1\uffff\1\51\1\u0100\1\u0101\3\51\1\uffff\1\u0105\1\u0106\2\51\2\uffff\2\51\1\u010b\2\uffff\1\51\1\u010d\1\u010e\1\51\1\uffff\1\u0110\2\uffff\1\u0111\2\uffff"; static final String DFA12_eofS = - "\u0107\uffff"; + "\u0112\uffff"; static final String DFA12_minS = - "\1\0\1\157\1\151\1\115\1\154\1\151\1\56\1\uffff\1\155\1\160\1\151\4\uffff\1\141\1\72\1\145\2\157\1\145\3\uffff\1\143\2\145\1\165\1\75\1\uffff\1\101\2\uffff\2\0\1\52\2\uffff\1\144\1\155\1\uffff\3\154\1\124\1\154\1\141\3\uffff\1\160\1\164\1\141\1\143\1\141\4\uffff\1\143\1\uffff\1\155\1\144\1\156\1\147\1\156\1\141\3\uffff\1\141\1\157\1\154\1\156\1\142\1\164\7\uffff\1\145\1\155\1\145\1\142\1\154\1\145\1\144\1\123\1\157\1\164\1\157\1\60\1\143\1\154\1\164\1\153\1\164\1\141\1\157\1\145\1\146\1\55\1\163\1\154\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\60\1\141\1\60\1\145\2\60\1\145\1\157\1\171\2\162\1\uffff\1\153\1\165\1\162\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\2\60\1\156\1\151\2\145\1\162\1\147\1\165\1\uffff\1\154\1\uffff\1\162\2\uffff\1\162\1\154\1\123\1\141\1\164\1\141\1\144\1\141\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\2\uffff\1\147\1\163\1\60\1\162\1\141\1\60\1\164\3\60\1\166\1\157\1\123\1\60\1\147\1\151\1\60\1\145\1\154\1\144\2\60\1\141\1\60\1\145\1\60\1\164\1\uffff\1\60\1\164\1\uffff\1\60\3\uffff\1\145\1\154\1\157\1\uffff\1\145\1\156\1\uffff\1\60\1\55\1\145\2\uffff\1\151\1\uffff\1\60\1\uffff\1\151\1\uffff\1\145\1\uffff\1\162\1\166\1\154\1\60\1\147\2\uffff\1\154\1\156\1\uffff\1\143\2\60\1\145\1\166\1\uffff\2\60\1\164\1\163\2\uffff\1\162\1\145\2\uffff\1\163\2\60\1\162\1\60\2\uffff\1\60\2\uffff"; + "\1\0\1\157\1\151\1\115\1\154\1\151\1\120\1\56\1\uffff\1\155\1\160\1\151\4\uffff\1\141\1\72\1\145\2\157\1\145\3\uffff\1\143\2\145\1\165\1\75\1\uffff\1\101\2\uffff\2\0\1\52\2\uffff\1\144\1\155\1\uffff\3\154\1\124\1\154\1\141\1\124\3\uffff\1\160\1\164\1\141\1\143\1\141\4\uffff\1\143\1\uffff\1\155\1\144\1\156\1\147\1\156\1\141\3\uffff\1\141\1\157\1\154\1\156\1\142\1\164\7\uffff\1\145\1\155\1\145\1\142\1\154\1\145\1\144\1\123\1\157\1\164\1\120\1\157\1\60\1\143\1\154\1\164\1\153\1\164\1\141\1\157\1\145\1\146\1\55\1\163\1\154\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\60\1\141\1\60\1\145\2\60\1\145\1\157\1\171\1\162\1\123\1\162\1\uffff\1\153\1\165\1\162\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\2\60\1\156\1\151\2\145\1\162\1\147\1\165\1\uffff\1\154\1\uffff\1\162\2\uffff\1\162\1\154\1\123\1\141\1\157\1\164\1\141\1\144\1\141\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\2\uffff\1\147\1\163\1\60\1\162\1\141\1\60\1\164\3\60\1\166\1\157\1\123\1\154\1\60\1\147\1\151\1\60\1\145\1\154\1\144\2\60\1\141\1\60\1\145\1\60\1\164\1\uffff\1\60\1\164\1\uffff\1\60\3\uffff\1\145\1\154\1\157\1\166\1\uffff\1\145\1\156\1\uffff\1\60\1\55\1\145\2\uffff\1\151\1\uffff\1\60\1\uffff\1\151\1\uffff\1\145\1\uffff\1\162\1\166\1\154\1\145\1\60\1\147\2\uffff\1\154\1\156\1\uffff\1\143\2\60\1\145\1\166\1\162\1\uffff\2\60\1\164\1\163\2\uffff\1\162\1\145\1\60\2\uffff\1\163\2\60\1\162\1\uffff\1\60\2\uffff\1\60\2\uffff"; static final String DFA12_maxS = - "\1\uffff\2\165\1\115\1\154\1\151\1\56\1\uffff\1\156\1\170\1\151\4\uffff\1\141\1\72\3\157\1\165\3\uffff\1\164\2\145\1\165\1\75\1\uffff\1\172\2\uffff\2\uffff\1\57\2\uffff\1\162\1\155\1\uffff\3\154\1\124\1\154\1\141\3\uffff\1\160\1\164\1\141\1\143\1\141\4\uffff\1\162\1\uffff\1\164\1\144\1\156\1\147\1\156\1\141\3\uffff\1\162\1\157\1\154\1\156\1\142\1\164\7\uffff\1\145\1\155\1\145\1\142\1\154\1\145\1\144\1\123\1\157\1\164\1\157\1\172\1\143\1\154\1\164\1\153\1\164\1\141\1\157\1\145\1\163\1\172\1\164\1\154\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\172\1\141\1\172\1\145\2\172\1\145\1\157\1\171\2\162\1\uffff\1\153\1\165\1\162\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\2\172\1\156\1\151\2\145\1\162\1\147\1\165\1\uffff\1\154\1\uffff\1\162\2\uffff\1\162\1\154\1\123\1\141\1\164\1\141\1\144\1\141\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\2\uffff\1\147\1\163\1\172\1\162\1\141\1\172\1\164\3\172\1\166\1\157\1\123\1\172\1\147\1\151\1\172\1\145\1\154\1\144\2\172\1\141\1\172\1\145\1\172\1\164\1\uffff\1\172\1\164\1\uffff\1\172\3\uffff\1\145\1\154\1\157\1\uffff\1\145\1\156\1\uffff\1\172\1\55\1\145\2\uffff\1\151\1\uffff\1\172\1\uffff\1\151\1\uffff\1\145\1\uffff\1\162\1\166\1\154\1\172\1\147\2\uffff\1\154\1\156\1\uffff\1\143\2\172\1\145\1\166\1\uffff\2\172\1\164\1\163\2\uffff\1\162\1\145\2\uffff\1\163\2\172\1\162\1\172\2\uffff\1\172\2\uffff"; + "\1\uffff\2\165\1\115\1\154\1\151\1\120\1\56\1\uffff\1\156\1\170\1\151\4\uffff\1\141\1\72\3\157\1\165\3\uffff\1\164\2\145\1\165\1\75\1\uffff\1\172\2\uffff\2\uffff\1\57\2\uffff\1\162\1\155\1\uffff\3\154\1\124\1\154\1\141\1\124\3\uffff\1\160\1\164\1\141\1\143\1\141\4\uffff\1\162\1\uffff\1\164\1\144\1\156\1\147\1\156\1\141\3\uffff\1\162\1\157\1\154\1\156\1\142\1\164\7\uffff\1\145\1\155\1\145\1\142\1\154\1\145\1\144\1\123\1\157\1\164\1\120\1\157\1\172\1\143\1\154\1\164\1\153\1\164\1\141\1\157\1\145\1\163\1\172\1\164\1\154\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\172\1\141\1\172\1\145\2\172\1\145\1\157\1\171\1\162\1\123\1\162\1\uffff\1\153\1\165\1\162\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\2\172\1\156\1\151\2\145\1\162\1\147\1\165\1\uffff\1\154\1\uffff\1\162\2\uffff\1\162\1\154\1\123\1\141\1\157\1\164\1\141\1\144\1\141\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\2\uffff\1\147\1\163\1\172\1\162\1\141\1\172\1\164\3\172\1\166\1\157\1\123\1\154\1\172\1\147\1\151\1\172\1\145\1\154\1\144\2\172\1\141\1\172\1\145\1\172\1\164\1\uffff\1\172\1\164\1\uffff\1\172\3\uffff\1\145\1\154\1\157\1\166\1\uffff\1\145\1\156\1\uffff\1\172\1\55\1\145\2\uffff\1\151\1\uffff\1\172\1\uffff\1\151\1\uffff\1\145\1\uffff\1\162\1\166\1\154\1\145\1\172\1\147\2\uffff\1\154\1\156\1\uffff\1\143\2\172\1\145\1\166\1\162\1\uffff\2\172\1\164\1\163\2\uffff\1\162\1\145\1\172\2\uffff\1\163\2\172\1\162\1\uffff\1\172\2\uffff\1\172\2\uffff"; static final String DFA12_acceptS = - "\7\uffff\1\10\3\uffff\1\15\1\16\1\17\1\20\6\uffff\1\34\1\35\1\36\5\uffff\1\55\1\uffff\1\60\1\61\3\uffff\1\65\1\66\2\uffff\1\60\6\uffff\1\43\1\7\1\10\5\uffff\1\15\1\16\1\17\1\20\1\uffff\1\23\6\uffff\1\34\1\35\1\36\6\uffff\1\54\1\55\1\61\1\62\1\63\1\64\1\65\52\uffff\1\40\12\uffff\1\31\1\51\12\uffff\1\1\1\uffff\1\37\1\uffff\1\3\1\14\20\uffff\1\57\1\41\33\uffff\1\44\2\uffff\1\50\1\uffff\1\2\1\56\1\25\3\uffff\1\11\2\uffff\1\13\3\uffff\1\33\1\26\1\uffff\1\30\1\uffff\1\42\1\uffff\1\47\1\uffff\1\53\5\uffff\1\21\1\46\2\uffff\1\32\5\uffff\1\12\4\uffff\1\45\1\4\2\uffff\1\22\1\24\5\uffff\1\52\1\5\1\uffff\1\27\1\6"; + "\10\uffff\1\11\3\uffff\1\16\1\17\1\20\1\21\6\uffff\1\35\1\36\1\37\5\uffff\1\56\1\uffff\1\61\1\62\3\uffff\1\66\1\67\2\uffff\1\61\7\uffff\1\44\1\10\1\11\5\uffff\1\16\1\17\1\20\1\21\1\uffff\1\24\6\uffff\1\35\1\36\1\37\6\uffff\1\55\1\56\1\62\1\63\1\64\1\65\1\66\54\uffff\1\41\12\uffff\1\32\1\52\12\uffff\1\1\1\uffff\1\40\1\uffff\1\3\1\15\21\uffff\1\60\1\42\34\uffff\1\45\2\uffff\1\51\1\uffff\1\2\1\57\1\26\4\uffff\1\12\2\uffff\1\14\3\uffff\1\34\1\27\1\uffff\1\31\1\uffff\1\43\1\uffff\1\50\1\uffff\1\54\6\uffff\1\22\1\47\2\uffff\1\33\6\uffff\1\13\4\uffff\1\46\1\4\3\uffff\1\23\1\25\4\uffff\1\7\1\uffff\1\53\1\5\1\uffff\1\30\1\6"; static final String DFA12_specialS = - "\1\2\40\uffff\1\1\1\0\u00e4\uffff}>"; + "\1\0\41\uffff\1\1\1\2\u00ee\uffff}>"; static final String[] DFA12_transitionS = { - "\11\45\2\44\2\45\1\44\22\45\1\44\1\45\1\41\1\25\3\45\1\42\2\45\1\35\1\34\1\16\1\7\1\6\1\43\12\40\1\20\1\45\1\26\1\13\1\27\2\45\1\4\21\37\1\3\2\37\1\5\4\37\3\45\1\36\1\37\1\45\2\37\1\22\1\32\1\11\1\2\1\31\1\37\1\10\2\37\1\23\1\21\1\1\1\33\1\17\1\37\1\24\1\30\2\37\1\12\4\37\1\14\1\45\1\15\uff82\45", - "\1\46\5\uffff\1\47", - "\1\52\5\uffff\1\53\5\uffff\1\51", - "\1\54", + "\11\46\2\45\2\46\1\45\22\46\1\45\1\46\1\42\1\26\3\46\1\43\2\46\1\36\1\35\1\17\1\10\1\7\1\44\12\41\1\21\1\46\1\27\1\14\1\30\2\46\1\4\21\40\1\3\1\6\1\40\1\5\4\40\3\46\1\37\1\40\1\46\2\40\1\23\1\33\1\12\1\2\1\32\1\40\1\11\2\40\1\24\1\22\1\1\1\34\1\20\1\40\1\25\1\31\2\40\1\13\4\40\1\15\1\46\1\16\uff82\46", + "\1\47\5\uffff\1\50", + "\1\53\5\uffff\1\54\5\uffff\1\52", "\1\55", "\1\56", "\1\57", + "\1\60", + "\1\61", "", - "\1\62\1\63", - "\1\64\7\uffff\1\65", - "\1\66", + "\1\64\1\65", + "\1\66\7\uffff\1\67", + "\1\70", "", "", "", "", - "\1\73", - "\1\74", - "\1\75\11\uffff\1\76", - "\1\77", - "\1\100", - "\1\102\17\uffff\1\101", + "\1\75", + "\1\76", + "\1\77\11\uffff\1\100", + "\1\101", + "\1\102", + "\1\104\17\uffff\1\103", "", "", "", - "\1\107\13\uffff\1\110\4\uffff\1\106", - "\1\111", - "\1\112", + "\1\111\13\uffff\1\112\4\uffff\1\110", "\1\113", "\1\114", + "\1\115", + "\1\116", "", - "\32\50\4\uffff\1\50\1\uffff\32\50", - "", + "\32\51\4\uffff\1\51\1\uffff\32\51", "", - "\0\117", - "\0\117", - "\1\120\4\uffff\1\121", "", + "\0\121", + "\0\121", + "\1\122\4\uffff\1\123", "", - "\1\125\11\uffff\1\123\3\uffff\1\124", - "\1\126", "", - "\1\127", + "\1\127\11\uffff\1\125\3\uffff\1\126", "\1\130", + "", "\1\131", "\1\132", "\1\133", "\1\134", - "", - "", - "", "\1\135", "\1\136", "\1\137", + "", + "", + "", "\1\140", "\1\141", + "\1\142", + "\1\143", + "\1\144", "", "", "", "", - "\1\142\16\uffff\1\143", + "\1\145\16\uffff\1\146", "", - "\1\145\6\uffff\1\144", - "\1\146", - "\1\147", - "\1\150", + "\1\150\6\uffff\1\147", "\1\151", "\1\152", + "\1\153", + "\1\154", + "\1\155", "", "", "", - "\1\154\20\uffff\1\153", - "\1\155", - "\1\156", - "\1\157", + "\1\157\20\uffff\1\156", "\1\160", "\1\161", + "\1\162", + "\1\163", + "\1\164", "", "", "", @@ -2042,9 +2073,6 @@ public void mTokens() throws RecognitionException { "", "", "", - "\1\162", - "\1\163", - "\1\164", "\1\165", "\1\166", "\1\167", @@ -2053,71 +2081,71 @@ public void mTokens() throws RecognitionException { "\1\172", "\1\173", "\1\174", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\175", "\1\176", "\1\177", "\1\u0080", - "\1\u0081", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u0082", "\1\u0083", "\1\u0084", "\1\u0085", - "\1\u0087\14\uffff\1\u0086", - "\1\u0088\2\uffff\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\1\u008b\1\u008a", - "\1\u008c", - "\1\u008d", - "\1\u008e", - "\1\u008f", + "\1\u0086", + "\1\u0087", + "\1\u0088", + "\1\u0089", + "\1\u008b\14\uffff\1\u008a", + "\1\u008c\2\uffff\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u008f\1\u008e", "\1\u0090", "\1\u0091", "\1\u0092", "\1\u0093", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u0094", "\1\u0095", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u0096", "\1\u0097", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\1\u009a", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u0099", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u009b", - "\1\u009c", - "\1\u009d", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u009e", - "", "\1\u009f", "\1\u00a0", "\1\u00a1", "\1\u00a2", "\1\u00a3", + "", "\1\u00a4", "\1\u00a5", "\1\u00a6", "\1\u00a7", "\1\u00a8", - "", - "", "\1\u00a9", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u00aa", + "\1\u00ab", "\1\u00ac", "\1\u00ad", + "", + "", "\1\u00ae", - "\1\u00af", - "\1\u00b0", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u00b1", "\1\u00b2", - "", "\1\u00b3", - "", "\1\u00b4", - "", - "", "\1\u00b5", "\1\u00b6", "\1\u00b7", + "", "\1\u00b8", + "", "\1\u00b9", + "", + "", "\1\u00ba", "\1\u00bb", "\1\u00bc", @@ -2129,97 +2157,109 @@ public void mTokens() throws RecognitionException { "\1\u00c2", "\1\u00c3", "\1\u00c4", - "", - "", "\1\u00c5", "\1\u00c6", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u00c7", "\1\u00c8", "\1\u00c9", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u00ca", + "", + "", "\1\u00cb", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u00cc", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u00ce", "\1\u00cf", - "\1\u00d0", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u00d1", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\1\u00d3", - "\1\u00d4", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u00d5", "\1\u00d6", "\1\u00d7", "\1\u00d8", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u00da", "\1\u00db", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u00dd", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u00de", "\1\u00df", - "", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\1\u00e1", - "", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "", - "", - "", - "\1\u00e3", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u00e2", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u00e4", - "\1\u00e5", - "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u00e6", - "\1\u00e7", "", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\1\u00e9", - "\1\u00ea", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u00e8", "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "", - "\1\u00eb", "", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", "", + "\1\u00ea", + "\1\u00eb", + "\1\u00ec", "\1\u00ed", "", "\1\u00ee", - "", "\1\u00ef", - "\1\u00f0", + "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "\1\u00f1", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "\1\u00f2", + "", + "", "\1\u00f3", "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "", - "\1\u00f4", "\1\u00f5", "", "\1\u00f6", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "", + "\1\u00f7", + "\1\u00f8", "\1\u00f9", "\1\u00fa", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u00fc", + "", "", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", "\1\u00fd", "\1\u00fe", "", - "", "\1\u00ff", - "\1\u0100", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u0102", + "\1\u0103", + "\1\u0104", "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u0107", + "\1\u0108", "", - "\1\u0101", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", - "\1\u0104", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", "", + "\1\u0109", + "\1\u010a", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "", + "", + "\1\u010c", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", + "\1\u010f", + "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "", - "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50", + "", + "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51", "", "" }; @@ -2254,33 +2294,13 @@ public DFA12(BaseRecognizer recognizer) { this.transition = DFA12_transition; } public String getDescription() { - return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; + return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { IntStream input = _input; int _s = s; switch ( s ) { case 0 : - int LA12_34 = input.LA(1); - - s = -1; - if ( ((LA12_34>='\u0000' && LA12_34<='\uFFFF')) ) {s = 79;} - - else s = 37; - - if ( s>=0 ) return s; - break; - case 1 : - int LA12_33 = input.LA(1); - - s = -1; - if ( ((LA12_33>='\u0000' && LA12_33<='\uFFFF')) ) {s = 79;} - - else s = 37; - - if ( s>=0 ) return s; - break; - case 2 : int LA12_0 = input.LA(1); s = -1; @@ -2294,69 +2314,91 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc else if ( (LA12_0=='V') ) {s = 5;} - else if ( (LA12_0=='.') ) {s = 6;} + else if ( (LA12_0=='T') ) {s = 6;} + + else if ( (LA12_0=='.') ) {s = 7;} + + else if ( (LA12_0=='-') ) {s = 8;} + + else if ( (LA12_0=='i') ) {s = 9;} - else if ( (LA12_0=='-') ) {s = 7;} + else if ( (LA12_0=='e') ) {s = 10;} - else if ( (LA12_0=='i') ) {s = 8;} + else if ( (LA12_0=='v') ) {s = 11;} - else if ( (LA12_0=='e') ) {s = 9;} + else if ( (LA12_0=='=') ) {s = 12;} - else if ( (LA12_0=='v') ) {s = 10;} + else if ( (LA12_0=='{') ) {s = 13;} - else if ( (LA12_0=='=') ) {s = 11;} + else if ( (LA12_0=='}') ) {s = 14;} - else if ( (LA12_0=='{') ) {s = 12;} + else if ( (LA12_0==',') ) {s = 15;} - else if ( (LA12_0=='}') ) {s = 13;} + else if ( (LA12_0=='p') ) {s = 16;} - else if ( (LA12_0==',') ) {s = 14;} + else if ( (LA12_0==':') ) {s = 17;} - else if ( (LA12_0=='p') ) {s = 15;} + else if ( (LA12_0=='m') ) {s = 18;} - else if ( (LA12_0==':') ) {s = 16;} + else if ( (LA12_0=='c') ) {s = 19;} - else if ( (LA12_0=='m') ) {s = 17;} + else if ( (LA12_0=='l') ) {s = 20;} - else if ( (LA12_0=='c') ) {s = 18;} + else if ( (LA12_0=='r') ) {s = 21;} - else if ( (LA12_0=='l') ) {s = 19;} + else if ( (LA12_0=='#') ) {s = 22;} - else if ( (LA12_0=='r') ) {s = 20;} + else if ( (LA12_0=='<') ) {s = 23;} - else if ( (LA12_0=='#') ) {s = 21;} + else if ( (LA12_0=='>') ) {s = 24;} - else if ( (LA12_0=='<') ) {s = 22;} + else if ( (LA12_0=='s') ) {s = 25;} - else if ( (LA12_0=='>') ) {s = 23;} + else if ( (LA12_0=='g') ) {s = 26;} - else if ( (LA12_0=='s') ) {s = 24;} + else if ( (LA12_0=='d') ) {s = 27;} - else if ( (LA12_0=='g') ) {s = 25;} + else if ( (LA12_0=='o') ) {s = 28;} - else if ( (LA12_0=='d') ) {s = 26;} + else if ( (LA12_0=='+') ) {s = 29;} - else if ( (LA12_0=='o') ) {s = 27;} + else if ( (LA12_0=='*') ) {s = 30;} - else if ( (LA12_0=='+') ) {s = 28;} + else if ( (LA12_0=='^') ) {s = 31;} - else if ( (LA12_0=='*') ) {s = 29;} + else if ( ((LA12_0>='B' && LA12_0<='R')||LA12_0=='U'||(LA12_0>='W' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='b')||LA12_0=='h'||(LA12_0>='j' && LA12_0<='k')||LA12_0=='q'||(LA12_0>='t' && LA12_0<='u')||(LA12_0>='w' && LA12_0<='z')) ) {s = 32;} - else if ( (LA12_0=='^') ) {s = 30;} + else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 33;} - else if ( ((LA12_0>='B' && LA12_0<='R')||(LA12_0>='T' && LA12_0<='U')||(LA12_0>='W' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='b')||LA12_0=='h'||(LA12_0>='j' && LA12_0<='k')||LA12_0=='q'||(LA12_0>='t' && LA12_0<='u')||(LA12_0>='w' && LA12_0<='z')) ) {s = 31;} + else if ( (LA12_0=='\"') ) {s = 34;} - else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 32;} + else if ( (LA12_0=='\'') ) {s = 35;} - else if ( (LA12_0=='\"') ) {s = 33;} + else if ( (LA12_0=='/') ) {s = 36;} - else if ( (LA12_0=='\'') ) {s = 34;} + else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 37;} - else if ( (LA12_0=='/') ) {s = 35;} + else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='$' && LA12_0<='&')||(LA12_0>='(' && LA12_0<=')')||LA12_0==';'||(LA12_0>='?' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 38;} - else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 36;} + if ( s>=0 ) return s; + break; + case 1 : + int LA12_34 = input.LA(1); + + s = -1; + if ( ((LA12_34>='\u0000' && LA12_34<='\uFFFF')) ) {s = 81;} + + else s = 38; + + if ( s>=0 ) return s; + break; + case 2 : + int LA12_35 = input.LA(1); + + s = -1; + if ( ((LA12_35>='\u0000' && LA12_35<='\uFFFF')) ) {s = 81;} - else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='$' && LA12_0<='&')||(LA12_0>='(' && LA12_0<=')')||LA12_0==';'||(LA12_0>='?' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 37;} + else s = 38; if ( s>=0 ) return s; break; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationParser.java b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationParser.java index 92d991f10..f78edaf1e 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationParser.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/src-gen/hu/bme/mit/inf/dslreasoner/application/ide/contentassist/antlr/internal/InternalApplicationConfigurationParser.java @@ -22,7 +22,7 @@ @SuppressWarnings("all") public class InternalApplicationConfigurationParser extends AbstractInternalContentAssistParser { public static final String[] tokenNames = new String[] { - "", "", "", "", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'none'", "'normal'", "'full'", "'SMTSolver'", "'AlloySolver'", "'ViatraSolver'", "'.'", "'-'", "'import'", "'epackage'", "'viatra'", "'file'", "'='", "'{'", "'}'", "','", "'package'", "'excluding'", "'::'", "'metamodel'", "'folder'", "'models'", "'constraints'", "'config'", "'log-level'", "'runtime'", "'memory'", "'#'", "'<'", "'>'", "'node'", "'int'", "'real'", "'string'", "'..'", "'scope'", "'generate'", "'partial-model'", "'solver'", "'debug'", "'log'", "'statistics'", "'output'", "'+='", "'*'", "'number'", "'runs'" + "", "", "", "", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'none'", "'normal'", "'full'", "'SMTSolver'", "'AlloySolver'", "'ViatraSolver'", "'TPTPSolver'", "'.'", "'-'", "'import'", "'epackage'", "'viatra'", "'file'", "'='", "'{'", "'}'", "','", "'package'", "'excluding'", "'::'", "'metamodel'", "'folder'", "'models'", "'constraints'", "'config'", "'log-level'", "'runtime'", "'memory'", "'#'", "'<'", "'>'", "'node'", "'int'", "'real'", "'string'", "'..'", "'scope'", "'generate'", "'partial-model'", "'solver'", "'debug'", "'log'", "'statistics'", "'output'", "'+='", "'*'", "'number'", "'runs'" }; public static final int T__50=50; public static final int T__19=19; @@ -37,6 +37,7 @@ public class InternalApplicationConfigurationParser extends AbstractInternalCont public static final int T__13=13; public static final int T__57=57; public static final int T__14=14; + public static final int T__58=58; public static final int T__51=51; public static final int T__52=52; public static final int T__53=53; @@ -5219,10 +5220,10 @@ public final void rule__Command__Alternatives() throws RecognitionException { int alt1=2; int LA1_0 = input.LA(1); - if ( (LA1_0==22||LA1_0==30||(LA1_0>=32 && LA1_0<=34)||LA1_0==46) ) { + if ( (LA1_0==23||LA1_0==31||(LA1_0>=33 && LA1_0<=35)||LA1_0==47) ) { alt1=1; } - else if ( (LA1_0==47) ) { + else if ( (LA1_0==48) ) { alt1=2; } else { @@ -5298,13 +5299,13 @@ public final void rule__Import__Alternatives() throws RecognitionException { int alt2=2; int LA2_0 = input.LA(1); - if ( (LA2_0==19) ) { + if ( (LA2_0==20) ) { int LA2_1 = input.LA(2); - if ( (LA2_1==20) ) { + if ( (LA2_1==21) ) { alt2=1; } - else if ( (LA2_1==21) ) { + else if ( (LA2_1==22) ) { alt2=2; } else { @@ -5386,32 +5387,32 @@ public final void rule__Declaration__Alternatives() throws RecognitionException // InternalApplicationConfiguration.g:1755:1: ( ( ruleFileDeclaration ) | ( ruleMetamodelDeclaration ) | ( rulePartialModelDeclaration ) | ( ruleGraphPatternDeclaration ) | ( ruleConfigDeclaration ) | ( ruleScopeDeclaration ) ) int alt3=6; switch ( input.LA(1) ) { - case 22: + case 23: { alt3=1; } break; - case 30: + case 31: { alt3=2; } break; - case 32: + case 33: { alt3=3; } break; - case 33: + case 34: { alt3=4; } break; - case 34: + case 35: { alt3=5; } break; - case 46: + case 47: { alt3=6; } @@ -5648,7 +5649,7 @@ public final void rule__MetamodelEntry__Alternatives() throws RecognitionExcepti if ( (LA5_0==RULE_ID) ) { alt5=1; } - else if ( (LA5_0==27) ) { + else if ( (LA5_0==28) ) { alt5=2; } else { @@ -5727,7 +5728,7 @@ public final void rule__Metamodel__Alternatives() throws RecognitionException { if ( (LA6_0==RULE_ID) ) { alt6=1; } - else if ( (LA6_0==24) ) { + else if ( (LA6_0==25) ) { alt6=2; } else { @@ -5806,7 +5807,7 @@ public final void rule__PartialModelEntry__Alternatives() throws RecognitionExce if ( (LA7_0==RULE_ID||LA7_0==RULE_STRING) ) { alt7=1; } - else if ( (LA7_0==31) ) { + else if ( (LA7_0==32) ) { alt7=2; } else { @@ -5882,7 +5883,7 @@ public final void rule__PartialModel__Alternatives() throws RecognitionException int alt8=2; int LA8_0 = input.LA(1); - if ( (LA8_0==24) ) { + if ( (LA8_0==25) ) { alt8=1; } else if ( (LA8_0==RULE_ID) ) { @@ -5964,7 +5965,7 @@ public final void rule__PatternEntry__Alternatives() throws RecognitionException if ( (LA9_0==RULE_ID) ) { alt9=1; } - else if ( (LA9_0==27) ) { + else if ( (LA9_0==28) ) { alt9=2; } else { @@ -6043,7 +6044,7 @@ public final void rule__GraphPattern__Alternatives() throws RecognitionException if ( (LA10_0==RULE_ID) ) { alt10=1; } - else if ( (LA10_0==24) ) { + else if ( (LA10_0==25) ) { alt10=2; } else { @@ -6118,17 +6119,17 @@ public final void rule__ConfigEntry__Alternatives() throws RecognitionException // InternalApplicationConfiguration.g:1947:1: ( ( ruleDocumentationEntry ) | ( ruleRuntimeEntry ) | ( ruleMemoryEntry ) | ( ruleCustomEntry ) ) int alt11=4; switch ( input.LA(1) ) { - case 35: + case 36: { alt11=1; } break; - case 36: + case 37: { alt11=2; } break; - case 37: + case 38: { alt11=3; } @@ -6250,7 +6251,7 @@ public final void rule__Config__Alternatives() throws RecognitionException { int alt12=2; int LA12_0 = input.LA(1); - if ( (LA12_0==24) ) { + if ( (LA12_0==25) ) { alt12=1; } else if ( (LA12_0==RULE_ID) ) { @@ -6329,31 +6330,31 @@ public final void rule__TypeScope__Alternatives() throws RecognitionException { int alt13=5; int LA13_0 = input.LA(1); - if ( (LA13_0==38) ) { + if ( (LA13_0==39) ) { switch ( input.LA(2) ) { - case 42: + case 45: { - alt13=3; + alt13=5; } break; - case 43: + case 42: { - alt13=4; + alt13=2; } break; - case 39: + case 43: { - alt13=1; + alt13=3; } break; case 44: { - alt13=5; + alt13=4; } break; - case 41: + case 40: { - alt13=2; + alt13=1; } break; default: @@ -6494,10 +6495,10 @@ public final void rule__ClassTypeScope__Alternatives_2() throws RecognitionExcep int alt14=2; int LA14_0 = input.LA(1); - if ( (LA14_0==54) ) { + if ( (LA14_0==55) ) { alt14=1; } - else if ( (LA14_0==23) ) { + else if ( (LA14_0==24) ) { alt14=2; } else { @@ -6588,12 +6589,12 @@ public final void rule__ClassTypeScope__Alternatives_3() throws RecognitionExcep if ( (LA15_0==RULE_INT) ) { int LA15_1 = input.LA(2); - if ( (LA15_1==EOF||(LA15_1>=25 && LA15_1<=26)) ) { - alt15=1; - } - else if ( (LA15_1==45) ) { + if ( (LA15_1==46) ) { alt15=2; } + else if ( (LA15_1==EOF||(LA15_1>=26 && LA15_1<=27)) ) { + alt15=1; + } else { NoViableAltException nvae = new NoViableAltException("", 15, 1, input); @@ -6601,7 +6602,7 @@ else if ( (LA15_1==45) ) { throw nvae; } } - else if ( (LA15_0==55) ) { + else if ( (LA15_0==56) ) { alt15=1; } else { @@ -6689,10 +6690,10 @@ public final void rule__ObjectTypeScope__Alternatives_2() throws RecognitionExce int alt16=2; int LA16_0 = input.LA(1); - if ( (LA16_0==54) ) { + if ( (LA16_0==55) ) { alt16=1; } - else if ( (LA16_0==23) ) { + else if ( (LA16_0==24) ) { alt16=2; } else { @@ -6783,10 +6784,10 @@ public final void rule__ObjectTypeScope__Alternatives_3() throws RecognitionExce if ( (LA17_0==RULE_INT) ) { int LA17_1 = input.LA(2); - if ( (LA17_1==EOF||(LA17_1>=25 && LA17_1<=26)) ) { + if ( (LA17_1==EOF||(LA17_1>=26 && LA17_1<=27)) ) { alt17=1; } - else if ( (LA17_1==45) ) { + else if ( (LA17_1==46) ) { alt17=2; } else { @@ -6796,7 +6797,7 @@ else if ( (LA17_1==45) ) { throw nvae; } } - else if ( (LA17_0==55) ) { + else if ( (LA17_0==56) ) { alt17=1; } else { @@ -6884,10 +6885,10 @@ public final void rule__IntegerTypeScope__Alternatives_2() throws RecognitionExc int alt18=2; int LA18_0 = input.LA(1); - if ( (LA18_0==54) ) { + if ( (LA18_0==55) ) { alt18=1; } - else if ( (LA18_0==23) ) { + else if ( (LA18_0==24) ) { alt18=2; } else { @@ -6978,12 +6979,12 @@ public final void rule__IntegerTypeScope__Alternatives_3() throws RecognitionExc { int LA19_1 = input.LA(2); - if ( (LA19_1==45) ) { - alt19=2; - } - else if ( (LA19_1==EOF||(LA19_1>=25 && LA19_1<=26)) ) { + if ( (LA19_1==EOF||(LA19_1>=26 && LA19_1<=27)) ) { alt19=1; } + else if ( (LA19_1==46) ) { + alt19=2; + } else { NoViableAltException nvae = new NoViableAltException("", 19, 1, input); @@ -6992,12 +6993,12 @@ else if ( (LA19_1==EOF||(LA19_1>=25 && LA19_1<=26)) ) { } } break; - case 55: + case 56: { alt19=1; } break; - case 24: + case 25: { alt19=3; } @@ -7113,10 +7114,10 @@ public final void rule__RealTypeScope__Alternatives_2() throws RecognitionExcept int alt20=2; int LA20_0 = input.LA(1); - if ( (LA20_0==54) ) { + if ( (LA20_0==55) ) { alt20=1; } - else if ( (LA20_0==23) ) { + else if ( (LA20_0==24) ) { alt20=2; } else { @@ -7207,12 +7208,12 @@ public final void rule__RealTypeScope__Alternatives_3() throws RecognitionExcept { int LA21_1 = input.LA(2); - if ( (LA21_1==EOF||(LA21_1>=25 && LA21_1<=26)) ) { - alt21=1; - } - else if ( (LA21_1==45) ) { + if ( (LA21_1==46) ) { alt21=2; } + else if ( (LA21_1==EOF||(LA21_1>=26 && LA21_1<=27)) ) { + alt21=1; + } else { NoViableAltException nvae = new NoViableAltException("", 21, 1, input); @@ -7221,12 +7222,12 @@ else if ( (LA21_1==45) ) { } } break; - case 55: + case 56: { alt21=1; } break; - case 24: + case 25: { alt21=3; } @@ -7342,10 +7343,10 @@ public final void rule__StringTypeScope__Alternatives_2() throws RecognitionExce int alt22=2; int LA22_0 = input.LA(1); - if ( (LA22_0==54) ) { + if ( (LA22_0==55) ) { alt22=1; } - else if ( (LA22_0==23) ) { + else if ( (LA22_0==24) ) { alt22=2; } else { @@ -7436,12 +7437,12 @@ public final void rule__StringTypeScope__Alternatives_3() throws RecognitionExce { int LA23_1 = input.LA(2); - if ( (LA23_1==EOF||(LA23_1>=25 && LA23_1<=26)) ) { - alt23=1; - } - else if ( (LA23_1==45) ) { + if ( (LA23_1==46) ) { alt23=2; } + else if ( (LA23_1==EOF||(LA23_1>=26 && LA23_1<=27)) ) { + alt23=1; + } else { NoViableAltException nvae = new NoViableAltException("", 23, 1, input); @@ -7450,12 +7451,12 @@ else if ( (LA23_1==45) ) { } } break; - case 55: + case 56: { alt23=1; } break; - case 24: + case 25: { alt23=3; } @@ -7574,7 +7575,7 @@ public final void rule__ExactNumber__Alternatives() throws RecognitionException if ( (LA24_0==RULE_INT) ) { alt24=1; } - else if ( (LA24_0==55) ) { + else if ( (LA24_0==56) ) { alt24=2; } else { @@ -7665,7 +7666,7 @@ public final void rule__IntervallNumber__Alternatives_2() throws RecognitionExce if ( (LA25_0==RULE_INT) ) { alt25=1; } - else if ( (LA25_0==55) ) { + else if ( (LA25_0==56) ) { alt25=2; } else { @@ -7753,7 +7754,7 @@ public final void rule__Scope__Alternatives() throws RecognitionException { int alt26=2; int LA26_0 = input.LA(1); - if ( (LA26_0==24) ) { + if ( (LA26_0==25) ) { alt26=1; } else if ( (LA26_0==RULE_ID) ) { @@ -7935,14 +7936,14 @@ public final void rule__DocumentLevelSpecification__Alternatives() throws Recogn // $ANTLR start "rule__Solver__Alternatives" - // InternalApplicationConfiguration.g:2354:1: rule__Solver__Alternatives : ( ( ( 'SMTSolver' ) ) | ( ( 'AlloySolver' ) ) | ( ( 'ViatraSolver' ) ) ); + // InternalApplicationConfiguration.g:2354:1: rule__Solver__Alternatives : ( ( ( 'SMTSolver' ) ) | ( ( 'AlloySolver' ) ) | ( ( 'ViatraSolver' ) ) | ( ( 'TPTPSolver' ) ) ); public final void rule__Solver__Alternatives() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2358:1: ( ( ( 'SMTSolver' ) ) | ( ( 'AlloySolver' ) ) | ( ( 'ViatraSolver' ) ) ) - int alt28=3; + // InternalApplicationConfiguration.g:2358:1: ( ( ( 'SMTSolver' ) ) | ( ( 'AlloySolver' ) ) | ( ( 'ViatraSolver' ) ) | ( ( 'TPTPSolver' ) ) ) + int alt28=4; switch ( input.LA(1) ) { case 14: { @@ -7959,6 +7960,11 @@ public final void rule__Solver__Alternatives() throws RecognitionException { alt28=3; } break; + case 17: + { + alt28=4; + } + break; default: NoViableAltException nvae = new NoViableAltException("", 28, 0, input); @@ -8028,6 +8034,27 @@ public final void rule__Solver__Alternatives() throws RecognitionException { } + } + break; + case 4 : + // InternalApplicationConfiguration.g:2377:2: ( ( 'TPTPSolver' ) ) + { + // InternalApplicationConfiguration.g:2377:2: ( ( 'TPTPSolver' ) ) + // InternalApplicationConfiguration.g:2378:3: ( 'TPTPSolver' ) + { + before(grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3()); + // InternalApplicationConfiguration.g:2379:3: ( 'TPTPSolver' ) + // InternalApplicationConfiguration.g:2379:4: 'TPTPSolver' + { + match(input,17,FOLLOW_2); + + } + + after(grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3()); + + } + + } break; @@ -8048,14 +8075,14 @@ public final void rule__Solver__Alternatives() throws RecognitionException { // $ANTLR start "rule__ConfigurationScript__Group__0" - // InternalApplicationConfiguration.g:2381:1: rule__ConfigurationScript__Group__0 : rule__ConfigurationScript__Group__0__Impl rule__ConfigurationScript__Group__1 ; + // InternalApplicationConfiguration.g:2387:1: rule__ConfigurationScript__Group__0 : rule__ConfigurationScript__Group__0__Impl rule__ConfigurationScript__Group__1 ; public final void rule__ConfigurationScript__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2385:1: ( rule__ConfigurationScript__Group__0__Impl rule__ConfigurationScript__Group__1 ) - // InternalApplicationConfiguration.g:2386:2: rule__ConfigurationScript__Group__0__Impl rule__ConfigurationScript__Group__1 + // InternalApplicationConfiguration.g:2391:1: ( rule__ConfigurationScript__Group__0__Impl rule__ConfigurationScript__Group__1 ) + // InternalApplicationConfiguration.g:2392:2: rule__ConfigurationScript__Group__0__Impl rule__ConfigurationScript__Group__1 { pushFollow(FOLLOW_3); rule__ConfigurationScript__Group__0__Impl(); @@ -8086,33 +8113,33 @@ public final void rule__ConfigurationScript__Group__0() throws RecognitionExcept // $ANTLR start "rule__ConfigurationScript__Group__0__Impl" - // InternalApplicationConfiguration.g:2393:1: rule__ConfigurationScript__Group__0__Impl : ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) ; + // InternalApplicationConfiguration.g:2399:1: rule__ConfigurationScript__Group__0__Impl : ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) ; public final void rule__ConfigurationScript__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2397:1: ( ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) ) - // InternalApplicationConfiguration.g:2398:1: ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) + // InternalApplicationConfiguration.g:2403:1: ( ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) ) + // InternalApplicationConfiguration.g:2404:1: ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) { - // InternalApplicationConfiguration.g:2398:1: ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) - // InternalApplicationConfiguration.g:2399:2: ( rule__ConfigurationScript__ImportsAssignment_0 )* + // InternalApplicationConfiguration.g:2404:1: ( ( rule__ConfigurationScript__ImportsAssignment_0 )* ) + // InternalApplicationConfiguration.g:2405:2: ( rule__ConfigurationScript__ImportsAssignment_0 )* { before(grammarAccess.getConfigurationScriptAccess().getImportsAssignment_0()); - // InternalApplicationConfiguration.g:2400:2: ( rule__ConfigurationScript__ImportsAssignment_0 )* + // InternalApplicationConfiguration.g:2406:2: ( rule__ConfigurationScript__ImportsAssignment_0 )* loop29: do { int alt29=2; int LA29_0 = input.LA(1); - if ( (LA29_0==19) ) { + if ( (LA29_0==20) ) { alt29=1; } switch (alt29) { case 1 : - // InternalApplicationConfiguration.g:2400:3: rule__ConfigurationScript__ImportsAssignment_0 + // InternalApplicationConfiguration.g:2406:3: rule__ConfigurationScript__ImportsAssignment_0 { pushFollow(FOLLOW_4); rule__ConfigurationScript__ImportsAssignment_0(); @@ -8151,14 +8178,14 @@ public final void rule__ConfigurationScript__Group__0__Impl() throws Recognition // $ANTLR start "rule__ConfigurationScript__Group__1" - // InternalApplicationConfiguration.g:2408:1: rule__ConfigurationScript__Group__1 : rule__ConfigurationScript__Group__1__Impl ; + // InternalApplicationConfiguration.g:2414:1: rule__ConfigurationScript__Group__1 : rule__ConfigurationScript__Group__1__Impl ; public final void rule__ConfigurationScript__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2412:1: ( rule__ConfigurationScript__Group__1__Impl ) - // InternalApplicationConfiguration.g:2413:2: rule__ConfigurationScript__Group__1__Impl + // InternalApplicationConfiguration.g:2418:1: ( rule__ConfigurationScript__Group__1__Impl ) + // InternalApplicationConfiguration.g:2419:2: rule__ConfigurationScript__Group__1__Impl { pushFollow(FOLLOW_2); rule__ConfigurationScript__Group__1__Impl(); @@ -8184,33 +8211,33 @@ public final void rule__ConfigurationScript__Group__1() throws RecognitionExcept // $ANTLR start "rule__ConfigurationScript__Group__1__Impl" - // InternalApplicationConfiguration.g:2419:1: rule__ConfigurationScript__Group__1__Impl : ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) ; + // InternalApplicationConfiguration.g:2425:1: rule__ConfigurationScript__Group__1__Impl : ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) ; public final void rule__ConfigurationScript__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2423:1: ( ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) ) - // InternalApplicationConfiguration.g:2424:1: ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) + // InternalApplicationConfiguration.g:2429:1: ( ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) ) + // InternalApplicationConfiguration.g:2430:1: ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) { - // InternalApplicationConfiguration.g:2424:1: ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) - // InternalApplicationConfiguration.g:2425:2: ( rule__ConfigurationScript__CommandsAssignment_1 )* + // InternalApplicationConfiguration.g:2430:1: ( ( rule__ConfigurationScript__CommandsAssignment_1 )* ) + // InternalApplicationConfiguration.g:2431:2: ( rule__ConfigurationScript__CommandsAssignment_1 )* { before(grammarAccess.getConfigurationScriptAccess().getCommandsAssignment_1()); - // InternalApplicationConfiguration.g:2426:2: ( rule__ConfigurationScript__CommandsAssignment_1 )* + // InternalApplicationConfiguration.g:2432:2: ( rule__ConfigurationScript__CommandsAssignment_1 )* loop30: do { int alt30=2; int LA30_0 = input.LA(1); - if ( (LA30_0==22||LA30_0==30||(LA30_0>=32 && LA30_0<=34)||(LA30_0>=46 && LA30_0<=47)) ) { + if ( (LA30_0==23||LA30_0==31||(LA30_0>=33 && LA30_0<=35)||(LA30_0>=47 && LA30_0<=48)) ) { alt30=1; } switch (alt30) { case 1 : - // InternalApplicationConfiguration.g:2426:3: rule__ConfigurationScript__CommandsAssignment_1 + // InternalApplicationConfiguration.g:2432:3: rule__ConfigurationScript__CommandsAssignment_1 { pushFollow(FOLLOW_5); rule__ConfigurationScript__CommandsAssignment_1(); @@ -8249,14 +8276,14 @@ public final void rule__ConfigurationScript__Group__1__Impl() throws Recognition // $ANTLR start "rule__QualifiedName__Group__0" - // InternalApplicationConfiguration.g:2435:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ; + // InternalApplicationConfiguration.g:2441:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ; public final void rule__QualifiedName__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2439:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ) - // InternalApplicationConfiguration.g:2440:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 + // InternalApplicationConfiguration.g:2445:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ) + // InternalApplicationConfiguration.g:2446:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 { pushFollow(FOLLOW_6); rule__QualifiedName__Group__0__Impl(); @@ -8287,17 +8314,17 @@ public final void rule__QualifiedName__Group__0() throws RecognitionException { // $ANTLR start "rule__QualifiedName__Group__0__Impl" - // InternalApplicationConfiguration.g:2447:1: rule__QualifiedName__Group__0__Impl : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:2453:1: rule__QualifiedName__Group__0__Impl : ( RULE_ID ) ; public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2451:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:2452:1: ( RULE_ID ) + // InternalApplicationConfiguration.g:2457:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:2458:1: ( RULE_ID ) { - // InternalApplicationConfiguration.g:2452:1: ( RULE_ID ) - // InternalApplicationConfiguration.g:2453:2: RULE_ID + // InternalApplicationConfiguration.g:2458:1: ( RULE_ID ) + // InternalApplicationConfiguration.g:2459:2: RULE_ID { before(grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); match(input,RULE_ID,FOLLOW_2); @@ -8324,14 +8351,14 @@ public final void rule__QualifiedName__Group__0__Impl() throws RecognitionExcept // $ANTLR start "rule__QualifiedName__Group__1" - // InternalApplicationConfiguration.g:2462:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ; + // InternalApplicationConfiguration.g:2468:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ; public final void rule__QualifiedName__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2466:1: ( rule__QualifiedName__Group__1__Impl ) - // InternalApplicationConfiguration.g:2467:2: rule__QualifiedName__Group__1__Impl + // InternalApplicationConfiguration.g:2472:1: ( rule__QualifiedName__Group__1__Impl ) + // InternalApplicationConfiguration.g:2473:2: rule__QualifiedName__Group__1__Impl { pushFollow(FOLLOW_2); rule__QualifiedName__Group__1__Impl(); @@ -8357,33 +8384,33 @@ public final void rule__QualifiedName__Group__1() throws RecognitionException { // $ANTLR start "rule__QualifiedName__Group__1__Impl" - // InternalApplicationConfiguration.g:2473:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ; + // InternalApplicationConfiguration.g:2479:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ; public final void rule__QualifiedName__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2477:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) ) - // InternalApplicationConfiguration.g:2478:1: ( ( rule__QualifiedName__Group_1__0 )* ) + // InternalApplicationConfiguration.g:2483:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) ) + // InternalApplicationConfiguration.g:2484:1: ( ( rule__QualifiedName__Group_1__0 )* ) { - // InternalApplicationConfiguration.g:2478:1: ( ( rule__QualifiedName__Group_1__0 )* ) - // InternalApplicationConfiguration.g:2479:2: ( rule__QualifiedName__Group_1__0 )* + // InternalApplicationConfiguration.g:2484:1: ( ( rule__QualifiedName__Group_1__0 )* ) + // InternalApplicationConfiguration.g:2485:2: ( rule__QualifiedName__Group_1__0 )* { before(grammarAccess.getQualifiedNameAccess().getGroup_1()); - // InternalApplicationConfiguration.g:2480:2: ( rule__QualifiedName__Group_1__0 )* + // InternalApplicationConfiguration.g:2486:2: ( rule__QualifiedName__Group_1__0 )* loop31: do { int alt31=2; int LA31_0 = input.LA(1); - if ( (LA31_0==17) ) { + if ( (LA31_0==18) ) { alt31=1; } switch (alt31) { case 1 : - // InternalApplicationConfiguration.g:2480:3: rule__QualifiedName__Group_1__0 + // InternalApplicationConfiguration.g:2486:3: rule__QualifiedName__Group_1__0 { pushFollow(FOLLOW_7); rule__QualifiedName__Group_1__0(); @@ -8422,14 +8449,14 @@ public final void rule__QualifiedName__Group__1__Impl() throws RecognitionExcept // $ANTLR start "rule__QualifiedName__Group_1__0" - // InternalApplicationConfiguration.g:2489:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ; + // InternalApplicationConfiguration.g:2495:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ; public final void rule__QualifiedName__Group_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2493:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ) - // InternalApplicationConfiguration.g:2494:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 + // InternalApplicationConfiguration.g:2499:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ) + // InternalApplicationConfiguration.g:2500:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 { pushFollow(FOLLOW_8); rule__QualifiedName__Group_1__0__Impl(); @@ -8460,20 +8487,20 @@ public final void rule__QualifiedName__Group_1__0() throws RecognitionException // $ANTLR start "rule__QualifiedName__Group_1__0__Impl" - // InternalApplicationConfiguration.g:2501:1: rule__QualifiedName__Group_1__0__Impl : ( '.' ) ; + // InternalApplicationConfiguration.g:2507:1: rule__QualifiedName__Group_1__0__Impl : ( '.' ) ; public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2505:1: ( ( '.' ) ) - // InternalApplicationConfiguration.g:2506:1: ( '.' ) + // InternalApplicationConfiguration.g:2511:1: ( ( '.' ) ) + // InternalApplicationConfiguration.g:2512:1: ( '.' ) { - // InternalApplicationConfiguration.g:2506:1: ( '.' ) - // InternalApplicationConfiguration.g:2507:2: '.' + // InternalApplicationConfiguration.g:2512:1: ( '.' ) + // InternalApplicationConfiguration.g:2513:2: '.' { before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); - match(input,17,FOLLOW_2); + match(input,18,FOLLOW_2); after(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); } @@ -8497,14 +8524,14 @@ public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionExce // $ANTLR start "rule__QualifiedName__Group_1__1" - // InternalApplicationConfiguration.g:2516:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ; + // InternalApplicationConfiguration.g:2522:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ; public final void rule__QualifiedName__Group_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2520:1: ( rule__QualifiedName__Group_1__1__Impl ) - // InternalApplicationConfiguration.g:2521:2: rule__QualifiedName__Group_1__1__Impl + // InternalApplicationConfiguration.g:2526:1: ( rule__QualifiedName__Group_1__1__Impl ) + // InternalApplicationConfiguration.g:2527:2: rule__QualifiedName__Group_1__1__Impl { pushFollow(FOLLOW_2); rule__QualifiedName__Group_1__1__Impl(); @@ -8530,17 +8557,17 @@ public final void rule__QualifiedName__Group_1__1() throws RecognitionException // $ANTLR start "rule__QualifiedName__Group_1__1__Impl" - // InternalApplicationConfiguration.g:2527:1: rule__QualifiedName__Group_1__1__Impl : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:2533:1: rule__QualifiedName__Group_1__1__Impl : ( RULE_ID ) ; public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2531:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:2532:1: ( RULE_ID ) + // InternalApplicationConfiguration.g:2537:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:2538:1: ( RULE_ID ) { - // InternalApplicationConfiguration.g:2532:1: ( RULE_ID ) - // InternalApplicationConfiguration.g:2533:2: RULE_ID + // InternalApplicationConfiguration.g:2538:1: ( RULE_ID ) + // InternalApplicationConfiguration.g:2539:2: RULE_ID { before(grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); match(input,RULE_ID,FOLLOW_2); @@ -8567,14 +8594,14 @@ public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionExce // $ANTLR start "rule__REALLiteral__Group__0" - // InternalApplicationConfiguration.g:2543:1: rule__REALLiteral__Group__0 : rule__REALLiteral__Group__0__Impl rule__REALLiteral__Group__1 ; + // InternalApplicationConfiguration.g:2549:1: rule__REALLiteral__Group__0 : rule__REALLiteral__Group__0__Impl rule__REALLiteral__Group__1 ; public final void rule__REALLiteral__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2547:1: ( rule__REALLiteral__Group__0__Impl rule__REALLiteral__Group__1 ) - // InternalApplicationConfiguration.g:2548:2: rule__REALLiteral__Group__0__Impl rule__REALLiteral__Group__1 + // InternalApplicationConfiguration.g:2553:1: ( rule__REALLiteral__Group__0__Impl rule__REALLiteral__Group__1 ) + // InternalApplicationConfiguration.g:2554:2: rule__REALLiteral__Group__0__Impl rule__REALLiteral__Group__1 { pushFollow(FOLLOW_9); rule__REALLiteral__Group__0__Impl(); @@ -8605,31 +8632,31 @@ public final void rule__REALLiteral__Group__0() throws RecognitionException { // $ANTLR start "rule__REALLiteral__Group__0__Impl" - // InternalApplicationConfiguration.g:2555:1: rule__REALLiteral__Group__0__Impl : ( ( '-' )? ) ; + // InternalApplicationConfiguration.g:2561:1: rule__REALLiteral__Group__0__Impl : ( ( '-' )? ) ; public final void rule__REALLiteral__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2559:1: ( ( ( '-' )? ) ) - // InternalApplicationConfiguration.g:2560:1: ( ( '-' )? ) + // InternalApplicationConfiguration.g:2565:1: ( ( ( '-' )? ) ) + // InternalApplicationConfiguration.g:2566:1: ( ( '-' )? ) { - // InternalApplicationConfiguration.g:2560:1: ( ( '-' )? ) - // InternalApplicationConfiguration.g:2561:2: ( '-' )? + // InternalApplicationConfiguration.g:2566:1: ( ( '-' )? ) + // InternalApplicationConfiguration.g:2567:2: ( '-' )? { before(grammarAccess.getREALLiteralAccess().getHyphenMinusKeyword_0()); - // InternalApplicationConfiguration.g:2562:2: ( '-' )? + // InternalApplicationConfiguration.g:2568:2: ( '-' )? int alt32=2; int LA32_0 = input.LA(1); - if ( (LA32_0==18) ) { + if ( (LA32_0==19) ) { alt32=1; } switch (alt32) { case 1 : - // InternalApplicationConfiguration.g:2562:3: '-' + // InternalApplicationConfiguration.g:2568:3: '-' { - match(input,18,FOLLOW_2); + match(input,19,FOLLOW_2); } break; @@ -8659,14 +8686,14 @@ public final void rule__REALLiteral__Group__0__Impl() throws RecognitionExceptio // $ANTLR start "rule__REALLiteral__Group__1" - // InternalApplicationConfiguration.g:2570:1: rule__REALLiteral__Group__1 : rule__REALLiteral__Group__1__Impl rule__REALLiteral__Group__2 ; + // InternalApplicationConfiguration.g:2576:1: rule__REALLiteral__Group__1 : rule__REALLiteral__Group__1__Impl rule__REALLiteral__Group__2 ; public final void rule__REALLiteral__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2574:1: ( rule__REALLiteral__Group__1__Impl rule__REALLiteral__Group__2 ) - // InternalApplicationConfiguration.g:2575:2: rule__REALLiteral__Group__1__Impl rule__REALLiteral__Group__2 + // InternalApplicationConfiguration.g:2580:1: ( rule__REALLiteral__Group__1__Impl rule__REALLiteral__Group__2 ) + // InternalApplicationConfiguration.g:2581:2: rule__REALLiteral__Group__1__Impl rule__REALLiteral__Group__2 { pushFollow(FOLLOW_6); rule__REALLiteral__Group__1__Impl(); @@ -8697,17 +8724,17 @@ public final void rule__REALLiteral__Group__1() throws RecognitionException { // $ANTLR start "rule__REALLiteral__Group__1__Impl" - // InternalApplicationConfiguration.g:2582:1: rule__REALLiteral__Group__1__Impl : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:2588:1: rule__REALLiteral__Group__1__Impl : ( RULE_INT ) ; public final void rule__REALLiteral__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2586:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:2587:1: ( RULE_INT ) + // InternalApplicationConfiguration.g:2592:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:2593:1: ( RULE_INT ) { - // InternalApplicationConfiguration.g:2587:1: ( RULE_INT ) - // InternalApplicationConfiguration.g:2588:2: RULE_INT + // InternalApplicationConfiguration.g:2593:1: ( RULE_INT ) + // InternalApplicationConfiguration.g:2594:2: RULE_INT { before(grammarAccess.getREALLiteralAccess().getINTTerminalRuleCall_1()); match(input,RULE_INT,FOLLOW_2); @@ -8734,14 +8761,14 @@ public final void rule__REALLiteral__Group__1__Impl() throws RecognitionExceptio // $ANTLR start "rule__REALLiteral__Group__2" - // InternalApplicationConfiguration.g:2597:1: rule__REALLiteral__Group__2 : rule__REALLiteral__Group__2__Impl rule__REALLiteral__Group__3 ; + // InternalApplicationConfiguration.g:2603:1: rule__REALLiteral__Group__2 : rule__REALLiteral__Group__2__Impl rule__REALLiteral__Group__3 ; public final void rule__REALLiteral__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2601:1: ( rule__REALLiteral__Group__2__Impl rule__REALLiteral__Group__3 ) - // InternalApplicationConfiguration.g:2602:2: rule__REALLiteral__Group__2__Impl rule__REALLiteral__Group__3 + // InternalApplicationConfiguration.g:2607:1: ( rule__REALLiteral__Group__2__Impl rule__REALLiteral__Group__3 ) + // InternalApplicationConfiguration.g:2608:2: rule__REALLiteral__Group__2__Impl rule__REALLiteral__Group__3 { pushFollow(FOLLOW_9); rule__REALLiteral__Group__2__Impl(); @@ -8772,20 +8799,20 @@ public final void rule__REALLiteral__Group__2() throws RecognitionException { // $ANTLR start "rule__REALLiteral__Group__2__Impl" - // InternalApplicationConfiguration.g:2609:1: rule__REALLiteral__Group__2__Impl : ( '.' ) ; + // InternalApplicationConfiguration.g:2615:1: rule__REALLiteral__Group__2__Impl : ( '.' ) ; public final void rule__REALLiteral__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2613:1: ( ( '.' ) ) - // InternalApplicationConfiguration.g:2614:1: ( '.' ) + // InternalApplicationConfiguration.g:2619:1: ( ( '.' ) ) + // InternalApplicationConfiguration.g:2620:1: ( '.' ) { - // InternalApplicationConfiguration.g:2614:1: ( '.' ) - // InternalApplicationConfiguration.g:2615:2: '.' + // InternalApplicationConfiguration.g:2620:1: ( '.' ) + // InternalApplicationConfiguration.g:2621:2: '.' { before(grammarAccess.getREALLiteralAccess().getFullStopKeyword_2()); - match(input,17,FOLLOW_2); + match(input,18,FOLLOW_2); after(grammarAccess.getREALLiteralAccess().getFullStopKeyword_2()); } @@ -8809,14 +8836,14 @@ public final void rule__REALLiteral__Group__2__Impl() throws RecognitionExceptio // $ANTLR start "rule__REALLiteral__Group__3" - // InternalApplicationConfiguration.g:2624:1: rule__REALLiteral__Group__3 : rule__REALLiteral__Group__3__Impl ; + // InternalApplicationConfiguration.g:2630:1: rule__REALLiteral__Group__3 : rule__REALLiteral__Group__3__Impl ; public final void rule__REALLiteral__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2628:1: ( rule__REALLiteral__Group__3__Impl ) - // InternalApplicationConfiguration.g:2629:2: rule__REALLiteral__Group__3__Impl + // InternalApplicationConfiguration.g:2634:1: ( rule__REALLiteral__Group__3__Impl ) + // InternalApplicationConfiguration.g:2635:2: rule__REALLiteral__Group__3__Impl { pushFollow(FOLLOW_2); rule__REALLiteral__Group__3__Impl(); @@ -8842,17 +8869,17 @@ public final void rule__REALLiteral__Group__3() throws RecognitionException { // $ANTLR start "rule__REALLiteral__Group__3__Impl" - // InternalApplicationConfiguration.g:2635:1: rule__REALLiteral__Group__3__Impl : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:2641:1: rule__REALLiteral__Group__3__Impl : ( RULE_INT ) ; public final void rule__REALLiteral__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2639:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:2640:1: ( RULE_INT ) + // InternalApplicationConfiguration.g:2645:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:2646:1: ( RULE_INT ) { - // InternalApplicationConfiguration.g:2640:1: ( RULE_INT ) - // InternalApplicationConfiguration.g:2641:2: RULE_INT + // InternalApplicationConfiguration.g:2646:1: ( RULE_INT ) + // InternalApplicationConfiguration.g:2647:2: RULE_INT { before(grammarAccess.getREALLiteralAccess().getINTTerminalRuleCall_3()); match(input,RULE_INT,FOLLOW_2); @@ -8879,14 +8906,14 @@ public final void rule__REALLiteral__Group__3__Impl() throws RecognitionExceptio // $ANTLR start "rule__INTLiteral__Group__0" - // InternalApplicationConfiguration.g:2651:1: rule__INTLiteral__Group__0 : rule__INTLiteral__Group__0__Impl rule__INTLiteral__Group__1 ; + // InternalApplicationConfiguration.g:2657:1: rule__INTLiteral__Group__0 : rule__INTLiteral__Group__0__Impl rule__INTLiteral__Group__1 ; public final void rule__INTLiteral__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2655:1: ( rule__INTLiteral__Group__0__Impl rule__INTLiteral__Group__1 ) - // InternalApplicationConfiguration.g:2656:2: rule__INTLiteral__Group__0__Impl rule__INTLiteral__Group__1 + // InternalApplicationConfiguration.g:2661:1: ( rule__INTLiteral__Group__0__Impl rule__INTLiteral__Group__1 ) + // InternalApplicationConfiguration.g:2662:2: rule__INTLiteral__Group__0__Impl rule__INTLiteral__Group__1 { pushFollow(FOLLOW_9); rule__INTLiteral__Group__0__Impl(); @@ -8917,31 +8944,31 @@ public final void rule__INTLiteral__Group__0() throws RecognitionException { // $ANTLR start "rule__INTLiteral__Group__0__Impl" - // InternalApplicationConfiguration.g:2663:1: rule__INTLiteral__Group__0__Impl : ( ( '-' )? ) ; + // InternalApplicationConfiguration.g:2669:1: rule__INTLiteral__Group__0__Impl : ( ( '-' )? ) ; public final void rule__INTLiteral__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2667:1: ( ( ( '-' )? ) ) - // InternalApplicationConfiguration.g:2668:1: ( ( '-' )? ) + // InternalApplicationConfiguration.g:2673:1: ( ( ( '-' )? ) ) + // InternalApplicationConfiguration.g:2674:1: ( ( '-' )? ) { - // InternalApplicationConfiguration.g:2668:1: ( ( '-' )? ) - // InternalApplicationConfiguration.g:2669:2: ( '-' )? + // InternalApplicationConfiguration.g:2674:1: ( ( '-' )? ) + // InternalApplicationConfiguration.g:2675:2: ( '-' )? { before(grammarAccess.getINTLiteralAccess().getHyphenMinusKeyword_0()); - // InternalApplicationConfiguration.g:2670:2: ( '-' )? + // InternalApplicationConfiguration.g:2676:2: ( '-' )? int alt33=2; int LA33_0 = input.LA(1); - if ( (LA33_0==18) ) { + if ( (LA33_0==19) ) { alt33=1; } switch (alt33) { case 1 : - // InternalApplicationConfiguration.g:2670:3: '-' + // InternalApplicationConfiguration.g:2676:3: '-' { - match(input,18,FOLLOW_2); + match(input,19,FOLLOW_2); } break; @@ -8971,14 +8998,14 @@ public final void rule__INTLiteral__Group__0__Impl() throws RecognitionException // $ANTLR start "rule__INTLiteral__Group__1" - // InternalApplicationConfiguration.g:2678:1: rule__INTLiteral__Group__1 : rule__INTLiteral__Group__1__Impl ; + // InternalApplicationConfiguration.g:2684:1: rule__INTLiteral__Group__1 : rule__INTLiteral__Group__1__Impl ; public final void rule__INTLiteral__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2682:1: ( rule__INTLiteral__Group__1__Impl ) - // InternalApplicationConfiguration.g:2683:2: rule__INTLiteral__Group__1__Impl + // InternalApplicationConfiguration.g:2688:1: ( rule__INTLiteral__Group__1__Impl ) + // InternalApplicationConfiguration.g:2689:2: rule__INTLiteral__Group__1__Impl { pushFollow(FOLLOW_2); rule__INTLiteral__Group__1__Impl(); @@ -9004,17 +9031,17 @@ public final void rule__INTLiteral__Group__1() throws RecognitionException { // $ANTLR start "rule__INTLiteral__Group__1__Impl" - // InternalApplicationConfiguration.g:2689:1: rule__INTLiteral__Group__1__Impl : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:2695:1: rule__INTLiteral__Group__1__Impl : ( RULE_INT ) ; public final void rule__INTLiteral__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2693:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:2694:1: ( RULE_INT ) + // InternalApplicationConfiguration.g:2699:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:2700:1: ( RULE_INT ) { - // InternalApplicationConfiguration.g:2694:1: ( RULE_INT ) - // InternalApplicationConfiguration.g:2695:2: RULE_INT + // InternalApplicationConfiguration.g:2700:1: ( RULE_INT ) + // InternalApplicationConfiguration.g:2701:2: RULE_INT { before(grammarAccess.getINTLiteralAccess().getINTTerminalRuleCall_1()); match(input,RULE_INT,FOLLOW_2); @@ -9041,14 +9068,14 @@ public final void rule__INTLiteral__Group__1__Impl() throws RecognitionException // $ANTLR start "rule__EPackageImport__Group__0" - // InternalApplicationConfiguration.g:2705:1: rule__EPackageImport__Group__0 : rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 ; + // InternalApplicationConfiguration.g:2711:1: rule__EPackageImport__Group__0 : rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 ; public final void rule__EPackageImport__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2709:1: ( rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 ) - // InternalApplicationConfiguration.g:2710:2: rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 + // InternalApplicationConfiguration.g:2715:1: ( rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 ) + // InternalApplicationConfiguration.g:2716:2: rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 { pushFollow(FOLLOW_10); rule__EPackageImport__Group__0__Impl(); @@ -9079,20 +9106,20 @@ public final void rule__EPackageImport__Group__0() throws RecognitionException { // $ANTLR start "rule__EPackageImport__Group__0__Impl" - // InternalApplicationConfiguration.g:2717:1: rule__EPackageImport__Group__0__Impl : ( 'import' ) ; + // InternalApplicationConfiguration.g:2723:1: rule__EPackageImport__Group__0__Impl : ( 'import' ) ; public final void rule__EPackageImport__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2721:1: ( ( 'import' ) ) - // InternalApplicationConfiguration.g:2722:1: ( 'import' ) + // InternalApplicationConfiguration.g:2727:1: ( ( 'import' ) ) + // InternalApplicationConfiguration.g:2728:1: ( 'import' ) { - // InternalApplicationConfiguration.g:2722:1: ( 'import' ) - // InternalApplicationConfiguration.g:2723:2: 'import' + // InternalApplicationConfiguration.g:2728:1: ( 'import' ) + // InternalApplicationConfiguration.g:2729:2: 'import' { before(grammarAccess.getEPackageImportAccess().getImportKeyword_0()); - match(input,19,FOLLOW_2); + match(input,20,FOLLOW_2); after(grammarAccess.getEPackageImportAccess().getImportKeyword_0()); } @@ -9116,14 +9143,14 @@ public final void rule__EPackageImport__Group__0__Impl() throws RecognitionExcep // $ANTLR start "rule__EPackageImport__Group__1" - // InternalApplicationConfiguration.g:2732:1: rule__EPackageImport__Group__1 : rule__EPackageImport__Group__1__Impl rule__EPackageImport__Group__2 ; + // InternalApplicationConfiguration.g:2738:1: rule__EPackageImport__Group__1 : rule__EPackageImport__Group__1__Impl rule__EPackageImport__Group__2 ; public final void rule__EPackageImport__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2736:1: ( rule__EPackageImport__Group__1__Impl rule__EPackageImport__Group__2 ) - // InternalApplicationConfiguration.g:2737:2: rule__EPackageImport__Group__1__Impl rule__EPackageImport__Group__2 + // InternalApplicationConfiguration.g:2742:1: ( rule__EPackageImport__Group__1__Impl rule__EPackageImport__Group__2 ) + // InternalApplicationConfiguration.g:2743:2: rule__EPackageImport__Group__1__Impl rule__EPackageImport__Group__2 { pushFollow(FOLLOW_11); rule__EPackageImport__Group__1__Impl(); @@ -9154,20 +9181,20 @@ public final void rule__EPackageImport__Group__1() throws RecognitionException { // $ANTLR start "rule__EPackageImport__Group__1__Impl" - // InternalApplicationConfiguration.g:2744:1: rule__EPackageImport__Group__1__Impl : ( 'epackage' ) ; + // InternalApplicationConfiguration.g:2750:1: rule__EPackageImport__Group__1__Impl : ( 'epackage' ) ; public final void rule__EPackageImport__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2748:1: ( ( 'epackage' ) ) - // InternalApplicationConfiguration.g:2749:1: ( 'epackage' ) + // InternalApplicationConfiguration.g:2754:1: ( ( 'epackage' ) ) + // InternalApplicationConfiguration.g:2755:1: ( 'epackage' ) { - // InternalApplicationConfiguration.g:2749:1: ( 'epackage' ) - // InternalApplicationConfiguration.g:2750:2: 'epackage' + // InternalApplicationConfiguration.g:2755:1: ( 'epackage' ) + // InternalApplicationConfiguration.g:2756:2: 'epackage' { before(grammarAccess.getEPackageImportAccess().getEpackageKeyword_1()); - match(input,20,FOLLOW_2); + match(input,21,FOLLOW_2); after(grammarAccess.getEPackageImportAccess().getEpackageKeyword_1()); } @@ -9191,14 +9218,14 @@ public final void rule__EPackageImport__Group__1__Impl() throws RecognitionExcep // $ANTLR start "rule__EPackageImport__Group__2" - // InternalApplicationConfiguration.g:2759:1: rule__EPackageImport__Group__2 : rule__EPackageImport__Group__2__Impl ; + // InternalApplicationConfiguration.g:2765:1: rule__EPackageImport__Group__2 : rule__EPackageImport__Group__2__Impl ; public final void rule__EPackageImport__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2763:1: ( rule__EPackageImport__Group__2__Impl ) - // InternalApplicationConfiguration.g:2764:2: rule__EPackageImport__Group__2__Impl + // InternalApplicationConfiguration.g:2769:1: ( rule__EPackageImport__Group__2__Impl ) + // InternalApplicationConfiguration.g:2770:2: rule__EPackageImport__Group__2__Impl { pushFollow(FOLLOW_2); rule__EPackageImport__Group__2__Impl(); @@ -9224,21 +9251,21 @@ public final void rule__EPackageImport__Group__2() throws RecognitionException { // $ANTLR start "rule__EPackageImport__Group__2__Impl" - // InternalApplicationConfiguration.g:2770:1: rule__EPackageImport__Group__2__Impl : ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:2776:1: rule__EPackageImport__Group__2__Impl : ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) ; public final void rule__EPackageImport__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2774:1: ( ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:2775:1: ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) + // InternalApplicationConfiguration.g:2780:1: ( ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:2781:1: ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) { - // InternalApplicationConfiguration.g:2775:1: ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) - // InternalApplicationConfiguration.g:2776:2: ( rule__EPackageImport__ImportedPackageAssignment_2 ) + // InternalApplicationConfiguration.g:2781:1: ( ( rule__EPackageImport__ImportedPackageAssignment_2 ) ) + // InternalApplicationConfiguration.g:2782:2: ( rule__EPackageImport__ImportedPackageAssignment_2 ) { before(grammarAccess.getEPackageImportAccess().getImportedPackageAssignment_2()); - // InternalApplicationConfiguration.g:2777:2: ( rule__EPackageImport__ImportedPackageAssignment_2 ) - // InternalApplicationConfiguration.g:2777:3: rule__EPackageImport__ImportedPackageAssignment_2 + // InternalApplicationConfiguration.g:2783:2: ( rule__EPackageImport__ImportedPackageAssignment_2 ) + // InternalApplicationConfiguration.g:2783:3: rule__EPackageImport__ImportedPackageAssignment_2 { pushFollow(FOLLOW_2); rule__EPackageImport__ImportedPackageAssignment_2(); @@ -9271,14 +9298,14 @@ public final void rule__EPackageImport__Group__2__Impl() throws RecognitionExcep // $ANTLR start "rule__ViatraImport__Group__0" - // InternalApplicationConfiguration.g:2786:1: rule__ViatraImport__Group__0 : rule__ViatraImport__Group__0__Impl rule__ViatraImport__Group__1 ; + // InternalApplicationConfiguration.g:2792:1: rule__ViatraImport__Group__0 : rule__ViatraImport__Group__0__Impl rule__ViatraImport__Group__1 ; public final void rule__ViatraImport__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2790:1: ( rule__ViatraImport__Group__0__Impl rule__ViatraImport__Group__1 ) - // InternalApplicationConfiguration.g:2791:2: rule__ViatraImport__Group__0__Impl rule__ViatraImport__Group__1 + // InternalApplicationConfiguration.g:2796:1: ( rule__ViatraImport__Group__0__Impl rule__ViatraImport__Group__1 ) + // InternalApplicationConfiguration.g:2797:2: rule__ViatraImport__Group__0__Impl rule__ViatraImport__Group__1 { pushFollow(FOLLOW_12); rule__ViatraImport__Group__0__Impl(); @@ -9309,20 +9336,20 @@ public final void rule__ViatraImport__Group__0() throws RecognitionException { // $ANTLR start "rule__ViatraImport__Group__0__Impl" - // InternalApplicationConfiguration.g:2798:1: rule__ViatraImport__Group__0__Impl : ( 'import' ) ; + // InternalApplicationConfiguration.g:2804:1: rule__ViatraImport__Group__0__Impl : ( 'import' ) ; public final void rule__ViatraImport__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2802:1: ( ( 'import' ) ) - // InternalApplicationConfiguration.g:2803:1: ( 'import' ) + // InternalApplicationConfiguration.g:2808:1: ( ( 'import' ) ) + // InternalApplicationConfiguration.g:2809:1: ( 'import' ) { - // InternalApplicationConfiguration.g:2803:1: ( 'import' ) - // InternalApplicationConfiguration.g:2804:2: 'import' + // InternalApplicationConfiguration.g:2809:1: ( 'import' ) + // InternalApplicationConfiguration.g:2810:2: 'import' { before(grammarAccess.getViatraImportAccess().getImportKeyword_0()); - match(input,19,FOLLOW_2); + match(input,20,FOLLOW_2); after(grammarAccess.getViatraImportAccess().getImportKeyword_0()); } @@ -9346,14 +9373,14 @@ public final void rule__ViatraImport__Group__0__Impl() throws RecognitionExcepti // $ANTLR start "rule__ViatraImport__Group__1" - // InternalApplicationConfiguration.g:2813:1: rule__ViatraImport__Group__1 : rule__ViatraImport__Group__1__Impl rule__ViatraImport__Group__2 ; + // InternalApplicationConfiguration.g:2819:1: rule__ViatraImport__Group__1 : rule__ViatraImport__Group__1__Impl rule__ViatraImport__Group__2 ; public final void rule__ViatraImport__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2817:1: ( rule__ViatraImport__Group__1__Impl rule__ViatraImport__Group__2 ) - // InternalApplicationConfiguration.g:2818:2: rule__ViatraImport__Group__1__Impl rule__ViatraImport__Group__2 + // InternalApplicationConfiguration.g:2823:1: ( rule__ViatraImport__Group__1__Impl rule__ViatraImport__Group__2 ) + // InternalApplicationConfiguration.g:2824:2: rule__ViatraImport__Group__1__Impl rule__ViatraImport__Group__2 { pushFollow(FOLLOW_11); rule__ViatraImport__Group__1__Impl(); @@ -9384,20 +9411,20 @@ public final void rule__ViatraImport__Group__1() throws RecognitionException { // $ANTLR start "rule__ViatraImport__Group__1__Impl" - // InternalApplicationConfiguration.g:2825:1: rule__ViatraImport__Group__1__Impl : ( 'viatra' ) ; + // InternalApplicationConfiguration.g:2831:1: rule__ViatraImport__Group__1__Impl : ( 'viatra' ) ; public final void rule__ViatraImport__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2829:1: ( ( 'viatra' ) ) - // InternalApplicationConfiguration.g:2830:1: ( 'viatra' ) + // InternalApplicationConfiguration.g:2835:1: ( ( 'viatra' ) ) + // InternalApplicationConfiguration.g:2836:1: ( 'viatra' ) { - // InternalApplicationConfiguration.g:2830:1: ( 'viatra' ) - // InternalApplicationConfiguration.g:2831:2: 'viatra' + // InternalApplicationConfiguration.g:2836:1: ( 'viatra' ) + // InternalApplicationConfiguration.g:2837:2: 'viatra' { before(grammarAccess.getViatraImportAccess().getViatraKeyword_1()); - match(input,21,FOLLOW_2); + match(input,22,FOLLOW_2); after(grammarAccess.getViatraImportAccess().getViatraKeyword_1()); } @@ -9421,14 +9448,14 @@ public final void rule__ViatraImport__Group__1__Impl() throws RecognitionExcepti // $ANTLR start "rule__ViatraImport__Group__2" - // InternalApplicationConfiguration.g:2840:1: rule__ViatraImport__Group__2 : rule__ViatraImport__Group__2__Impl ; + // InternalApplicationConfiguration.g:2846:1: rule__ViatraImport__Group__2 : rule__ViatraImport__Group__2__Impl ; public final void rule__ViatraImport__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2844:1: ( rule__ViatraImport__Group__2__Impl ) - // InternalApplicationConfiguration.g:2845:2: rule__ViatraImport__Group__2__Impl + // InternalApplicationConfiguration.g:2850:1: ( rule__ViatraImport__Group__2__Impl ) + // InternalApplicationConfiguration.g:2851:2: rule__ViatraImport__Group__2__Impl { pushFollow(FOLLOW_2); rule__ViatraImport__Group__2__Impl(); @@ -9454,21 +9481,21 @@ public final void rule__ViatraImport__Group__2() throws RecognitionException { // $ANTLR start "rule__ViatraImport__Group__2__Impl" - // InternalApplicationConfiguration.g:2851:1: rule__ViatraImport__Group__2__Impl : ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:2857:1: rule__ViatraImport__Group__2__Impl : ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) ; public final void rule__ViatraImport__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2855:1: ( ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:2856:1: ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) + // InternalApplicationConfiguration.g:2861:1: ( ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:2862:1: ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) { - // InternalApplicationConfiguration.g:2856:1: ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) - // InternalApplicationConfiguration.g:2857:2: ( rule__ViatraImport__ImportedViatraAssignment_2 ) + // InternalApplicationConfiguration.g:2862:1: ( ( rule__ViatraImport__ImportedViatraAssignment_2 ) ) + // InternalApplicationConfiguration.g:2863:2: ( rule__ViatraImport__ImportedViatraAssignment_2 ) { before(grammarAccess.getViatraImportAccess().getImportedViatraAssignment_2()); - // InternalApplicationConfiguration.g:2858:2: ( rule__ViatraImport__ImportedViatraAssignment_2 ) - // InternalApplicationConfiguration.g:2858:3: rule__ViatraImport__ImportedViatraAssignment_2 + // InternalApplicationConfiguration.g:2864:2: ( rule__ViatraImport__ImportedViatraAssignment_2 ) + // InternalApplicationConfiguration.g:2864:3: rule__ViatraImport__ImportedViatraAssignment_2 { pushFollow(FOLLOW_2); rule__ViatraImport__ImportedViatraAssignment_2(); @@ -9501,14 +9528,14 @@ public final void rule__ViatraImport__Group__2__Impl() throws RecognitionExcepti // $ANTLR start "rule__FileDeclaration__Group__0" - // InternalApplicationConfiguration.g:2867:1: rule__FileDeclaration__Group__0 : rule__FileDeclaration__Group__0__Impl rule__FileDeclaration__Group__1 ; + // InternalApplicationConfiguration.g:2873:1: rule__FileDeclaration__Group__0 : rule__FileDeclaration__Group__0__Impl rule__FileDeclaration__Group__1 ; public final void rule__FileDeclaration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2871:1: ( rule__FileDeclaration__Group__0__Impl rule__FileDeclaration__Group__1 ) - // InternalApplicationConfiguration.g:2872:2: rule__FileDeclaration__Group__0__Impl rule__FileDeclaration__Group__1 + // InternalApplicationConfiguration.g:2877:1: ( rule__FileDeclaration__Group__0__Impl rule__FileDeclaration__Group__1 ) + // InternalApplicationConfiguration.g:2878:2: rule__FileDeclaration__Group__0__Impl rule__FileDeclaration__Group__1 { pushFollow(FOLLOW_8); rule__FileDeclaration__Group__0__Impl(); @@ -9539,20 +9566,20 @@ public final void rule__FileDeclaration__Group__0() throws RecognitionException // $ANTLR start "rule__FileDeclaration__Group__0__Impl" - // InternalApplicationConfiguration.g:2879:1: rule__FileDeclaration__Group__0__Impl : ( 'file' ) ; + // InternalApplicationConfiguration.g:2885:1: rule__FileDeclaration__Group__0__Impl : ( 'file' ) ; public final void rule__FileDeclaration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2883:1: ( ( 'file' ) ) - // InternalApplicationConfiguration.g:2884:1: ( 'file' ) + // InternalApplicationConfiguration.g:2889:1: ( ( 'file' ) ) + // InternalApplicationConfiguration.g:2890:1: ( 'file' ) { - // InternalApplicationConfiguration.g:2884:1: ( 'file' ) - // InternalApplicationConfiguration.g:2885:2: 'file' + // InternalApplicationConfiguration.g:2890:1: ( 'file' ) + // InternalApplicationConfiguration.g:2891:2: 'file' { before(grammarAccess.getFileDeclarationAccess().getFileKeyword_0()); - match(input,22,FOLLOW_2); + match(input,23,FOLLOW_2); after(grammarAccess.getFileDeclarationAccess().getFileKeyword_0()); } @@ -9576,14 +9603,14 @@ public final void rule__FileDeclaration__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__FileDeclaration__Group__1" - // InternalApplicationConfiguration.g:2894:1: rule__FileDeclaration__Group__1 : rule__FileDeclaration__Group__1__Impl rule__FileDeclaration__Group__2 ; + // InternalApplicationConfiguration.g:2900:1: rule__FileDeclaration__Group__1 : rule__FileDeclaration__Group__1__Impl rule__FileDeclaration__Group__2 ; public final void rule__FileDeclaration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2898:1: ( rule__FileDeclaration__Group__1__Impl rule__FileDeclaration__Group__2 ) - // InternalApplicationConfiguration.g:2899:2: rule__FileDeclaration__Group__1__Impl rule__FileDeclaration__Group__2 + // InternalApplicationConfiguration.g:2904:1: ( rule__FileDeclaration__Group__1__Impl rule__FileDeclaration__Group__2 ) + // InternalApplicationConfiguration.g:2905:2: rule__FileDeclaration__Group__1__Impl rule__FileDeclaration__Group__2 { pushFollow(FOLLOW_13); rule__FileDeclaration__Group__1__Impl(); @@ -9614,21 +9641,21 @@ public final void rule__FileDeclaration__Group__1() throws RecognitionException // $ANTLR start "rule__FileDeclaration__Group__1__Impl" - // InternalApplicationConfiguration.g:2906:1: rule__FileDeclaration__Group__1__Impl : ( ( rule__FileDeclaration__NameAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:2912:1: rule__FileDeclaration__Group__1__Impl : ( ( rule__FileDeclaration__NameAssignment_1 ) ) ; public final void rule__FileDeclaration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2910:1: ( ( ( rule__FileDeclaration__NameAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:2911:1: ( ( rule__FileDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:2916:1: ( ( ( rule__FileDeclaration__NameAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:2917:1: ( ( rule__FileDeclaration__NameAssignment_1 ) ) { - // InternalApplicationConfiguration.g:2911:1: ( ( rule__FileDeclaration__NameAssignment_1 ) ) - // InternalApplicationConfiguration.g:2912:2: ( rule__FileDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:2917:1: ( ( rule__FileDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:2918:2: ( rule__FileDeclaration__NameAssignment_1 ) { before(grammarAccess.getFileDeclarationAccess().getNameAssignment_1()); - // InternalApplicationConfiguration.g:2913:2: ( rule__FileDeclaration__NameAssignment_1 ) - // InternalApplicationConfiguration.g:2913:3: rule__FileDeclaration__NameAssignment_1 + // InternalApplicationConfiguration.g:2919:2: ( rule__FileDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:2919:3: rule__FileDeclaration__NameAssignment_1 { pushFollow(FOLLOW_2); rule__FileDeclaration__NameAssignment_1(); @@ -9661,14 +9688,14 @@ public final void rule__FileDeclaration__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__FileDeclaration__Group__2" - // InternalApplicationConfiguration.g:2921:1: rule__FileDeclaration__Group__2 : rule__FileDeclaration__Group__2__Impl rule__FileDeclaration__Group__3 ; + // InternalApplicationConfiguration.g:2927:1: rule__FileDeclaration__Group__2 : rule__FileDeclaration__Group__2__Impl rule__FileDeclaration__Group__3 ; public final void rule__FileDeclaration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2925:1: ( rule__FileDeclaration__Group__2__Impl rule__FileDeclaration__Group__3 ) - // InternalApplicationConfiguration.g:2926:2: rule__FileDeclaration__Group__2__Impl rule__FileDeclaration__Group__3 + // InternalApplicationConfiguration.g:2931:1: ( rule__FileDeclaration__Group__2__Impl rule__FileDeclaration__Group__3 ) + // InternalApplicationConfiguration.g:2932:2: rule__FileDeclaration__Group__2__Impl rule__FileDeclaration__Group__3 { pushFollow(FOLLOW_11); rule__FileDeclaration__Group__2__Impl(); @@ -9699,20 +9726,20 @@ public final void rule__FileDeclaration__Group__2() throws RecognitionException // $ANTLR start "rule__FileDeclaration__Group__2__Impl" - // InternalApplicationConfiguration.g:2933:1: rule__FileDeclaration__Group__2__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:2939:1: rule__FileDeclaration__Group__2__Impl : ( '=' ) ; public final void rule__FileDeclaration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2937:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:2938:1: ( '=' ) + // InternalApplicationConfiguration.g:2943:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:2944:1: ( '=' ) { - // InternalApplicationConfiguration.g:2938:1: ( '=' ) - // InternalApplicationConfiguration.g:2939:2: '=' + // InternalApplicationConfiguration.g:2944:1: ( '=' ) + // InternalApplicationConfiguration.g:2945:2: '=' { before(grammarAccess.getFileDeclarationAccess().getEqualsSignKeyword_2()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getFileDeclarationAccess().getEqualsSignKeyword_2()); } @@ -9736,14 +9763,14 @@ public final void rule__FileDeclaration__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__FileDeclaration__Group__3" - // InternalApplicationConfiguration.g:2948:1: rule__FileDeclaration__Group__3 : rule__FileDeclaration__Group__3__Impl ; + // InternalApplicationConfiguration.g:2954:1: rule__FileDeclaration__Group__3 : rule__FileDeclaration__Group__3__Impl ; public final void rule__FileDeclaration__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2952:1: ( rule__FileDeclaration__Group__3__Impl ) - // InternalApplicationConfiguration.g:2953:2: rule__FileDeclaration__Group__3__Impl + // InternalApplicationConfiguration.g:2958:1: ( rule__FileDeclaration__Group__3__Impl ) + // InternalApplicationConfiguration.g:2959:2: rule__FileDeclaration__Group__3__Impl { pushFollow(FOLLOW_2); rule__FileDeclaration__Group__3__Impl(); @@ -9769,21 +9796,21 @@ public final void rule__FileDeclaration__Group__3() throws RecognitionException // $ANTLR start "rule__FileDeclaration__Group__3__Impl" - // InternalApplicationConfiguration.g:2959:1: rule__FileDeclaration__Group__3__Impl : ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) ; + // InternalApplicationConfiguration.g:2965:1: rule__FileDeclaration__Group__3__Impl : ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) ; public final void rule__FileDeclaration__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2963:1: ( ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) ) - // InternalApplicationConfiguration.g:2964:1: ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) + // InternalApplicationConfiguration.g:2969:1: ( ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) ) + // InternalApplicationConfiguration.g:2970:1: ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) { - // InternalApplicationConfiguration.g:2964:1: ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) - // InternalApplicationConfiguration.g:2965:2: ( rule__FileDeclaration__SpecificationAssignment_3 ) + // InternalApplicationConfiguration.g:2970:1: ( ( rule__FileDeclaration__SpecificationAssignment_3 ) ) + // InternalApplicationConfiguration.g:2971:2: ( rule__FileDeclaration__SpecificationAssignment_3 ) { before(grammarAccess.getFileDeclarationAccess().getSpecificationAssignment_3()); - // InternalApplicationConfiguration.g:2966:2: ( rule__FileDeclaration__SpecificationAssignment_3 ) - // InternalApplicationConfiguration.g:2966:3: rule__FileDeclaration__SpecificationAssignment_3 + // InternalApplicationConfiguration.g:2972:2: ( rule__FileDeclaration__SpecificationAssignment_3 ) + // InternalApplicationConfiguration.g:2972:3: rule__FileDeclaration__SpecificationAssignment_3 { pushFollow(FOLLOW_2); rule__FileDeclaration__SpecificationAssignment_3(); @@ -9816,14 +9843,14 @@ public final void rule__FileDeclaration__Group__3__Impl() throws RecognitionExce // $ANTLR start "rule__MetamodelSpecification__Group__0" - // InternalApplicationConfiguration.g:2975:1: rule__MetamodelSpecification__Group__0 : rule__MetamodelSpecification__Group__0__Impl rule__MetamodelSpecification__Group__1 ; + // InternalApplicationConfiguration.g:2981:1: rule__MetamodelSpecification__Group__0 : rule__MetamodelSpecification__Group__0__Impl rule__MetamodelSpecification__Group__1 ; public final void rule__MetamodelSpecification__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2979:1: ( rule__MetamodelSpecification__Group__0__Impl rule__MetamodelSpecification__Group__1 ) - // InternalApplicationConfiguration.g:2980:2: rule__MetamodelSpecification__Group__0__Impl rule__MetamodelSpecification__Group__1 + // InternalApplicationConfiguration.g:2985:1: ( rule__MetamodelSpecification__Group__0__Impl rule__MetamodelSpecification__Group__1 ) + // InternalApplicationConfiguration.g:2986:2: rule__MetamodelSpecification__Group__0__Impl rule__MetamodelSpecification__Group__1 { pushFollow(FOLLOW_14); rule__MetamodelSpecification__Group__0__Impl(); @@ -9854,20 +9881,20 @@ public final void rule__MetamodelSpecification__Group__0() throws RecognitionExc // $ANTLR start "rule__MetamodelSpecification__Group__0__Impl" - // InternalApplicationConfiguration.g:2987:1: rule__MetamodelSpecification__Group__0__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:2993:1: rule__MetamodelSpecification__Group__0__Impl : ( '{' ) ; public final void rule__MetamodelSpecification__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:2991:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:2992:1: ( '{' ) + // InternalApplicationConfiguration.g:2997:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:2998:1: ( '{' ) { - // InternalApplicationConfiguration.g:2992:1: ( '{' ) - // InternalApplicationConfiguration.g:2993:2: '{' + // InternalApplicationConfiguration.g:2998:1: ( '{' ) + // InternalApplicationConfiguration.g:2999:2: '{' { before(grammarAccess.getMetamodelSpecificationAccess().getLeftCurlyBracketKeyword_0()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getMetamodelSpecificationAccess().getLeftCurlyBracketKeyword_0()); } @@ -9891,14 +9918,14 @@ public final void rule__MetamodelSpecification__Group__0__Impl() throws Recognit // $ANTLR start "rule__MetamodelSpecification__Group__1" - // InternalApplicationConfiguration.g:3002:1: rule__MetamodelSpecification__Group__1 : rule__MetamodelSpecification__Group__1__Impl rule__MetamodelSpecification__Group__2 ; + // InternalApplicationConfiguration.g:3008:1: rule__MetamodelSpecification__Group__1 : rule__MetamodelSpecification__Group__1__Impl rule__MetamodelSpecification__Group__2 ; public final void rule__MetamodelSpecification__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3006:1: ( rule__MetamodelSpecification__Group__1__Impl rule__MetamodelSpecification__Group__2 ) - // InternalApplicationConfiguration.g:3007:2: rule__MetamodelSpecification__Group__1__Impl rule__MetamodelSpecification__Group__2 + // InternalApplicationConfiguration.g:3012:1: ( rule__MetamodelSpecification__Group__1__Impl rule__MetamodelSpecification__Group__2 ) + // InternalApplicationConfiguration.g:3013:2: rule__MetamodelSpecification__Group__1__Impl rule__MetamodelSpecification__Group__2 { pushFollow(FOLLOW_15); rule__MetamodelSpecification__Group__1__Impl(); @@ -9929,21 +9956,21 @@ public final void rule__MetamodelSpecification__Group__1() throws RecognitionExc // $ANTLR start "rule__MetamodelSpecification__Group__1__Impl" - // InternalApplicationConfiguration.g:3014:1: rule__MetamodelSpecification__Group__1__Impl : ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:3020:1: rule__MetamodelSpecification__Group__1__Impl : ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) ; public final void rule__MetamodelSpecification__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3018:1: ( ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:3019:1: ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) + // InternalApplicationConfiguration.g:3024:1: ( ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:3025:1: ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) { - // InternalApplicationConfiguration.g:3019:1: ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) - // InternalApplicationConfiguration.g:3020:2: ( rule__MetamodelSpecification__EntriesAssignment_1 ) + // InternalApplicationConfiguration.g:3025:1: ( ( rule__MetamodelSpecification__EntriesAssignment_1 ) ) + // InternalApplicationConfiguration.g:3026:2: ( rule__MetamodelSpecification__EntriesAssignment_1 ) { before(grammarAccess.getMetamodelSpecificationAccess().getEntriesAssignment_1()); - // InternalApplicationConfiguration.g:3021:2: ( rule__MetamodelSpecification__EntriesAssignment_1 ) - // InternalApplicationConfiguration.g:3021:3: rule__MetamodelSpecification__EntriesAssignment_1 + // InternalApplicationConfiguration.g:3027:2: ( rule__MetamodelSpecification__EntriesAssignment_1 ) + // InternalApplicationConfiguration.g:3027:3: rule__MetamodelSpecification__EntriesAssignment_1 { pushFollow(FOLLOW_2); rule__MetamodelSpecification__EntriesAssignment_1(); @@ -9976,14 +10003,14 @@ public final void rule__MetamodelSpecification__Group__1__Impl() throws Recognit // $ANTLR start "rule__MetamodelSpecification__Group__2" - // InternalApplicationConfiguration.g:3029:1: rule__MetamodelSpecification__Group__2 : rule__MetamodelSpecification__Group__2__Impl rule__MetamodelSpecification__Group__3 ; + // InternalApplicationConfiguration.g:3035:1: rule__MetamodelSpecification__Group__2 : rule__MetamodelSpecification__Group__2__Impl rule__MetamodelSpecification__Group__3 ; public final void rule__MetamodelSpecification__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3033:1: ( rule__MetamodelSpecification__Group__2__Impl rule__MetamodelSpecification__Group__3 ) - // InternalApplicationConfiguration.g:3034:2: rule__MetamodelSpecification__Group__2__Impl rule__MetamodelSpecification__Group__3 + // InternalApplicationConfiguration.g:3039:1: ( rule__MetamodelSpecification__Group__2__Impl rule__MetamodelSpecification__Group__3 ) + // InternalApplicationConfiguration.g:3040:2: rule__MetamodelSpecification__Group__2__Impl rule__MetamodelSpecification__Group__3 { pushFollow(FOLLOW_15); rule__MetamodelSpecification__Group__2__Impl(); @@ -10014,33 +10041,33 @@ public final void rule__MetamodelSpecification__Group__2() throws RecognitionExc // $ANTLR start "rule__MetamodelSpecification__Group__2__Impl" - // InternalApplicationConfiguration.g:3041:1: rule__MetamodelSpecification__Group__2__Impl : ( ( rule__MetamodelSpecification__Group_2__0 )* ) ; + // InternalApplicationConfiguration.g:3047:1: rule__MetamodelSpecification__Group__2__Impl : ( ( rule__MetamodelSpecification__Group_2__0 )* ) ; public final void rule__MetamodelSpecification__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3045:1: ( ( ( rule__MetamodelSpecification__Group_2__0 )* ) ) - // InternalApplicationConfiguration.g:3046:1: ( ( rule__MetamodelSpecification__Group_2__0 )* ) + // InternalApplicationConfiguration.g:3051:1: ( ( ( rule__MetamodelSpecification__Group_2__0 )* ) ) + // InternalApplicationConfiguration.g:3052:1: ( ( rule__MetamodelSpecification__Group_2__0 )* ) { - // InternalApplicationConfiguration.g:3046:1: ( ( rule__MetamodelSpecification__Group_2__0 )* ) - // InternalApplicationConfiguration.g:3047:2: ( rule__MetamodelSpecification__Group_2__0 )* + // InternalApplicationConfiguration.g:3052:1: ( ( rule__MetamodelSpecification__Group_2__0 )* ) + // InternalApplicationConfiguration.g:3053:2: ( rule__MetamodelSpecification__Group_2__0 )* { before(grammarAccess.getMetamodelSpecificationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:3048:2: ( rule__MetamodelSpecification__Group_2__0 )* + // InternalApplicationConfiguration.g:3054:2: ( rule__MetamodelSpecification__Group_2__0 )* loop34: do { int alt34=2; int LA34_0 = input.LA(1); - if ( (LA34_0==26) ) { + if ( (LA34_0==27) ) { alt34=1; } switch (alt34) { case 1 : - // InternalApplicationConfiguration.g:3048:3: rule__MetamodelSpecification__Group_2__0 + // InternalApplicationConfiguration.g:3054:3: rule__MetamodelSpecification__Group_2__0 { pushFollow(FOLLOW_16); rule__MetamodelSpecification__Group_2__0(); @@ -10079,14 +10106,14 @@ public final void rule__MetamodelSpecification__Group__2__Impl() throws Recognit // $ANTLR start "rule__MetamodelSpecification__Group__3" - // InternalApplicationConfiguration.g:3056:1: rule__MetamodelSpecification__Group__3 : rule__MetamodelSpecification__Group__3__Impl ; + // InternalApplicationConfiguration.g:3062:1: rule__MetamodelSpecification__Group__3 : rule__MetamodelSpecification__Group__3__Impl ; public final void rule__MetamodelSpecification__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3060:1: ( rule__MetamodelSpecification__Group__3__Impl ) - // InternalApplicationConfiguration.g:3061:2: rule__MetamodelSpecification__Group__3__Impl + // InternalApplicationConfiguration.g:3066:1: ( rule__MetamodelSpecification__Group__3__Impl ) + // InternalApplicationConfiguration.g:3067:2: rule__MetamodelSpecification__Group__3__Impl { pushFollow(FOLLOW_2); rule__MetamodelSpecification__Group__3__Impl(); @@ -10112,20 +10139,20 @@ public final void rule__MetamodelSpecification__Group__3() throws RecognitionExc // $ANTLR start "rule__MetamodelSpecification__Group__3__Impl" - // InternalApplicationConfiguration.g:3067:1: rule__MetamodelSpecification__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:3073:1: rule__MetamodelSpecification__Group__3__Impl : ( '}' ) ; public final void rule__MetamodelSpecification__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3071:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:3072:1: ( '}' ) + // InternalApplicationConfiguration.g:3077:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:3078:1: ( '}' ) { - // InternalApplicationConfiguration.g:3072:1: ( '}' ) - // InternalApplicationConfiguration.g:3073:2: '}' + // InternalApplicationConfiguration.g:3078:1: ( '}' ) + // InternalApplicationConfiguration.g:3079:2: '}' { before(grammarAccess.getMetamodelSpecificationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getMetamodelSpecificationAccess().getRightCurlyBracketKeyword_3()); } @@ -10149,14 +10176,14 @@ public final void rule__MetamodelSpecification__Group__3__Impl() throws Recognit // $ANTLR start "rule__MetamodelSpecification__Group_2__0" - // InternalApplicationConfiguration.g:3083:1: rule__MetamodelSpecification__Group_2__0 : rule__MetamodelSpecification__Group_2__0__Impl rule__MetamodelSpecification__Group_2__1 ; + // InternalApplicationConfiguration.g:3089:1: rule__MetamodelSpecification__Group_2__0 : rule__MetamodelSpecification__Group_2__0__Impl rule__MetamodelSpecification__Group_2__1 ; public final void rule__MetamodelSpecification__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3087:1: ( rule__MetamodelSpecification__Group_2__0__Impl rule__MetamodelSpecification__Group_2__1 ) - // InternalApplicationConfiguration.g:3088:2: rule__MetamodelSpecification__Group_2__0__Impl rule__MetamodelSpecification__Group_2__1 + // InternalApplicationConfiguration.g:3093:1: ( rule__MetamodelSpecification__Group_2__0__Impl rule__MetamodelSpecification__Group_2__1 ) + // InternalApplicationConfiguration.g:3094:2: rule__MetamodelSpecification__Group_2__0__Impl rule__MetamodelSpecification__Group_2__1 { pushFollow(FOLLOW_14); rule__MetamodelSpecification__Group_2__0__Impl(); @@ -10187,20 +10214,20 @@ public final void rule__MetamodelSpecification__Group_2__0() throws RecognitionE // $ANTLR start "rule__MetamodelSpecification__Group_2__0__Impl" - // InternalApplicationConfiguration.g:3095:1: rule__MetamodelSpecification__Group_2__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:3101:1: rule__MetamodelSpecification__Group_2__0__Impl : ( ',' ) ; public final void rule__MetamodelSpecification__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3099:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:3100:1: ( ',' ) + // InternalApplicationConfiguration.g:3105:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:3106:1: ( ',' ) { - // InternalApplicationConfiguration.g:3100:1: ( ',' ) - // InternalApplicationConfiguration.g:3101:2: ',' + // InternalApplicationConfiguration.g:3106:1: ( ',' ) + // InternalApplicationConfiguration.g:3107:2: ',' { before(grammarAccess.getMetamodelSpecificationAccess().getCommaKeyword_2_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getMetamodelSpecificationAccess().getCommaKeyword_2_0()); } @@ -10224,14 +10251,14 @@ public final void rule__MetamodelSpecification__Group_2__0__Impl() throws Recogn // $ANTLR start "rule__MetamodelSpecification__Group_2__1" - // InternalApplicationConfiguration.g:3110:1: rule__MetamodelSpecification__Group_2__1 : rule__MetamodelSpecification__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:3116:1: rule__MetamodelSpecification__Group_2__1 : rule__MetamodelSpecification__Group_2__1__Impl ; public final void rule__MetamodelSpecification__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3114:1: ( rule__MetamodelSpecification__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:3115:2: rule__MetamodelSpecification__Group_2__1__Impl + // InternalApplicationConfiguration.g:3120:1: ( rule__MetamodelSpecification__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:3121:2: rule__MetamodelSpecification__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__MetamodelSpecification__Group_2__1__Impl(); @@ -10257,21 +10284,21 @@ public final void rule__MetamodelSpecification__Group_2__1() throws RecognitionE // $ANTLR start "rule__MetamodelSpecification__Group_2__1__Impl" - // InternalApplicationConfiguration.g:3121:1: rule__MetamodelSpecification__Group_2__1__Impl : ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) ; + // InternalApplicationConfiguration.g:3127:1: rule__MetamodelSpecification__Group_2__1__Impl : ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) ; public final void rule__MetamodelSpecification__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3125:1: ( ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) ) - // InternalApplicationConfiguration.g:3126:1: ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:3131:1: ( ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) ) + // InternalApplicationConfiguration.g:3132:1: ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) { - // InternalApplicationConfiguration.g:3126:1: ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) - // InternalApplicationConfiguration.g:3127:2: ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) + // InternalApplicationConfiguration.g:3132:1: ( ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:3133:2: ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) { before(grammarAccess.getMetamodelSpecificationAccess().getEntriesAssignment_2_1()); - // InternalApplicationConfiguration.g:3128:2: ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) - // InternalApplicationConfiguration.g:3128:3: rule__MetamodelSpecification__EntriesAssignment_2_1 + // InternalApplicationConfiguration.g:3134:2: ( rule__MetamodelSpecification__EntriesAssignment_2_1 ) + // InternalApplicationConfiguration.g:3134:3: rule__MetamodelSpecification__EntriesAssignment_2_1 { pushFollow(FOLLOW_2); rule__MetamodelSpecification__EntriesAssignment_2_1(); @@ -10304,14 +10331,14 @@ public final void rule__MetamodelSpecification__Group_2__1__Impl() throws Recogn // $ANTLR start "rule__AllPackageEntry__Group__0" - // InternalApplicationConfiguration.g:3137:1: rule__AllPackageEntry__Group__0 : rule__AllPackageEntry__Group__0__Impl rule__AllPackageEntry__Group__1 ; + // InternalApplicationConfiguration.g:3143:1: rule__AllPackageEntry__Group__0 : rule__AllPackageEntry__Group__0__Impl rule__AllPackageEntry__Group__1 ; public final void rule__AllPackageEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3141:1: ( rule__AllPackageEntry__Group__0__Impl rule__AllPackageEntry__Group__1 ) - // InternalApplicationConfiguration.g:3142:2: rule__AllPackageEntry__Group__0__Impl rule__AllPackageEntry__Group__1 + // InternalApplicationConfiguration.g:3147:1: ( rule__AllPackageEntry__Group__0__Impl rule__AllPackageEntry__Group__1 ) + // InternalApplicationConfiguration.g:3148:2: rule__AllPackageEntry__Group__0__Impl rule__AllPackageEntry__Group__1 { pushFollow(FOLLOW_8); rule__AllPackageEntry__Group__0__Impl(); @@ -10342,20 +10369,20 @@ public final void rule__AllPackageEntry__Group__0() throws RecognitionException // $ANTLR start "rule__AllPackageEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:3149:1: rule__AllPackageEntry__Group__0__Impl : ( 'package' ) ; + // InternalApplicationConfiguration.g:3155:1: rule__AllPackageEntry__Group__0__Impl : ( 'package' ) ; public final void rule__AllPackageEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3153:1: ( ( 'package' ) ) - // InternalApplicationConfiguration.g:3154:1: ( 'package' ) + // InternalApplicationConfiguration.g:3159:1: ( ( 'package' ) ) + // InternalApplicationConfiguration.g:3160:1: ( 'package' ) { - // InternalApplicationConfiguration.g:3154:1: ( 'package' ) - // InternalApplicationConfiguration.g:3155:2: 'package' + // InternalApplicationConfiguration.g:3160:1: ( 'package' ) + // InternalApplicationConfiguration.g:3161:2: 'package' { before(grammarAccess.getAllPackageEntryAccess().getPackageKeyword_0()); - match(input,27,FOLLOW_2); + match(input,28,FOLLOW_2); after(grammarAccess.getAllPackageEntryAccess().getPackageKeyword_0()); } @@ -10379,14 +10406,14 @@ public final void rule__AllPackageEntry__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__AllPackageEntry__Group__1" - // InternalApplicationConfiguration.g:3164:1: rule__AllPackageEntry__Group__1 : rule__AllPackageEntry__Group__1__Impl rule__AllPackageEntry__Group__2 ; + // InternalApplicationConfiguration.g:3170:1: rule__AllPackageEntry__Group__1 : rule__AllPackageEntry__Group__1__Impl rule__AllPackageEntry__Group__2 ; public final void rule__AllPackageEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3168:1: ( rule__AllPackageEntry__Group__1__Impl rule__AllPackageEntry__Group__2 ) - // InternalApplicationConfiguration.g:3169:2: rule__AllPackageEntry__Group__1__Impl rule__AllPackageEntry__Group__2 + // InternalApplicationConfiguration.g:3174:1: ( rule__AllPackageEntry__Group__1__Impl rule__AllPackageEntry__Group__2 ) + // InternalApplicationConfiguration.g:3175:2: rule__AllPackageEntry__Group__1__Impl rule__AllPackageEntry__Group__2 { pushFollow(FOLLOW_17); rule__AllPackageEntry__Group__1__Impl(); @@ -10417,21 +10444,21 @@ public final void rule__AllPackageEntry__Group__1() throws RecognitionException // $ANTLR start "rule__AllPackageEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:3176:1: rule__AllPackageEntry__Group__1__Impl : ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:3182:1: rule__AllPackageEntry__Group__1__Impl : ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) ; public final void rule__AllPackageEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3180:1: ( ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:3181:1: ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) + // InternalApplicationConfiguration.g:3186:1: ( ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:3187:1: ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) { - // InternalApplicationConfiguration.g:3181:1: ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) - // InternalApplicationConfiguration.g:3182:2: ( rule__AllPackageEntry__PackageAssignment_1 ) + // InternalApplicationConfiguration.g:3187:1: ( ( rule__AllPackageEntry__PackageAssignment_1 ) ) + // InternalApplicationConfiguration.g:3188:2: ( rule__AllPackageEntry__PackageAssignment_1 ) { before(grammarAccess.getAllPackageEntryAccess().getPackageAssignment_1()); - // InternalApplicationConfiguration.g:3183:2: ( rule__AllPackageEntry__PackageAssignment_1 ) - // InternalApplicationConfiguration.g:3183:3: rule__AllPackageEntry__PackageAssignment_1 + // InternalApplicationConfiguration.g:3189:2: ( rule__AllPackageEntry__PackageAssignment_1 ) + // InternalApplicationConfiguration.g:3189:3: rule__AllPackageEntry__PackageAssignment_1 { pushFollow(FOLLOW_2); rule__AllPackageEntry__PackageAssignment_1(); @@ -10464,14 +10491,14 @@ public final void rule__AllPackageEntry__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__AllPackageEntry__Group__2" - // InternalApplicationConfiguration.g:3191:1: rule__AllPackageEntry__Group__2 : rule__AllPackageEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:3197:1: rule__AllPackageEntry__Group__2 : rule__AllPackageEntry__Group__2__Impl ; public final void rule__AllPackageEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3195:1: ( rule__AllPackageEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:3196:2: rule__AllPackageEntry__Group__2__Impl + // InternalApplicationConfiguration.g:3201:1: ( rule__AllPackageEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:3202:2: rule__AllPackageEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__AllPackageEntry__Group__2__Impl(); @@ -10497,29 +10524,29 @@ public final void rule__AllPackageEntry__Group__2() throws RecognitionException // $ANTLR start "rule__AllPackageEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:3202:1: rule__AllPackageEntry__Group__2__Impl : ( ( rule__AllPackageEntry__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:3208:1: rule__AllPackageEntry__Group__2__Impl : ( ( rule__AllPackageEntry__Group_2__0 )? ) ; public final void rule__AllPackageEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3206:1: ( ( ( rule__AllPackageEntry__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:3207:1: ( ( rule__AllPackageEntry__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3212:1: ( ( ( rule__AllPackageEntry__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:3213:1: ( ( rule__AllPackageEntry__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:3207:1: ( ( rule__AllPackageEntry__Group_2__0 )? ) - // InternalApplicationConfiguration.g:3208:2: ( rule__AllPackageEntry__Group_2__0 )? + // InternalApplicationConfiguration.g:3213:1: ( ( rule__AllPackageEntry__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3214:2: ( rule__AllPackageEntry__Group_2__0 )? { before(grammarAccess.getAllPackageEntryAccess().getGroup_2()); - // InternalApplicationConfiguration.g:3209:2: ( rule__AllPackageEntry__Group_2__0 )? + // InternalApplicationConfiguration.g:3215:2: ( rule__AllPackageEntry__Group_2__0 )? int alt35=2; int LA35_0 = input.LA(1); - if ( (LA35_0==28) ) { + if ( (LA35_0==29) ) { alt35=1; } switch (alt35) { case 1 : - // InternalApplicationConfiguration.g:3209:3: rule__AllPackageEntry__Group_2__0 + // InternalApplicationConfiguration.g:3215:3: rule__AllPackageEntry__Group_2__0 { pushFollow(FOLLOW_2); rule__AllPackageEntry__Group_2__0(); @@ -10555,14 +10582,14 @@ public final void rule__AllPackageEntry__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__AllPackageEntry__Group_2__0" - // InternalApplicationConfiguration.g:3218:1: rule__AllPackageEntry__Group_2__0 : rule__AllPackageEntry__Group_2__0__Impl rule__AllPackageEntry__Group_2__1 ; + // InternalApplicationConfiguration.g:3224:1: rule__AllPackageEntry__Group_2__0 : rule__AllPackageEntry__Group_2__0__Impl rule__AllPackageEntry__Group_2__1 ; public final void rule__AllPackageEntry__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3222:1: ( rule__AllPackageEntry__Group_2__0__Impl rule__AllPackageEntry__Group_2__1 ) - // InternalApplicationConfiguration.g:3223:2: rule__AllPackageEntry__Group_2__0__Impl rule__AllPackageEntry__Group_2__1 + // InternalApplicationConfiguration.g:3228:1: ( rule__AllPackageEntry__Group_2__0__Impl rule__AllPackageEntry__Group_2__1 ) + // InternalApplicationConfiguration.g:3229:2: rule__AllPackageEntry__Group_2__0__Impl rule__AllPackageEntry__Group_2__1 { pushFollow(FOLLOW_18); rule__AllPackageEntry__Group_2__0__Impl(); @@ -10593,20 +10620,20 @@ public final void rule__AllPackageEntry__Group_2__0() throws RecognitionExceptio // $ANTLR start "rule__AllPackageEntry__Group_2__0__Impl" - // InternalApplicationConfiguration.g:3230:1: rule__AllPackageEntry__Group_2__0__Impl : ( 'excluding' ) ; + // InternalApplicationConfiguration.g:3236:1: rule__AllPackageEntry__Group_2__0__Impl : ( 'excluding' ) ; public final void rule__AllPackageEntry__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3234:1: ( ( 'excluding' ) ) - // InternalApplicationConfiguration.g:3235:1: ( 'excluding' ) + // InternalApplicationConfiguration.g:3240:1: ( ( 'excluding' ) ) + // InternalApplicationConfiguration.g:3241:1: ( 'excluding' ) { - // InternalApplicationConfiguration.g:3235:1: ( 'excluding' ) - // InternalApplicationConfiguration.g:3236:2: 'excluding' + // InternalApplicationConfiguration.g:3241:1: ( 'excluding' ) + // InternalApplicationConfiguration.g:3242:2: 'excluding' { before(grammarAccess.getAllPackageEntryAccess().getExcludingKeyword_2_0()); - match(input,28,FOLLOW_2); + match(input,29,FOLLOW_2); after(grammarAccess.getAllPackageEntryAccess().getExcludingKeyword_2_0()); } @@ -10630,14 +10657,14 @@ public final void rule__AllPackageEntry__Group_2__0__Impl() throws RecognitionEx // $ANTLR start "rule__AllPackageEntry__Group_2__1" - // InternalApplicationConfiguration.g:3245:1: rule__AllPackageEntry__Group_2__1 : rule__AllPackageEntry__Group_2__1__Impl rule__AllPackageEntry__Group_2__2 ; + // InternalApplicationConfiguration.g:3251:1: rule__AllPackageEntry__Group_2__1 : rule__AllPackageEntry__Group_2__1__Impl rule__AllPackageEntry__Group_2__2 ; public final void rule__AllPackageEntry__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3249:1: ( rule__AllPackageEntry__Group_2__1__Impl rule__AllPackageEntry__Group_2__2 ) - // InternalApplicationConfiguration.g:3250:2: rule__AllPackageEntry__Group_2__1__Impl rule__AllPackageEntry__Group_2__2 + // InternalApplicationConfiguration.g:3255:1: ( rule__AllPackageEntry__Group_2__1__Impl rule__AllPackageEntry__Group_2__2 ) + // InternalApplicationConfiguration.g:3256:2: rule__AllPackageEntry__Group_2__1__Impl rule__AllPackageEntry__Group_2__2 { pushFollow(FOLLOW_8); rule__AllPackageEntry__Group_2__1__Impl(); @@ -10668,20 +10695,20 @@ public final void rule__AllPackageEntry__Group_2__1() throws RecognitionExceptio // $ANTLR start "rule__AllPackageEntry__Group_2__1__Impl" - // InternalApplicationConfiguration.g:3257:1: rule__AllPackageEntry__Group_2__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:3263:1: rule__AllPackageEntry__Group_2__1__Impl : ( '{' ) ; public final void rule__AllPackageEntry__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3261:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:3262:1: ( '{' ) + // InternalApplicationConfiguration.g:3267:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:3268:1: ( '{' ) { - // InternalApplicationConfiguration.g:3262:1: ( '{' ) - // InternalApplicationConfiguration.g:3263:2: '{' + // InternalApplicationConfiguration.g:3268:1: ( '{' ) + // InternalApplicationConfiguration.g:3269:2: '{' { before(grammarAccess.getAllPackageEntryAccess().getLeftCurlyBracketKeyword_2_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getAllPackageEntryAccess().getLeftCurlyBracketKeyword_2_1()); } @@ -10705,14 +10732,14 @@ public final void rule__AllPackageEntry__Group_2__1__Impl() throws RecognitionEx // $ANTLR start "rule__AllPackageEntry__Group_2__2" - // InternalApplicationConfiguration.g:3272:1: rule__AllPackageEntry__Group_2__2 : rule__AllPackageEntry__Group_2__2__Impl rule__AllPackageEntry__Group_2__3 ; + // InternalApplicationConfiguration.g:3278:1: rule__AllPackageEntry__Group_2__2 : rule__AllPackageEntry__Group_2__2__Impl rule__AllPackageEntry__Group_2__3 ; public final void rule__AllPackageEntry__Group_2__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3276:1: ( rule__AllPackageEntry__Group_2__2__Impl rule__AllPackageEntry__Group_2__3 ) - // InternalApplicationConfiguration.g:3277:2: rule__AllPackageEntry__Group_2__2__Impl rule__AllPackageEntry__Group_2__3 + // InternalApplicationConfiguration.g:3282:1: ( rule__AllPackageEntry__Group_2__2__Impl rule__AllPackageEntry__Group_2__3 ) + // InternalApplicationConfiguration.g:3283:2: rule__AllPackageEntry__Group_2__2__Impl rule__AllPackageEntry__Group_2__3 { pushFollow(FOLLOW_15); rule__AllPackageEntry__Group_2__2__Impl(); @@ -10743,21 +10770,21 @@ public final void rule__AllPackageEntry__Group_2__2() throws RecognitionExceptio // $ANTLR start "rule__AllPackageEntry__Group_2__2__Impl" - // InternalApplicationConfiguration.g:3284:1: rule__AllPackageEntry__Group_2__2__Impl : ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) ; + // InternalApplicationConfiguration.g:3290:1: rule__AllPackageEntry__Group_2__2__Impl : ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) ; public final void rule__AllPackageEntry__Group_2__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3288:1: ( ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) ) - // InternalApplicationConfiguration.g:3289:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) + // InternalApplicationConfiguration.g:3294:1: ( ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) ) + // InternalApplicationConfiguration.g:3295:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) { - // InternalApplicationConfiguration.g:3289:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) - // InternalApplicationConfiguration.g:3290:2: ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) + // InternalApplicationConfiguration.g:3295:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) ) + // InternalApplicationConfiguration.g:3296:2: ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) { before(grammarAccess.getAllPackageEntryAccess().getExclusionAssignment_2_2()); - // InternalApplicationConfiguration.g:3291:2: ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) - // InternalApplicationConfiguration.g:3291:3: rule__AllPackageEntry__ExclusionAssignment_2_2 + // InternalApplicationConfiguration.g:3297:2: ( rule__AllPackageEntry__ExclusionAssignment_2_2 ) + // InternalApplicationConfiguration.g:3297:3: rule__AllPackageEntry__ExclusionAssignment_2_2 { pushFollow(FOLLOW_2); rule__AllPackageEntry__ExclusionAssignment_2_2(); @@ -10790,14 +10817,14 @@ public final void rule__AllPackageEntry__Group_2__2__Impl() throws RecognitionEx // $ANTLR start "rule__AllPackageEntry__Group_2__3" - // InternalApplicationConfiguration.g:3299:1: rule__AllPackageEntry__Group_2__3 : rule__AllPackageEntry__Group_2__3__Impl rule__AllPackageEntry__Group_2__4 ; + // InternalApplicationConfiguration.g:3305:1: rule__AllPackageEntry__Group_2__3 : rule__AllPackageEntry__Group_2__3__Impl rule__AllPackageEntry__Group_2__4 ; public final void rule__AllPackageEntry__Group_2__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3303:1: ( rule__AllPackageEntry__Group_2__3__Impl rule__AllPackageEntry__Group_2__4 ) - // InternalApplicationConfiguration.g:3304:2: rule__AllPackageEntry__Group_2__3__Impl rule__AllPackageEntry__Group_2__4 + // InternalApplicationConfiguration.g:3309:1: ( rule__AllPackageEntry__Group_2__3__Impl rule__AllPackageEntry__Group_2__4 ) + // InternalApplicationConfiguration.g:3310:2: rule__AllPackageEntry__Group_2__3__Impl rule__AllPackageEntry__Group_2__4 { pushFollow(FOLLOW_15); rule__AllPackageEntry__Group_2__3__Impl(); @@ -10828,33 +10855,33 @@ public final void rule__AllPackageEntry__Group_2__3() throws RecognitionExceptio // $ANTLR start "rule__AllPackageEntry__Group_2__3__Impl" - // InternalApplicationConfiguration.g:3311:1: rule__AllPackageEntry__Group_2__3__Impl : ( ( rule__AllPackageEntry__Group_2_3__0 )* ) ; + // InternalApplicationConfiguration.g:3317:1: rule__AllPackageEntry__Group_2__3__Impl : ( ( rule__AllPackageEntry__Group_2_3__0 )* ) ; public final void rule__AllPackageEntry__Group_2__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3315:1: ( ( ( rule__AllPackageEntry__Group_2_3__0 )* ) ) - // InternalApplicationConfiguration.g:3316:1: ( ( rule__AllPackageEntry__Group_2_3__0 )* ) + // InternalApplicationConfiguration.g:3321:1: ( ( ( rule__AllPackageEntry__Group_2_3__0 )* ) ) + // InternalApplicationConfiguration.g:3322:1: ( ( rule__AllPackageEntry__Group_2_3__0 )* ) { - // InternalApplicationConfiguration.g:3316:1: ( ( rule__AllPackageEntry__Group_2_3__0 )* ) - // InternalApplicationConfiguration.g:3317:2: ( rule__AllPackageEntry__Group_2_3__0 )* + // InternalApplicationConfiguration.g:3322:1: ( ( rule__AllPackageEntry__Group_2_3__0 )* ) + // InternalApplicationConfiguration.g:3323:2: ( rule__AllPackageEntry__Group_2_3__0 )* { before(grammarAccess.getAllPackageEntryAccess().getGroup_2_3()); - // InternalApplicationConfiguration.g:3318:2: ( rule__AllPackageEntry__Group_2_3__0 )* + // InternalApplicationConfiguration.g:3324:2: ( rule__AllPackageEntry__Group_2_3__0 )* loop36: do { int alt36=2; int LA36_0 = input.LA(1); - if ( (LA36_0==26) ) { + if ( (LA36_0==27) ) { alt36=1; } switch (alt36) { case 1 : - // InternalApplicationConfiguration.g:3318:3: rule__AllPackageEntry__Group_2_3__0 + // InternalApplicationConfiguration.g:3324:3: rule__AllPackageEntry__Group_2_3__0 { pushFollow(FOLLOW_16); rule__AllPackageEntry__Group_2_3__0(); @@ -10893,14 +10920,14 @@ public final void rule__AllPackageEntry__Group_2__3__Impl() throws RecognitionEx // $ANTLR start "rule__AllPackageEntry__Group_2__4" - // InternalApplicationConfiguration.g:3326:1: rule__AllPackageEntry__Group_2__4 : rule__AllPackageEntry__Group_2__4__Impl ; + // InternalApplicationConfiguration.g:3332:1: rule__AllPackageEntry__Group_2__4 : rule__AllPackageEntry__Group_2__4__Impl ; public final void rule__AllPackageEntry__Group_2__4() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3330:1: ( rule__AllPackageEntry__Group_2__4__Impl ) - // InternalApplicationConfiguration.g:3331:2: rule__AllPackageEntry__Group_2__4__Impl + // InternalApplicationConfiguration.g:3336:1: ( rule__AllPackageEntry__Group_2__4__Impl ) + // InternalApplicationConfiguration.g:3337:2: rule__AllPackageEntry__Group_2__4__Impl { pushFollow(FOLLOW_2); rule__AllPackageEntry__Group_2__4__Impl(); @@ -10926,20 +10953,20 @@ public final void rule__AllPackageEntry__Group_2__4() throws RecognitionExceptio // $ANTLR start "rule__AllPackageEntry__Group_2__4__Impl" - // InternalApplicationConfiguration.g:3337:1: rule__AllPackageEntry__Group_2__4__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:3343:1: rule__AllPackageEntry__Group_2__4__Impl : ( '}' ) ; public final void rule__AllPackageEntry__Group_2__4__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3341:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:3342:1: ( '}' ) + // InternalApplicationConfiguration.g:3347:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:3348:1: ( '}' ) { - // InternalApplicationConfiguration.g:3342:1: ( '}' ) - // InternalApplicationConfiguration.g:3343:2: '}' + // InternalApplicationConfiguration.g:3348:1: ( '}' ) + // InternalApplicationConfiguration.g:3349:2: '}' { before(grammarAccess.getAllPackageEntryAccess().getRightCurlyBracketKeyword_2_4()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getAllPackageEntryAccess().getRightCurlyBracketKeyword_2_4()); } @@ -10963,14 +10990,14 @@ public final void rule__AllPackageEntry__Group_2__4__Impl() throws RecognitionEx // $ANTLR start "rule__AllPackageEntry__Group_2_3__0" - // InternalApplicationConfiguration.g:3353:1: rule__AllPackageEntry__Group_2_3__0 : rule__AllPackageEntry__Group_2_3__0__Impl rule__AllPackageEntry__Group_2_3__1 ; + // InternalApplicationConfiguration.g:3359:1: rule__AllPackageEntry__Group_2_3__0 : rule__AllPackageEntry__Group_2_3__0__Impl rule__AllPackageEntry__Group_2_3__1 ; public final void rule__AllPackageEntry__Group_2_3__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3357:1: ( rule__AllPackageEntry__Group_2_3__0__Impl rule__AllPackageEntry__Group_2_3__1 ) - // InternalApplicationConfiguration.g:3358:2: rule__AllPackageEntry__Group_2_3__0__Impl rule__AllPackageEntry__Group_2_3__1 + // InternalApplicationConfiguration.g:3363:1: ( rule__AllPackageEntry__Group_2_3__0__Impl rule__AllPackageEntry__Group_2_3__1 ) + // InternalApplicationConfiguration.g:3364:2: rule__AllPackageEntry__Group_2_3__0__Impl rule__AllPackageEntry__Group_2_3__1 { pushFollow(FOLLOW_8); rule__AllPackageEntry__Group_2_3__0__Impl(); @@ -11001,20 +11028,20 @@ public final void rule__AllPackageEntry__Group_2_3__0() throws RecognitionExcept // $ANTLR start "rule__AllPackageEntry__Group_2_3__0__Impl" - // InternalApplicationConfiguration.g:3365:1: rule__AllPackageEntry__Group_2_3__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:3371:1: rule__AllPackageEntry__Group_2_3__0__Impl : ( ',' ) ; public final void rule__AllPackageEntry__Group_2_3__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3369:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:3370:1: ( ',' ) + // InternalApplicationConfiguration.g:3375:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:3376:1: ( ',' ) { - // InternalApplicationConfiguration.g:3370:1: ( ',' ) - // InternalApplicationConfiguration.g:3371:2: ',' + // InternalApplicationConfiguration.g:3376:1: ( ',' ) + // InternalApplicationConfiguration.g:3377:2: ',' { before(grammarAccess.getAllPackageEntryAccess().getCommaKeyword_2_3_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getAllPackageEntryAccess().getCommaKeyword_2_3_0()); } @@ -11038,14 +11065,14 @@ public final void rule__AllPackageEntry__Group_2_3__0__Impl() throws Recognition // $ANTLR start "rule__AllPackageEntry__Group_2_3__1" - // InternalApplicationConfiguration.g:3380:1: rule__AllPackageEntry__Group_2_3__1 : rule__AllPackageEntry__Group_2_3__1__Impl ; + // InternalApplicationConfiguration.g:3386:1: rule__AllPackageEntry__Group_2_3__1 : rule__AllPackageEntry__Group_2_3__1__Impl ; public final void rule__AllPackageEntry__Group_2_3__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3384:1: ( rule__AllPackageEntry__Group_2_3__1__Impl ) - // InternalApplicationConfiguration.g:3385:2: rule__AllPackageEntry__Group_2_3__1__Impl + // InternalApplicationConfiguration.g:3390:1: ( rule__AllPackageEntry__Group_2_3__1__Impl ) + // InternalApplicationConfiguration.g:3391:2: rule__AllPackageEntry__Group_2_3__1__Impl { pushFollow(FOLLOW_2); rule__AllPackageEntry__Group_2_3__1__Impl(); @@ -11071,21 +11098,21 @@ public final void rule__AllPackageEntry__Group_2_3__1() throws RecognitionExcept // $ANTLR start "rule__AllPackageEntry__Group_2_3__1__Impl" - // InternalApplicationConfiguration.g:3391:1: rule__AllPackageEntry__Group_2_3__1__Impl : ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) ; + // InternalApplicationConfiguration.g:3397:1: rule__AllPackageEntry__Group_2_3__1__Impl : ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) ; public final void rule__AllPackageEntry__Group_2_3__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3395:1: ( ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) ) - // InternalApplicationConfiguration.g:3396:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) + // InternalApplicationConfiguration.g:3401:1: ( ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) ) + // InternalApplicationConfiguration.g:3402:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) { - // InternalApplicationConfiguration.g:3396:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) - // InternalApplicationConfiguration.g:3397:2: ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) + // InternalApplicationConfiguration.g:3402:1: ( ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) ) + // InternalApplicationConfiguration.g:3403:2: ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) { before(grammarAccess.getAllPackageEntryAccess().getExclusionAssignment_2_3_1()); - // InternalApplicationConfiguration.g:3398:2: ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) - // InternalApplicationConfiguration.g:3398:3: rule__AllPackageEntry__ExclusionAssignment_2_3_1 + // InternalApplicationConfiguration.g:3404:2: ( rule__AllPackageEntry__ExclusionAssignment_2_3_1 ) + // InternalApplicationConfiguration.g:3404:3: rule__AllPackageEntry__ExclusionAssignment_2_3_1 { pushFollow(FOLLOW_2); rule__AllPackageEntry__ExclusionAssignment_2_3_1(); @@ -11118,14 +11145,14 @@ public final void rule__AllPackageEntry__Group_2_3__1__Impl() throws Recognition // $ANTLR start "rule__MetamodelElement__Group__0" - // InternalApplicationConfiguration.g:3407:1: rule__MetamodelElement__Group__0 : rule__MetamodelElement__Group__0__Impl rule__MetamodelElement__Group__1 ; + // InternalApplicationConfiguration.g:3413:1: rule__MetamodelElement__Group__0 : rule__MetamodelElement__Group__0__Impl rule__MetamodelElement__Group__1 ; public final void rule__MetamodelElement__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3411:1: ( rule__MetamodelElement__Group__0__Impl rule__MetamodelElement__Group__1 ) - // InternalApplicationConfiguration.g:3412:2: rule__MetamodelElement__Group__0__Impl rule__MetamodelElement__Group__1 + // InternalApplicationConfiguration.g:3417:1: ( rule__MetamodelElement__Group__0__Impl rule__MetamodelElement__Group__1 ) + // InternalApplicationConfiguration.g:3418:2: rule__MetamodelElement__Group__0__Impl rule__MetamodelElement__Group__1 { pushFollow(FOLLOW_8); rule__MetamodelElement__Group__0__Impl(); @@ -11156,44 +11183,44 @@ public final void rule__MetamodelElement__Group__0() throws RecognitionException // $ANTLR start "rule__MetamodelElement__Group__0__Impl" - // InternalApplicationConfiguration.g:3419:1: rule__MetamodelElement__Group__0__Impl : ( ( rule__MetamodelElement__Group_0__0 )? ) ; + // InternalApplicationConfiguration.g:3425:1: rule__MetamodelElement__Group__0__Impl : ( ( rule__MetamodelElement__Group_0__0 )? ) ; public final void rule__MetamodelElement__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3423:1: ( ( ( rule__MetamodelElement__Group_0__0 )? ) ) - // InternalApplicationConfiguration.g:3424:1: ( ( rule__MetamodelElement__Group_0__0 )? ) + // InternalApplicationConfiguration.g:3429:1: ( ( ( rule__MetamodelElement__Group_0__0 )? ) ) + // InternalApplicationConfiguration.g:3430:1: ( ( rule__MetamodelElement__Group_0__0 )? ) { - // InternalApplicationConfiguration.g:3424:1: ( ( rule__MetamodelElement__Group_0__0 )? ) - // InternalApplicationConfiguration.g:3425:2: ( rule__MetamodelElement__Group_0__0 )? + // InternalApplicationConfiguration.g:3430:1: ( ( rule__MetamodelElement__Group_0__0 )? ) + // InternalApplicationConfiguration.g:3431:2: ( rule__MetamodelElement__Group_0__0 )? { before(grammarAccess.getMetamodelElementAccess().getGroup_0()); - // InternalApplicationConfiguration.g:3426:2: ( rule__MetamodelElement__Group_0__0 )? + // InternalApplicationConfiguration.g:3432:2: ( rule__MetamodelElement__Group_0__0 )? int alt37=2; int LA37_0 = input.LA(1); if ( (LA37_0==RULE_ID) ) { int LA37_1 = input.LA(2); - if ( (LA37_1==17) ) { + if ( (LA37_1==18) ) { int LA37_2 = input.LA(3); if ( (LA37_2==RULE_ID) ) { int LA37_5 = input.LA(4); - if ( (LA37_5==17||LA37_5==29) ) { + if ( (LA37_5==18||LA37_5==30) ) { alt37=1; } } } - else if ( (LA37_1==29) ) { + else if ( (LA37_1==30) ) { alt37=1; } } switch (alt37) { case 1 : - // InternalApplicationConfiguration.g:3426:3: rule__MetamodelElement__Group_0__0 + // InternalApplicationConfiguration.g:3432:3: rule__MetamodelElement__Group_0__0 { pushFollow(FOLLOW_2); rule__MetamodelElement__Group_0__0(); @@ -11229,14 +11256,14 @@ else if ( (LA37_1==29) ) { // $ANTLR start "rule__MetamodelElement__Group__1" - // InternalApplicationConfiguration.g:3434:1: rule__MetamodelElement__Group__1 : rule__MetamodelElement__Group__1__Impl rule__MetamodelElement__Group__2 ; + // InternalApplicationConfiguration.g:3440:1: rule__MetamodelElement__Group__1 : rule__MetamodelElement__Group__1__Impl rule__MetamodelElement__Group__2 ; public final void rule__MetamodelElement__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3438:1: ( rule__MetamodelElement__Group__1__Impl rule__MetamodelElement__Group__2 ) - // InternalApplicationConfiguration.g:3439:2: rule__MetamodelElement__Group__1__Impl rule__MetamodelElement__Group__2 + // InternalApplicationConfiguration.g:3444:1: ( rule__MetamodelElement__Group__1__Impl rule__MetamodelElement__Group__2 ) + // InternalApplicationConfiguration.g:3445:2: rule__MetamodelElement__Group__1__Impl rule__MetamodelElement__Group__2 { pushFollow(FOLLOW_6); rule__MetamodelElement__Group__1__Impl(); @@ -11267,21 +11294,21 @@ public final void rule__MetamodelElement__Group__1() throws RecognitionException // $ANTLR start "rule__MetamodelElement__Group__1__Impl" - // InternalApplicationConfiguration.g:3446:1: rule__MetamodelElement__Group__1__Impl : ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:3452:1: rule__MetamodelElement__Group__1__Impl : ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) ; public final void rule__MetamodelElement__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3450:1: ( ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:3451:1: ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) + // InternalApplicationConfiguration.g:3456:1: ( ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:3457:1: ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) { - // InternalApplicationConfiguration.g:3451:1: ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) - // InternalApplicationConfiguration.g:3452:2: ( rule__MetamodelElement__ClassifierAssignment_1 ) + // InternalApplicationConfiguration.g:3457:1: ( ( rule__MetamodelElement__ClassifierAssignment_1 ) ) + // InternalApplicationConfiguration.g:3458:2: ( rule__MetamodelElement__ClassifierAssignment_1 ) { before(grammarAccess.getMetamodelElementAccess().getClassifierAssignment_1()); - // InternalApplicationConfiguration.g:3453:2: ( rule__MetamodelElement__ClassifierAssignment_1 ) - // InternalApplicationConfiguration.g:3453:3: rule__MetamodelElement__ClassifierAssignment_1 + // InternalApplicationConfiguration.g:3459:2: ( rule__MetamodelElement__ClassifierAssignment_1 ) + // InternalApplicationConfiguration.g:3459:3: rule__MetamodelElement__ClassifierAssignment_1 { pushFollow(FOLLOW_2); rule__MetamodelElement__ClassifierAssignment_1(); @@ -11314,14 +11341,14 @@ public final void rule__MetamodelElement__Group__1__Impl() throws RecognitionExc // $ANTLR start "rule__MetamodelElement__Group__2" - // InternalApplicationConfiguration.g:3461:1: rule__MetamodelElement__Group__2 : rule__MetamodelElement__Group__2__Impl ; + // InternalApplicationConfiguration.g:3467:1: rule__MetamodelElement__Group__2 : rule__MetamodelElement__Group__2__Impl ; public final void rule__MetamodelElement__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3465:1: ( rule__MetamodelElement__Group__2__Impl ) - // InternalApplicationConfiguration.g:3466:2: rule__MetamodelElement__Group__2__Impl + // InternalApplicationConfiguration.g:3471:1: ( rule__MetamodelElement__Group__2__Impl ) + // InternalApplicationConfiguration.g:3472:2: rule__MetamodelElement__Group__2__Impl { pushFollow(FOLLOW_2); rule__MetamodelElement__Group__2__Impl(); @@ -11347,29 +11374,29 @@ public final void rule__MetamodelElement__Group__2() throws RecognitionException // $ANTLR start "rule__MetamodelElement__Group__2__Impl" - // InternalApplicationConfiguration.g:3472:1: rule__MetamodelElement__Group__2__Impl : ( ( rule__MetamodelElement__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:3478:1: rule__MetamodelElement__Group__2__Impl : ( ( rule__MetamodelElement__Group_2__0 )? ) ; public final void rule__MetamodelElement__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3476:1: ( ( ( rule__MetamodelElement__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:3477:1: ( ( rule__MetamodelElement__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3482:1: ( ( ( rule__MetamodelElement__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:3483:1: ( ( rule__MetamodelElement__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:3477:1: ( ( rule__MetamodelElement__Group_2__0 )? ) - // InternalApplicationConfiguration.g:3478:2: ( rule__MetamodelElement__Group_2__0 )? + // InternalApplicationConfiguration.g:3483:1: ( ( rule__MetamodelElement__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3484:2: ( rule__MetamodelElement__Group_2__0 )? { before(grammarAccess.getMetamodelElementAccess().getGroup_2()); - // InternalApplicationConfiguration.g:3479:2: ( rule__MetamodelElement__Group_2__0 )? + // InternalApplicationConfiguration.g:3485:2: ( rule__MetamodelElement__Group_2__0 )? int alt38=2; int LA38_0 = input.LA(1); - if ( (LA38_0==17) ) { + if ( (LA38_0==18) ) { alt38=1; } switch (alt38) { case 1 : - // InternalApplicationConfiguration.g:3479:3: rule__MetamodelElement__Group_2__0 + // InternalApplicationConfiguration.g:3485:3: rule__MetamodelElement__Group_2__0 { pushFollow(FOLLOW_2); rule__MetamodelElement__Group_2__0(); @@ -11405,14 +11432,14 @@ public final void rule__MetamodelElement__Group__2__Impl() throws RecognitionExc // $ANTLR start "rule__MetamodelElement__Group_0__0" - // InternalApplicationConfiguration.g:3488:1: rule__MetamodelElement__Group_0__0 : rule__MetamodelElement__Group_0__0__Impl rule__MetamodelElement__Group_0__1 ; + // InternalApplicationConfiguration.g:3494:1: rule__MetamodelElement__Group_0__0 : rule__MetamodelElement__Group_0__0__Impl rule__MetamodelElement__Group_0__1 ; public final void rule__MetamodelElement__Group_0__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3492:1: ( rule__MetamodelElement__Group_0__0__Impl rule__MetamodelElement__Group_0__1 ) - // InternalApplicationConfiguration.g:3493:2: rule__MetamodelElement__Group_0__0__Impl rule__MetamodelElement__Group_0__1 + // InternalApplicationConfiguration.g:3498:1: ( rule__MetamodelElement__Group_0__0__Impl rule__MetamodelElement__Group_0__1 ) + // InternalApplicationConfiguration.g:3499:2: rule__MetamodelElement__Group_0__0__Impl rule__MetamodelElement__Group_0__1 { pushFollow(FOLLOW_19); rule__MetamodelElement__Group_0__0__Impl(); @@ -11443,21 +11470,21 @@ public final void rule__MetamodelElement__Group_0__0() throws RecognitionExcepti // $ANTLR start "rule__MetamodelElement__Group_0__0__Impl" - // InternalApplicationConfiguration.g:3500:1: rule__MetamodelElement__Group_0__0__Impl : ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) ; + // InternalApplicationConfiguration.g:3506:1: rule__MetamodelElement__Group_0__0__Impl : ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) ; public final void rule__MetamodelElement__Group_0__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3504:1: ( ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) ) - // InternalApplicationConfiguration.g:3505:1: ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) + // InternalApplicationConfiguration.g:3510:1: ( ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) ) + // InternalApplicationConfiguration.g:3511:1: ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) { - // InternalApplicationConfiguration.g:3505:1: ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) - // InternalApplicationConfiguration.g:3506:2: ( rule__MetamodelElement__PackageAssignment_0_0 ) + // InternalApplicationConfiguration.g:3511:1: ( ( rule__MetamodelElement__PackageAssignment_0_0 ) ) + // InternalApplicationConfiguration.g:3512:2: ( rule__MetamodelElement__PackageAssignment_0_0 ) { before(grammarAccess.getMetamodelElementAccess().getPackageAssignment_0_0()); - // InternalApplicationConfiguration.g:3507:2: ( rule__MetamodelElement__PackageAssignment_0_0 ) - // InternalApplicationConfiguration.g:3507:3: rule__MetamodelElement__PackageAssignment_0_0 + // InternalApplicationConfiguration.g:3513:2: ( rule__MetamodelElement__PackageAssignment_0_0 ) + // InternalApplicationConfiguration.g:3513:3: rule__MetamodelElement__PackageAssignment_0_0 { pushFollow(FOLLOW_2); rule__MetamodelElement__PackageAssignment_0_0(); @@ -11490,14 +11517,14 @@ public final void rule__MetamodelElement__Group_0__0__Impl() throws RecognitionE // $ANTLR start "rule__MetamodelElement__Group_0__1" - // InternalApplicationConfiguration.g:3515:1: rule__MetamodelElement__Group_0__1 : rule__MetamodelElement__Group_0__1__Impl ; + // InternalApplicationConfiguration.g:3521:1: rule__MetamodelElement__Group_0__1 : rule__MetamodelElement__Group_0__1__Impl ; public final void rule__MetamodelElement__Group_0__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3519:1: ( rule__MetamodelElement__Group_0__1__Impl ) - // InternalApplicationConfiguration.g:3520:2: rule__MetamodelElement__Group_0__1__Impl + // InternalApplicationConfiguration.g:3525:1: ( rule__MetamodelElement__Group_0__1__Impl ) + // InternalApplicationConfiguration.g:3526:2: rule__MetamodelElement__Group_0__1__Impl { pushFollow(FOLLOW_2); rule__MetamodelElement__Group_0__1__Impl(); @@ -11523,20 +11550,20 @@ public final void rule__MetamodelElement__Group_0__1() throws RecognitionExcepti // $ANTLR start "rule__MetamodelElement__Group_0__1__Impl" - // InternalApplicationConfiguration.g:3526:1: rule__MetamodelElement__Group_0__1__Impl : ( '::' ) ; + // InternalApplicationConfiguration.g:3532:1: rule__MetamodelElement__Group_0__1__Impl : ( '::' ) ; public final void rule__MetamodelElement__Group_0__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3530:1: ( ( '::' ) ) - // InternalApplicationConfiguration.g:3531:1: ( '::' ) + // InternalApplicationConfiguration.g:3536:1: ( ( '::' ) ) + // InternalApplicationConfiguration.g:3537:1: ( '::' ) { - // InternalApplicationConfiguration.g:3531:1: ( '::' ) - // InternalApplicationConfiguration.g:3532:2: '::' + // InternalApplicationConfiguration.g:3537:1: ( '::' ) + // InternalApplicationConfiguration.g:3538:2: '::' { before(grammarAccess.getMetamodelElementAccess().getColonColonKeyword_0_1()); - match(input,29,FOLLOW_2); + match(input,30,FOLLOW_2); after(grammarAccess.getMetamodelElementAccess().getColonColonKeyword_0_1()); } @@ -11560,14 +11587,14 @@ public final void rule__MetamodelElement__Group_0__1__Impl() throws RecognitionE // $ANTLR start "rule__MetamodelElement__Group_2__0" - // InternalApplicationConfiguration.g:3542:1: rule__MetamodelElement__Group_2__0 : rule__MetamodelElement__Group_2__0__Impl rule__MetamodelElement__Group_2__1 ; + // InternalApplicationConfiguration.g:3548:1: rule__MetamodelElement__Group_2__0 : rule__MetamodelElement__Group_2__0__Impl rule__MetamodelElement__Group_2__1 ; public final void rule__MetamodelElement__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3546:1: ( rule__MetamodelElement__Group_2__0__Impl rule__MetamodelElement__Group_2__1 ) - // InternalApplicationConfiguration.g:3547:2: rule__MetamodelElement__Group_2__0__Impl rule__MetamodelElement__Group_2__1 + // InternalApplicationConfiguration.g:3552:1: ( rule__MetamodelElement__Group_2__0__Impl rule__MetamodelElement__Group_2__1 ) + // InternalApplicationConfiguration.g:3553:2: rule__MetamodelElement__Group_2__0__Impl rule__MetamodelElement__Group_2__1 { pushFollow(FOLLOW_8); rule__MetamodelElement__Group_2__0__Impl(); @@ -11598,20 +11625,20 @@ public final void rule__MetamodelElement__Group_2__0() throws RecognitionExcepti // $ANTLR start "rule__MetamodelElement__Group_2__0__Impl" - // InternalApplicationConfiguration.g:3554:1: rule__MetamodelElement__Group_2__0__Impl : ( '.' ) ; + // InternalApplicationConfiguration.g:3560:1: rule__MetamodelElement__Group_2__0__Impl : ( '.' ) ; public final void rule__MetamodelElement__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3558:1: ( ( '.' ) ) - // InternalApplicationConfiguration.g:3559:1: ( '.' ) + // InternalApplicationConfiguration.g:3564:1: ( ( '.' ) ) + // InternalApplicationConfiguration.g:3565:1: ( '.' ) { - // InternalApplicationConfiguration.g:3559:1: ( '.' ) - // InternalApplicationConfiguration.g:3560:2: '.' + // InternalApplicationConfiguration.g:3565:1: ( '.' ) + // InternalApplicationConfiguration.g:3566:2: '.' { before(grammarAccess.getMetamodelElementAccess().getFullStopKeyword_2_0()); - match(input,17,FOLLOW_2); + match(input,18,FOLLOW_2); after(grammarAccess.getMetamodelElementAccess().getFullStopKeyword_2_0()); } @@ -11635,14 +11662,14 @@ public final void rule__MetamodelElement__Group_2__0__Impl() throws RecognitionE // $ANTLR start "rule__MetamodelElement__Group_2__1" - // InternalApplicationConfiguration.g:3569:1: rule__MetamodelElement__Group_2__1 : rule__MetamodelElement__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:3575:1: rule__MetamodelElement__Group_2__1 : rule__MetamodelElement__Group_2__1__Impl ; public final void rule__MetamodelElement__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3573:1: ( rule__MetamodelElement__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:3574:2: rule__MetamodelElement__Group_2__1__Impl + // InternalApplicationConfiguration.g:3579:1: ( rule__MetamodelElement__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:3580:2: rule__MetamodelElement__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__MetamodelElement__Group_2__1__Impl(); @@ -11668,21 +11695,21 @@ public final void rule__MetamodelElement__Group_2__1() throws RecognitionExcepti // $ANTLR start "rule__MetamodelElement__Group_2__1__Impl" - // InternalApplicationConfiguration.g:3580:1: rule__MetamodelElement__Group_2__1__Impl : ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) ; + // InternalApplicationConfiguration.g:3586:1: rule__MetamodelElement__Group_2__1__Impl : ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) ; public final void rule__MetamodelElement__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3584:1: ( ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) ) - // InternalApplicationConfiguration.g:3585:1: ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:3590:1: ( ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) ) + // InternalApplicationConfiguration.g:3591:1: ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) { - // InternalApplicationConfiguration.g:3585:1: ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) - // InternalApplicationConfiguration.g:3586:2: ( rule__MetamodelElement__FeatureAssignment_2_1 ) + // InternalApplicationConfiguration.g:3591:1: ( ( rule__MetamodelElement__FeatureAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:3592:2: ( rule__MetamodelElement__FeatureAssignment_2_1 ) { before(grammarAccess.getMetamodelElementAccess().getFeatureAssignment_2_1()); - // InternalApplicationConfiguration.g:3587:2: ( rule__MetamodelElement__FeatureAssignment_2_1 ) - // InternalApplicationConfiguration.g:3587:3: rule__MetamodelElement__FeatureAssignment_2_1 + // InternalApplicationConfiguration.g:3593:2: ( rule__MetamodelElement__FeatureAssignment_2_1 ) + // InternalApplicationConfiguration.g:3593:3: rule__MetamodelElement__FeatureAssignment_2_1 { pushFollow(FOLLOW_2); rule__MetamodelElement__FeatureAssignment_2_1(); @@ -11715,14 +11742,14 @@ public final void rule__MetamodelElement__Group_2__1__Impl() throws RecognitionE // $ANTLR start "rule__MetamodelDeclaration__Group__0" - // InternalApplicationConfiguration.g:3596:1: rule__MetamodelDeclaration__Group__0 : rule__MetamodelDeclaration__Group__0__Impl rule__MetamodelDeclaration__Group__1 ; + // InternalApplicationConfiguration.g:3602:1: rule__MetamodelDeclaration__Group__0 : rule__MetamodelDeclaration__Group__0__Impl rule__MetamodelDeclaration__Group__1 ; public final void rule__MetamodelDeclaration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3600:1: ( rule__MetamodelDeclaration__Group__0__Impl rule__MetamodelDeclaration__Group__1 ) - // InternalApplicationConfiguration.g:3601:2: rule__MetamodelDeclaration__Group__0__Impl rule__MetamodelDeclaration__Group__1 + // InternalApplicationConfiguration.g:3606:1: ( rule__MetamodelDeclaration__Group__0__Impl rule__MetamodelDeclaration__Group__1 ) + // InternalApplicationConfiguration.g:3607:2: rule__MetamodelDeclaration__Group__0__Impl rule__MetamodelDeclaration__Group__1 { pushFollow(FOLLOW_8); rule__MetamodelDeclaration__Group__0__Impl(); @@ -11753,20 +11780,20 @@ public final void rule__MetamodelDeclaration__Group__0() throws RecognitionExcep // $ANTLR start "rule__MetamodelDeclaration__Group__0__Impl" - // InternalApplicationConfiguration.g:3608:1: rule__MetamodelDeclaration__Group__0__Impl : ( 'metamodel' ) ; + // InternalApplicationConfiguration.g:3614:1: rule__MetamodelDeclaration__Group__0__Impl : ( 'metamodel' ) ; public final void rule__MetamodelDeclaration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3612:1: ( ( 'metamodel' ) ) - // InternalApplicationConfiguration.g:3613:1: ( 'metamodel' ) + // InternalApplicationConfiguration.g:3618:1: ( ( 'metamodel' ) ) + // InternalApplicationConfiguration.g:3619:1: ( 'metamodel' ) { - // InternalApplicationConfiguration.g:3613:1: ( 'metamodel' ) - // InternalApplicationConfiguration.g:3614:2: 'metamodel' + // InternalApplicationConfiguration.g:3619:1: ( 'metamodel' ) + // InternalApplicationConfiguration.g:3620:2: 'metamodel' { before(grammarAccess.getMetamodelDeclarationAccess().getMetamodelKeyword_0()); - match(input,30,FOLLOW_2); + match(input,31,FOLLOW_2); after(grammarAccess.getMetamodelDeclarationAccess().getMetamodelKeyword_0()); } @@ -11790,14 +11817,14 @@ public final void rule__MetamodelDeclaration__Group__0__Impl() throws Recognitio // $ANTLR start "rule__MetamodelDeclaration__Group__1" - // InternalApplicationConfiguration.g:3623:1: rule__MetamodelDeclaration__Group__1 : rule__MetamodelDeclaration__Group__1__Impl rule__MetamodelDeclaration__Group__2 ; + // InternalApplicationConfiguration.g:3629:1: rule__MetamodelDeclaration__Group__1 : rule__MetamodelDeclaration__Group__1__Impl rule__MetamodelDeclaration__Group__2 ; public final void rule__MetamodelDeclaration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3627:1: ( rule__MetamodelDeclaration__Group__1__Impl rule__MetamodelDeclaration__Group__2 ) - // InternalApplicationConfiguration.g:3628:2: rule__MetamodelDeclaration__Group__1__Impl rule__MetamodelDeclaration__Group__2 + // InternalApplicationConfiguration.g:3633:1: ( rule__MetamodelDeclaration__Group__1__Impl rule__MetamodelDeclaration__Group__2 ) + // InternalApplicationConfiguration.g:3634:2: rule__MetamodelDeclaration__Group__1__Impl rule__MetamodelDeclaration__Group__2 { pushFollow(FOLLOW_18); rule__MetamodelDeclaration__Group__1__Impl(); @@ -11828,21 +11855,21 @@ public final void rule__MetamodelDeclaration__Group__1() throws RecognitionExcep // $ANTLR start "rule__MetamodelDeclaration__Group__1__Impl" - // InternalApplicationConfiguration.g:3635:1: rule__MetamodelDeclaration__Group__1__Impl : ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:3641:1: rule__MetamodelDeclaration__Group__1__Impl : ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) ; public final void rule__MetamodelDeclaration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3639:1: ( ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:3640:1: ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:3645:1: ( ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:3646:1: ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) { - // InternalApplicationConfiguration.g:3640:1: ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) - // InternalApplicationConfiguration.g:3641:2: ( rule__MetamodelDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:3646:1: ( ( rule__MetamodelDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:3647:2: ( rule__MetamodelDeclaration__NameAssignment_1 ) { before(grammarAccess.getMetamodelDeclarationAccess().getNameAssignment_1()); - // InternalApplicationConfiguration.g:3642:2: ( rule__MetamodelDeclaration__NameAssignment_1 ) - // InternalApplicationConfiguration.g:3642:3: rule__MetamodelDeclaration__NameAssignment_1 + // InternalApplicationConfiguration.g:3648:2: ( rule__MetamodelDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:3648:3: rule__MetamodelDeclaration__NameAssignment_1 { pushFollow(FOLLOW_2); rule__MetamodelDeclaration__NameAssignment_1(); @@ -11875,14 +11902,14 @@ public final void rule__MetamodelDeclaration__Group__1__Impl() throws Recognitio // $ANTLR start "rule__MetamodelDeclaration__Group__2" - // InternalApplicationConfiguration.g:3650:1: rule__MetamodelDeclaration__Group__2 : rule__MetamodelDeclaration__Group__2__Impl ; + // InternalApplicationConfiguration.g:3656:1: rule__MetamodelDeclaration__Group__2 : rule__MetamodelDeclaration__Group__2__Impl ; public final void rule__MetamodelDeclaration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3654:1: ( rule__MetamodelDeclaration__Group__2__Impl ) - // InternalApplicationConfiguration.g:3655:2: rule__MetamodelDeclaration__Group__2__Impl + // InternalApplicationConfiguration.g:3660:1: ( rule__MetamodelDeclaration__Group__2__Impl ) + // InternalApplicationConfiguration.g:3661:2: rule__MetamodelDeclaration__Group__2__Impl { pushFollow(FOLLOW_2); rule__MetamodelDeclaration__Group__2__Impl(); @@ -11908,21 +11935,21 @@ public final void rule__MetamodelDeclaration__Group__2() throws RecognitionExcep // $ANTLR start "rule__MetamodelDeclaration__Group__2__Impl" - // InternalApplicationConfiguration.g:3661:1: rule__MetamodelDeclaration__Group__2__Impl : ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:3667:1: rule__MetamodelDeclaration__Group__2__Impl : ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) ; public final void rule__MetamodelDeclaration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3665:1: ( ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:3666:1: ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:3671:1: ( ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:3672:1: ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) { - // InternalApplicationConfiguration.g:3666:1: ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) - // InternalApplicationConfiguration.g:3667:2: ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:3672:1: ( ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:3673:2: ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) { before(grammarAccess.getMetamodelDeclarationAccess().getSpecificationAssignment_2()); - // InternalApplicationConfiguration.g:3668:2: ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) - // InternalApplicationConfiguration.g:3668:3: rule__MetamodelDeclaration__SpecificationAssignment_2 + // InternalApplicationConfiguration.g:3674:2: ( rule__MetamodelDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:3674:3: rule__MetamodelDeclaration__SpecificationAssignment_2 { pushFollow(FOLLOW_2); rule__MetamodelDeclaration__SpecificationAssignment_2(); @@ -11955,14 +11982,14 @@ public final void rule__MetamodelDeclaration__Group__2__Impl() throws Recognitio // $ANTLR start "rule__PartialModelSpecification__Group__0" - // InternalApplicationConfiguration.g:3677:1: rule__PartialModelSpecification__Group__0 : rule__PartialModelSpecification__Group__0__Impl rule__PartialModelSpecification__Group__1 ; + // InternalApplicationConfiguration.g:3683:1: rule__PartialModelSpecification__Group__0 : rule__PartialModelSpecification__Group__0__Impl rule__PartialModelSpecification__Group__1 ; public final void rule__PartialModelSpecification__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3681:1: ( rule__PartialModelSpecification__Group__0__Impl rule__PartialModelSpecification__Group__1 ) - // InternalApplicationConfiguration.g:3682:2: rule__PartialModelSpecification__Group__0__Impl rule__PartialModelSpecification__Group__1 + // InternalApplicationConfiguration.g:3687:1: ( rule__PartialModelSpecification__Group__0__Impl rule__PartialModelSpecification__Group__1 ) + // InternalApplicationConfiguration.g:3688:2: rule__PartialModelSpecification__Group__0__Impl rule__PartialModelSpecification__Group__1 { pushFollow(FOLLOW_20); rule__PartialModelSpecification__Group__0__Impl(); @@ -11993,20 +12020,20 @@ public final void rule__PartialModelSpecification__Group__0() throws Recognition // $ANTLR start "rule__PartialModelSpecification__Group__0__Impl" - // InternalApplicationConfiguration.g:3689:1: rule__PartialModelSpecification__Group__0__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:3695:1: rule__PartialModelSpecification__Group__0__Impl : ( '{' ) ; public final void rule__PartialModelSpecification__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3693:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:3694:1: ( '{' ) + // InternalApplicationConfiguration.g:3699:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:3700:1: ( '{' ) { - // InternalApplicationConfiguration.g:3694:1: ( '{' ) - // InternalApplicationConfiguration.g:3695:2: '{' + // InternalApplicationConfiguration.g:3700:1: ( '{' ) + // InternalApplicationConfiguration.g:3701:2: '{' { before(grammarAccess.getPartialModelSpecificationAccess().getLeftCurlyBracketKeyword_0()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getPartialModelSpecificationAccess().getLeftCurlyBracketKeyword_0()); } @@ -12030,14 +12057,14 @@ public final void rule__PartialModelSpecification__Group__0__Impl() throws Recog // $ANTLR start "rule__PartialModelSpecification__Group__1" - // InternalApplicationConfiguration.g:3704:1: rule__PartialModelSpecification__Group__1 : rule__PartialModelSpecification__Group__1__Impl rule__PartialModelSpecification__Group__2 ; + // InternalApplicationConfiguration.g:3710:1: rule__PartialModelSpecification__Group__1 : rule__PartialModelSpecification__Group__1__Impl rule__PartialModelSpecification__Group__2 ; public final void rule__PartialModelSpecification__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3708:1: ( rule__PartialModelSpecification__Group__1__Impl rule__PartialModelSpecification__Group__2 ) - // InternalApplicationConfiguration.g:3709:2: rule__PartialModelSpecification__Group__1__Impl rule__PartialModelSpecification__Group__2 + // InternalApplicationConfiguration.g:3714:1: ( rule__PartialModelSpecification__Group__1__Impl rule__PartialModelSpecification__Group__2 ) + // InternalApplicationConfiguration.g:3715:2: rule__PartialModelSpecification__Group__1__Impl rule__PartialModelSpecification__Group__2 { pushFollow(FOLLOW_15); rule__PartialModelSpecification__Group__1__Impl(); @@ -12068,21 +12095,21 @@ public final void rule__PartialModelSpecification__Group__1() throws Recognition // $ANTLR start "rule__PartialModelSpecification__Group__1__Impl" - // InternalApplicationConfiguration.g:3716:1: rule__PartialModelSpecification__Group__1__Impl : ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:3722:1: rule__PartialModelSpecification__Group__1__Impl : ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) ; public final void rule__PartialModelSpecification__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3720:1: ( ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:3721:1: ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) + // InternalApplicationConfiguration.g:3726:1: ( ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:3727:1: ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) { - // InternalApplicationConfiguration.g:3721:1: ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) - // InternalApplicationConfiguration.g:3722:2: ( rule__PartialModelSpecification__EntryAssignment_1 ) + // InternalApplicationConfiguration.g:3727:1: ( ( rule__PartialModelSpecification__EntryAssignment_1 ) ) + // InternalApplicationConfiguration.g:3728:2: ( rule__PartialModelSpecification__EntryAssignment_1 ) { before(grammarAccess.getPartialModelSpecificationAccess().getEntryAssignment_1()); - // InternalApplicationConfiguration.g:3723:2: ( rule__PartialModelSpecification__EntryAssignment_1 ) - // InternalApplicationConfiguration.g:3723:3: rule__PartialModelSpecification__EntryAssignment_1 + // InternalApplicationConfiguration.g:3729:2: ( rule__PartialModelSpecification__EntryAssignment_1 ) + // InternalApplicationConfiguration.g:3729:3: rule__PartialModelSpecification__EntryAssignment_1 { pushFollow(FOLLOW_2); rule__PartialModelSpecification__EntryAssignment_1(); @@ -12115,14 +12142,14 @@ public final void rule__PartialModelSpecification__Group__1__Impl() throws Recog // $ANTLR start "rule__PartialModelSpecification__Group__2" - // InternalApplicationConfiguration.g:3731:1: rule__PartialModelSpecification__Group__2 : rule__PartialModelSpecification__Group__2__Impl rule__PartialModelSpecification__Group__3 ; + // InternalApplicationConfiguration.g:3737:1: rule__PartialModelSpecification__Group__2 : rule__PartialModelSpecification__Group__2__Impl rule__PartialModelSpecification__Group__3 ; public final void rule__PartialModelSpecification__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3735:1: ( rule__PartialModelSpecification__Group__2__Impl rule__PartialModelSpecification__Group__3 ) - // InternalApplicationConfiguration.g:3736:2: rule__PartialModelSpecification__Group__2__Impl rule__PartialModelSpecification__Group__3 + // InternalApplicationConfiguration.g:3741:1: ( rule__PartialModelSpecification__Group__2__Impl rule__PartialModelSpecification__Group__3 ) + // InternalApplicationConfiguration.g:3742:2: rule__PartialModelSpecification__Group__2__Impl rule__PartialModelSpecification__Group__3 { pushFollow(FOLLOW_15); rule__PartialModelSpecification__Group__2__Impl(); @@ -12153,29 +12180,29 @@ public final void rule__PartialModelSpecification__Group__2() throws Recognition // $ANTLR start "rule__PartialModelSpecification__Group__2__Impl" - // InternalApplicationConfiguration.g:3743:1: rule__PartialModelSpecification__Group__2__Impl : ( ( rule__PartialModelSpecification__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:3749:1: rule__PartialModelSpecification__Group__2__Impl : ( ( rule__PartialModelSpecification__Group_2__0 )? ) ; public final void rule__PartialModelSpecification__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3747:1: ( ( ( rule__PartialModelSpecification__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:3748:1: ( ( rule__PartialModelSpecification__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3753:1: ( ( ( rule__PartialModelSpecification__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:3754:1: ( ( rule__PartialModelSpecification__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:3748:1: ( ( rule__PartialModelSpecification__Group_2__0 )? ) - // InternalApplicationConfiguration.g:3749:2: ( rule__PartialModelSpecification__Group_2__0 )? + // InternalApplicationConfiguration.g:3754:1: ( ( rule__PartialModelSpecification__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3755:2: ( rule__PartialModelSpecification__Group_2__0 )? { before(grammarAccess.getPartialModelSpecificationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:3750:2: ( rule__PartialModelSpecification__Group_2__0 )? + // InternalApplicationConfiguration.g:3756:2: ( rule__PartialModelSpecification__Group_2__0 )? int alt39=2; int LA39_0 = input.LA(1); - if ( (LA39_0==26) ) { + if ( (LA39_0==27) ) { alt39=1; } switch (alt39) { case 1 : - // InternalApplicationConfiguration.g:3750:3: rule__PartialModelSpecification__Group_2__0 + // InternalApplicationConfiguration.g:3756:3: rule__PartialModelSpecification__Group_2__0 { pushFollow(FOLLOW_2); rule__PartialModelSpecification__Group_2__0(); @@ -12211,14 +12238,14 @@ public final void rule__PartialModelSpecification__Group__2__Impl() throws Recog // $ANTLR start "rule__PartialModelSpecification__Group__3" - // InternalApplicationConfiguration.g:3758:1: rule__PartialModelSpecification__Group__3 : rule__PartialModelSpecification__Group__3__Impl ; + // InternalApplicationConfiguration.g:3764:1: rule__PartialModelSpecification__Group__3 : rule__PartialModelSpecification__Group__3__Impl ; public final void rule__PartialModelSpecification__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3762:1: ( rule__PartialModelSpecification__Group__3__Impl ) - // InternalApplicationConfiguration.g:3763:2: rule__PartialModelSpecification__Group__3__Impl + // InternalApplicationConfiguration.g:3768:1: ( rule__PartialModelSpecification__Group__3__Impl ) + // InternalApplicationConfiguration.g:3769:2: rule__PartialModelSpecification__Group__3__Impl { pushFollow(FOLLOW_2); rule__PartialModelSpecification__Group__3__Impl(); @@ -12244,20 +12271,20 @@ public final void rule__PartialModelSpecification__Group__3() throws Recognition // $ANTLR start "rule__PartialModelSpecification__Group__3__Impl" - // InternalApplicationConfiguration.g:3769:1: rule__PartialModelSpecification__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:3775:1: rule__PartialModelSpecification__Group__3__Impl : ( '}' ) ; public final void rule__PartialModelSpecification__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3773:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:3774:1: ( '}' ) + // InternalApplicationConfiguration.g:3779:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:3780:1: ( '}' ) { - // InternalApplicationConfiguration.g:3774:1: ( '}' ) - // InternalApplicationConfiguration.g:3775:2: '}' + // InternalApplicationConfiguration.g:3780:1: ( '}' ) + // InternalApplicationConfiguration.g:3781:2: '}' { before(grammarAccess.getPartialModelSpecificationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getPartialModelSpecificationAccess().getRightCurlyBracketKeyword_3()); } @@ -12281,14 +12308,14 @@ public final void rule__PartialModelSpecification__Group__3__Impl() throws Recog // $ANTLR start "rule__PartialModelSpecification__Group_2__0" - // InternalApplicationConfiguration.g:3785:1: rule__PartialModelSpecification__Group_2__0 : rule__PartialModelSpecification__Group_2__0__Impl rule__PartialModelSpecification__Group_2__1 ; + // InternalApplicationConfiguration.g:3791:1: rule__PartialModelSpecification__Group_2__0 : rule__PartialModelSpecification__Group_2__0__Impl rule__PartialModelSpecification__Group_2__1 ; public final void rule__PartialModelSpecification__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3789:1: ( rule__PartialModelSpecification__Group_2__0__Impl rule__PartialModelSpecification__Group_2__1 ) - // InternalApplicationConfiguration.g:3790:2: rule__PartialModelSpecification__Group_2__0__Impl rule__PartialModelSpecification__Group_2__1 + // InternalApplicationConfiguration.g:3795:1: ( rule__PartialModelSpecification__Group_2__0__Impl rule__PartialModelSpecification__Group_2__1 ) + // InternalApplicationConfiguration.g:3796:2: rule__PartialModelSpecification__Group_2__0__Impl rule__PartialModelSpecification__Group_2__1 { pushFollow(FOLLOW_20); rule__PartialModelSpecification__Group_2__0__Impl(); @@ -12319,20 +12346,20 @@ public final void rule__PartialModelSpecification__Group_2__0() throws Recogniti // $ANTLR start "rule__PartialModelSpecification__Group_2__0__Impl" - // InternalApplicationConfiguration.g:3797:1: rule__PartialModelSpecification__Group_2__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:3803:1: rule__PartialModelSpecification__Group_2__0__Impl : ( ',' ) ; public final void rule__PartialModelSpecification__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3801:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:3802:1: ( ',' ) + // InternalApplicationConfiguration.g:3807:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:3808:1: ( ',' ) { - // InternalApplicationConfiguration.g:3802:1: ( ',' ) - // InternalApplicationConfiguration.g:3803:2: ',' + // InternalApplicationConfiguration.g:3808:1: ( ',' ) + // InternalApplicationConfiguration.g:3809:2: ',' { before(grammarAccess.getPartialModelSpecificationAccess().getCommaKeyword_2_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getPartialModelSpecificationAccess().getCommaKeyword_2_0()); } @@ -12356,14 +12383,14 @@ public final void rule__PartialModelSpecification__Group_2__0__Impl() throws Rec // $ANTLR start "rule__PartialModelSpecification__Group_2__1" - // InternalApplicationConfiguration.g:3812:1: rule__PartialModelSpecification__Group_2__1 : rule__PartialModelSpecification__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:3818:1: rule__PartialModelSpecification__Group_2__1 : rule__PartialModelSpecification__Group_2__1__Impl ; public final void rule__PartialModelSpecification__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3816:1: ( rule__PartialModelSpecification__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:3817:2: rule__PartialModelSpecification__Group_2__1__Impl + // InternalApplicationConfiguration.g:3822:1: ( rule__PartialModelSpecification__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:3823:2: rule__PartialModelSpecification__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__PartialModelSpecification__Group_2__1__Impl(); @@ -12389,21 +12416,21 @@ public final void rule__PartialModelSpecification__Group_2__1() throws Recogniti // $ANTLR start "rule__PartialModelSpecification__Group_2__1__Impl" - // InternalApplicationConfiguration.g:3823:1: rule__PartialModelSpecification__Group_2__1__Impl : ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) ; + // InternalApplicationConfiguration.g:3829:1: rule__PartialModelSpecification__Group_2__1__Impl : ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) ; public final void rule__PartialModelSpecification__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3827:1: ( ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) ) - // InternalApplicationConfiguration.g:3828:1: ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:3833:1: ( ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) ) + // InternalApplicationConfiguration.g:3834:1: ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) { - // InternalApplicationConfiguration.g:3828:1: ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) - // InternalApplicationConfiguration.g:3829:2: ( rule__PartialModelSpecification__EntryAssignment_2_1 ) + // InternalApplicationConfiguration.g:3834:1: ( ( rule__PartialModelSpecification__EntryAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:3835:2: ( rule__PartialModelSpecification__EntryAssignment_2_1 ) { before(grammarAccess.getPartialModelSpecificationAccess().getEntryAssignment_2_1()); - // InternalApplicationConfiguration.g:3830:2: ( rule__PartialModelSpecification__EntryAssignment_2_1 ) - // InternalApplicationConfiguration.g:3830:3: rule__PartialModelSpecification__EntryAssignment_2_1 + // InternalApplicationConfiguration.g:3836:2: ( rule__PartialModelSpecification__EntryAssignment_2_1 ) + // InternalApplicationConfiguration.g:3836:3: rule__PartialModelSpecification__EntryAssignment_2_1 { pushFollow(FOLLOW_2); rule__PartialModelSpecification__EntryAssignment_2_1(); @@ -12436,14 +12463,14 @@ public final void rule__PartialModelSpecification__Group_2__1__Impl() throws Rec // $ANTLR start "rule__FolderEntry__Group__0" - // InternalApplicationConfiguration.g:3839:1: rule__FolderEntry__Group__0 : rule__FolderEntry__Group__0__Impl rule__FolderEntry__Group__1 ; + // InternalApplicationConfiguration.g:3845:1: rule__FolderEntry__Group__0 : rule__FolderEntry__Group__0__Impl rule__FolderEntry__Group__1 ; public final void rule__FolderEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3843:1: ( rule__FolderEntry__Group__0__Impl rule__FolderEntry__Group__1 ) - // InternalApplicationConfiguration.g:3844:2: rule__FolderEntry__Group__0__Impl rule__FolderEntry__Group__1 + // InternalApplicationConfiguration.g:3849:1: ( rule__FolderEntry__Group__0__Impl rule__FolderEntry__Group__1 ) + // InternalApplicationConfiguration.g:3850:2: rule__FolderEntry__Group__0__Impl rule__FolderEntry__Group__1 { pushFollow(FOLLOW_21); rule__FolderEntry__Group__0__Impl(); @@ -12474,20 +12501,20 @@ public final void rule__FolderEntry__Group__0() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:3851:1: rule__FolderEntry__Group__0__Impl : ( 'folder' ) ; + // InternalApplicationConfiguration.g:3857:1: rule__FolderEntry__Group__0__Impl : ( 'folder' ) ; public final void rule__FolderEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3855:1: ( ( 'folder' ) ) - // InternalApplicationConfiguration.g:3856:1: ( 'folder' ) + // InternalApplicationConfiguration.g:3861:1: ( ( 'folder' ) ) + // InternalApplicationConfiguration.g:3862:1: ( 'folder' ) { - // InternalApplicationConfiguration.g:3856:1: ( 'folder' ) - // InternalApplicationConfiguration.g:3857:2: 'folder' + // InternalApplicationConfiguration.g:3862:1: ( 'folder' ) + // InternalApplicationConfiguration.g:3863:2: 'folder' { before(grammarAccess.getFolderEntryAccess().getFolderKeyword_0()); - match(input,31,FOLLOW_2); + match(input,32,FOLLOW_2); after(grammarAccess.getFolderEntryAccess().getFolderKeyword_0()); } @@ -12511,14 +12538,14 @@ public final void rule__FolderEntry__Group__0__Impl() throws RecognitionExceptio // $ANTLR start "rule__FolderEntry__Group__1" - // InternalApplicationConfiguration.g:3866:1: rule__FolderEntry__Group__1 : rule__FolderEntry__Group__1__Impl rule__FolderEntry__Group__2 ; + // InternalApplicationConfiguration.g:3872:1: rule__FolderEntry__Group__1 : rule__FolderEntry__Group__1__Impl rule__FolderEntry__Group__2 ; public final void rule__FolderEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3870:1: ( rule__FolderEntry__Group__1__Impl rule__FolderEntry__Group__2 ) - // InternalApplicationConfiguration.g:3871:2: rule__FolderEntry__Group__1__Impl rule__FolderEntry__Group__2 + // InternalApplicationConfiguration.g:3876:1: ( rule__FolderEntry__Group__1__Impl rule__FolderEntry__Group__2 ) + // InternalApplicationConfiguration.g:3877:2: rule__FolderEntry__Group__1__Impl rule__FolderEntry__Group__2 { pushFollow(FOLLOW_17); rule__FolderEntry__Group__1__Impl(); @@ -12549,21 +12576,21 @@ public final void rule__FolderEntry__Group__1() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:3878:1: rule__FolderEntry__Group__1__Impl : ( ( rule__FolderEntry__PathAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:3884:1: rule__FolderEntry__Group__1__Impl : ( ( rule__FolderEntry__PathAssignment_1 ) ) ; public final void rule__FolderEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3882:1: ( ( ( rule__FolderEntry__PathAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:3883:1: ( ( rule__FolderEntry__PathAssignment_1 ) ) + // InternalApplicationConfiguration.g:3888:1: ( ( ( rule__FolderEntry__PathAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:3889:1: ( ( rule__FolderEntry__PathAssignment_1 ) ) { - // InternalApplicationConfiguration.g:3883:1: ( ( rule__FolderEntry__PathAssignment_1 ) ) - // InternalApplicationConfiguration.g:3884:2: ( rule__FolderEntry__PathAssignment_1 ) + // InternalApplicationConfiguration.g:3889:1: ( ( rule__FolderEntry__PathAssignment_1 ) ) + // InternalApplicationConfiguration.g:3890:2: ( rule__FolderEntry__PathAssignment_1 ) { before(grammarAccess.getFolderEntryAccess().getPathAssignment_1()); - // InternalApplicationConfiguration.g:3885:2: ( rule__FolderEntry__PathAssignment_1 ) - // InternalApplicationConfiguration.g:3885:3: rule__FolderEntry__PathAssignment_1 + // InternalApplicationConfiguration.g:3891:2: ( rule__FolderEntry__PathAssignment_1 ) + // InternalApplicationConfiguration.g:3891:3: rule__FolderEntry__PathAssignment_1 { pushFollow(FOLLOW_2); rule__FolderEntry__PathAssignment_1(); @@ -12596,14 +12623,14 @@ public final void rule__FolderEntry__Group__1__Impl() throws RecognitionExceptio // $ANTLR start "rule__FolderEntry__Group__2" - // InternalApplicationConfiguration.g:3893:1: rule__FolderEntry__Group__2 : rule__FolderEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:3899:1: rule__FolderEntry__Group__2 : rule__FolderEntry__Group__2__Impl ; public final void rule__FolderEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3897:1: ( rule__FolderEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:3898:2: rule__FolderEntry__Group__2__Impl + // InternalApplicationConfiguration.g:3903:1: ( rule__FolderEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:3904:2: rule__FolderEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__FolderEntry__Group__2__Impl(); @@ -12629,29 +12656,29 @@ public final void rule__FolderEntry__Group__2() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:3904:1: rule__FolderEntry__Group__2__Impl : ( ( rule__FolderEntry__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:3910:1: rule__FolderEntry__Group__2__Impl : ( ( rule__FolderEntry__Group_2__0 )? ) ; public final void rule__FolderEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3908:1: ( ( ( rule__FolderEntry__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:3909:1: ( ( rule__FolderEntry__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3914:1: ( ( ( rule__FolderEntry__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:3915:1: ( ( rule__FolderEntry__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:3909:1: ( ( rule__FolderEntry__Group_2__0 )? ) - // InternalApplicationConfiguration.g:3910:2: ( rule__FolderEntry__Group_2__0 )? + // InternalApplicationConfiguration.g:3915:1: ( ( rule__FolderEntry__Group_2__0 )? ) + // InternalApplicationConfiguration.g:3916:2: ( rule__FolderEntry__Group_2__0 )? { before(grammarAccess.getFolderEntryAccess().getGroup_2()); - // InternalApplicationConfiguration.g:3911:2: ( rule__FolderEntry__Group_2__0 )? + // InternalApplicationConfiguration.g:3917:2: ( rule__FolderEntry__Group_2__0 )? int alt40=2; int LA40_0 = input.LA(1); - if ( (LA40_0==28) ) { + if ( (LA40_0==29) ) { alt40=1; } switch (alt40) { case 1 : - // InternalApplicationConfiguration.g:3911:3: rule__FolderEntry__Group_2__0 + // InternalApplicationConfiguration.g:3917:3: rule__FolderEntry__Group_2__0 { pushFollow(FOLLOW_2); rule__FolderEntry__Group_2__0(); @@ -12687,14 +12714,14 @@ public final void rule__FolderEntry__Group__2__Impl() throws RecognitionExceptio // $ANTLR start "rule__FolderEntry__Group_2__0" - // InternalApplicationConfiguration.g:3920:1: rule__FolderEntry__Group_2__0 : rule__FolderEntry__Group_2__0__Impl rule__FolderEntry__Group_2__1 ; + // InternalApplicationConfiguration.g:3926:1: rule__FolderEntry__Group_2__0 : rule__FolderEntry__Group_2__0__Impl rule__FolderEntry__Group_2__1 ; public final void rule__FolderEntry__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3924:1: ( rule__FolderEntry__Group_2__0__Impl rule__FolderEntry__Group_2__1 ) - // InternalApplicationConfiguration.g:3925:2: rule__FolderEntry__Group_2__0__Impl rule__FolderEntry__Group_2__1 + // InternalApplicationConfiguration.g:3930:1: ( rule__FolderEntry__Group_2__0__Impl rule__FolderEntry__Group_2__1 ) + // InternalApplicationConfiguration.g:3931:2: rule__FolderEntry__Group_2__0__Impl rule__FolderEntry__Group_2__1 { pushFollow(FOLLOW_18); rule__FolderEntry__Group_2__0__Impl(); @@ -12725,20 +12752,20 @@ public final void rule__FolderEntry__Group_2__0() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group_2__0__Impl" - // InternalApplicationConfiguration.g:3932:1: rule__FolderEntry__Group_2__0__Impl : ( 'excluding' ) ; + // InternalApplicationConfiguration.g:3938:1: rule__FolderEntry__Group_2__0__Impl : ( 'excluding' ) ; public final void rule__FolderEntry__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3936:1: ( ( 'excluding' ) ) - // InternalApplicationConfiguration.g:3937:1: ( 'excluding' ) + // InternalApplicationConfiguration.g:3942:1: ( ( 'excluding' ) ) + // InternalApplicationConfiguration.g:3943:1: ( 'excluding' ) { - // InternalApplicationConfiguration.g:3937:1: ( 'excluding' ) - // InternalApplicationConfiguration.g:3938:2: 'excluding' + // InternalApplicationConfiguration.g:3943:1: ( 'excluding' ) + // InternalApplicationConfiguration.g:3944:2: 'excluding' { before(grammarAccess.getFolderEntryAccess().getExcludingKeyword_2_0()); - match(input,28,FOLLOW_2); + match(input,29,FOLLOW_2); after(grammarAccess.getFolderEntryAccess().getExcludingKeyword_2_0()); } @@ -12762,14 +12789,14 @@ public final void rule__FolderEntry__Group_2__0__Impl() throws RecognitionExcept // $ANTLR start "rule__FolderEntry__Group_2__1" - // InternalApplicationConfiguration.g:3947:1: rule__FolderEntry__Group_2__1 : rule__FolderEntry__Group_2__1__Impl rule__FolderEntry__Group_2__2 ; + // InternalApplicationConfiguration.g:3953:1: rule__FolderEntry__Group_2__1 : rule__FolderEntry__Group_2__1__Impl rule__FolderEntry__Group_2__2 ; public final void rule__FolderEntry__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3951:1: ( rule__FolderEntry__Group_2__1__Impl rule__FolderEntry__Group_2__2 ) - // InternalApplicationConfiguration.g:3952:2: rule__FolderEntry__Group_2__1__Impl rule__FolderEntry__Group_2__2 + // InternalApplicationConfiguration.g:3957:1: ( rule__FolderEntry__Group_2__1__Impl rule__FolderEntry__Group_2__2 ) + // InternalApplicationConfiguration.g:3958:2: rule__FolderEntry__Group_2__1__Impl rule__FolderEntry__Group_2__2 { pushFollow(FOLLOW_21); rule__FolderEntry__Group_2__1__Impl(); @@ -12800,20 +12827,20 @@ public final void rule__FolderEntry__Group_2__1() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group_2__1__Impl" - // InternalApplicationConfiguration.g:3959:1: rule__FolderEntry__Group_2__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:3965:1: rule__FolderEntry__Group_2__1__Impl : ( '{' ) ; public final void rule__FolderEntry__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3963:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:3964:1: ( '{' ) + // InternalApplicationConfiguration.g:3969:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:3970:1: ( '{' ) { - // InternalApplicationConfiguration.g:3964:1: ( '{' ) - // InternalApplicationConfiguration.g:3965:2: '{' + // InternalApplicationConfiguration.g:3970:1: ( '{' ) + // InternalApplicationConfiguration.g:3971:2: '{' { before(grammarAccess.getFolderEntryAccess().getLeftCurlyBracketKeyword_2_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getFolderEntryAccess().getLeftCurlyBracketKeyword_2_1()); } @@ -12837,14 +12864,14 @@ public final void rule__FolderEntry__Group_2__1__Impl() throws RecognitionExcept // $ANTLR start "rule__FolderEntry__Group_2__2" - // InternalApplicationConfiguration.g:3974:1: rule__FolderEntry__Group_2__2 : rule__FolderEntry__Group_2__2__Impl rule__FolderEntry__Group_2__3 ; + // InternalApplicationConfiguration.g:3980:1: rule__FolderEntry__Group_2__2 : rule__FolderEntry__Group_2__2__Impl rule__FolderEntry__Group_2__3 ; public final void rule__FolderEntry__Group_2__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3978:1: ( rule__FolderEntry__Group_2__2__Impl rule__FolderEntry__Group_2__3 ) - // InternalApplicationConfiguration.g:3979:2: rule__FolderEntry__Group_2__2__Impl rule__FolderEntry__Group_2__3 + // InternalApplicationConfiguration.g:3984:1: ( rule__FolderEntry__Group_2__2__Impl rule__FolderEntry__Group_2__3 ) + // InternalApplicationConfiguration.g:3985:2: rule__FolderEntry__Group_2__2__Impl rule__FolderEntry__Group_2__3 { pushFollow(FOLLOW_15); rule__FolderEntry__Group_2__2__Impl(); @@ -12875,21 +12902,21 @@ public final void rule__FolderEntry__Group_2__2() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group_2__2__Impl" - // InternalApplicationConfiguration.g:3986:1: rule__FolderEntry__Group_2__2__Impl : ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) ; + // InternalApplicationConfiguration.g:3992:1: rule__FolderEntry__Group_2__2__Impl : ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) ; public final void rule__FolderEntry__Group_2__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:3990:1: ( ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) ) - // InternalApplicationConfiguration.g:3991:1: ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) + // InternalApplicationConfiguration.g:3996:1: ( ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) ) + // InternalApplicationConfiguration.g:3997:1: ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) { - // InternalApplicationConfiguration.g:3991:1: ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) - // InternalApplicationConfiguration.g:3992:2: ( rule__FolderEntry__ExclusionAssignment_2_2 ) + // InternalApplicationConfiguration.g:3997:1: ( ( rule__FolderEntry__ExclusionAssignment_2_2 ) ) + // InternalApplicationConfiguration.g:3998:2: ( rule__FolderEntry__ExclusionAssignment_2_2 ) { before(grammarAccess.getFolderEntryAccess().getExclusionAssignment_2_2()); - // InternalApplicationConfiguration.g:3993:2: ( rule__FolderEntry__ExclusionAssignment_2_2 ) - // InternalApplicationConfiguration.g:3993:3: rule__FolderEntry__ExclusionAssignment_2_2 + // InternalApplicationConfiguration.g:3999:2: ( rule__FolderEntry__ExclusionAssignment_2_2 ) + // InternalApplicationConfiguration.g:3999:3: rule__FolderEntry__ExclusionAssignment_2_2 { pushFollow(FOLLOW_2); rule__FolderEntry__ExclusionAssignment_2_2(); @@ -12922,14 +12949,14 @@ public final void rule__FolderEntry__Group_2__2__Impl() throws RecognitionExcept // $ANTLR start "rule__FolderEntry__Group_2__3" - // InternalApplicationConfiguration.g:4001:1: rule__FolderEntry__Group_2__3 : rule__FolderEntry__Group_2__3__Impl rule__FolderEntry__Group_2__4 ; + // InternalApplicationConfiguration.g:4007:1: rule__FolderEntry__Group_2__3 : rule__FolderEntry__Group_2__3__Impl rule__FolderEntry__Group_2__4 ; public final void rule__FolderEntry__Group_2__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4005:1: ( rule__FolderEntry__Group_2__3__Impl rule__FolderEntry__Group_2__4 ) - // InternalApplicationConfiguration.g:4006:2: rule__FolderEntry__Group_2__3__Impl rule__FolderEntry__Group_2__4 + // InternalApplicationConfiguration.g:4011:1: ( rule__FolderEntry__Group_2__3__Impl rule__FolderEntry__Group_2__4 ) + // InternalApplicationConfiguration.g:4012:2: rule__FolderEntry__Group_2__3__Impl rule__FolderEntry__Group_2__4 { pushFollow(FOLLOW_15); rule__FolderEntry__Group_2__3__Impl(); @@ -12960,33 +12987,33 @@ public final void rule__FolderEntry__Group_2__3() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group_2__3__Impl" - // InternalApplicationConfiguration.g:4013:1: rule__FolderEntry__Group_2__3__Impl : ( ( rule__FolderEntry__Group_2_3__0 )* ) ; + // InternalApplicationConfiguration.g:4019:1: rule__FolderEntry__Group_2__3__Impl : ( ( rule__FolderEntry__Group_2_3__0 )* ) ; public final void rule__FolderEntry__Group_2__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4017:1: ( ( ( rule__FolderEntry__Group_2_3__0 )* ) ) - // InternalApplicationConfiguration.g:4018:1: ( ( rule__FolderEntry__Group_2_3__0 )* ) + // InternalApplicationConfiguration.g:4023:1: ( ( ( rule__FolderEntry__Group_2_3__0 )* ) ) + // InternalApplicationConfiguration.g:4024:1: ( ( rule__FolderEntry__Group_2_3__0 )* ) { - // InternalApplicationConfiguration.g:4018:1: ( ( rule__FolderEntry__Group_2_3__0 )* ) - // InternalApplicationConfiguration.g:4019:2: ( rule__FolderEntry__Group_2_3__0 )* + // InternalApplicationConfiguration.g:4024:1: ( ( rule__FolderEntry__Group_2_3__0 )* ) + // InternalApplicationConfiguration.g:4025:2: ( rule__FolderEntry__Group_2_3__0 )* { before(grammarAccess.getFolderEntryAccess().getGroup_2_3()); - // InternalApplicationConfiguration.g:4020:2: ( rule__FolderEntry__Group_2_3__0 )* + // InternalApplicationConfiguration.g:4026:2: ( rule__FolderEntry__Group_2_3__0 )* loop41: do { int alt41=2; int LA41_0 = input.LA(1); - if ( (LA41_0==26) ) { + if ( (LA41_0==27) ) { alt41=1; } switch (alt41) { case 1 : - // InternalApplicationConfiguration.g:4020:3: rule__FolderEntry__Group_2_3__0 + // InternalApplicationConfiguration.g:4026:3: rule__FolderEntry__Group_2_3__0 { pushFollow(FOLLOW_16); rule__FolderEntry__Group_2_3__0(); @@ -13025,14 +13052,14 @@ public final void rule__FolderEntry__Group_2__3__Impl() throws RecognitionExcept // $ANTLR start "rule__FolderEntry__Group_2__4" - // InternalApplicationConfiguration.g:4028:1: rule__FolderEntry__Group_2__4 : rule__FolderEntry__Group_2__4__Impl ; + // InternalApplicationConfiguration.g:4034:1: rule__FolderEntry__Group_2__4 : rule__FolderEntry__Group_2__4__Impl ; public final void rule__FolderEntry__Group_2__4() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4032:1: ( rule__FolderEntry__Group_2__4__Impl ) - // InternalApplicationConfiguration.g:4033:2: rule__FolderEntry__Group_2__4__Impl + // InternalApplicationConfiguration.g:4038:1: ( rule__FolderEntry__Group_2__4__Impl ) + // InternalApplicationConfiguration.g:4039:2: rule__FolderEntry__Group_2__4__Impl { pushFollow(FOLLOW_2); rule__FolderEntry__Group_2__4__Impl(); @@ -13058,20 +13085,20 @@ public final void rule__FolderEntry__Group_2__4() throws RecognitionException { // $ANTLR start "rule__FolderEntry__Group_2__4__Impl" - // InternalApplicationConfiguration.g:4039:1: rule__FolderEntry__Group_2__4__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:4045:1: rule__FolderEntry__Group_2__4__Impl : ( '}' ) ; public final void rule__FolderEntry__Group_2__4__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4043:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:4044:1: ( '}' ) + // InternalApplicationConfiguration.g:4049:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:4050:1: ( '}' ) { - // InternalApplicationConfiguration.g:4044:1: ( '}' ) - // InternalApplicationConfiguration.g:4045:2: '}' + // InternalApplicationConfiguration.g:4050:1: ( '}' ) + // InternalApplicationConfiguration.g:4051:2: '}' { before(grammarAccess.getFolderEntryAccess().getRightCurlyBracketKeyword_2_4()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getFolderEntryAccess().getRightCurlyBracketKeyword_2_4()); } @@ -13095,14 +13122,14 @@ public final void rule__FolderEntry__Group_2__4__Impl() throws RecognitionExcept // $ANTLR start "rule__FolderEntry__Group_2_3__0" - // InternalApplicationConfiguration.g:4055:1: rule__FolderEntry__Group_2_3__0 : rule__FolderEntry__Group_2_3__0__Impl rule__FolderEntry__Group_2_3__1 ; + // InternalApplicationConfiguration.g:4061:1: rule__FolderEntry__Group_2_3__0 : rule__FolderEntry__Group_2_3__0__Impl rule__FolderEntry__Group_2_3__1 ; public final void rule__FolderEntry__Group_2_3__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4059:1: ( rule__FolderEntry__Group_2_3__0__Impl rule__FolderEntry__Group_2_3__1 ) - // InternalApplicationConfiguration.g:4060:2: rule__FolderEntry__Group_2_3__0__Impl rule__FolderEntry__Group_2_3__1 + // InternalApplicationConfiguration.g:4065:1: ( rule__FolderEntry__Group_2_3__0__Impl rule__FolderEntry__Group_2_3__1 ) + // InternalApplicationConfiguration.g:4066:2: rule__FolderEntry__Group_2_3__0__Impl rule__FolderEntry__Group_2_3__1 { pushFollow(FOLLOW_21); rule__FolderEntry__Group_2_3__0__Impl(); @@ -13133,20 +13160,20 @@ public final void rule__FolderEntry__Group_2_3__0() throws RecognitionException // $ANTLR start "rule__FolderEntry__Group_2_3__0__Impl" - // InternalApplicationConfiguration.g:4067:1: rule__FolderEntry__Group_2_3__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:4073:1: rule__FolderEntry__Group_2_3__0__Impl : ( ',' ) ; public final void rule__FolderEntry__Group_2_3__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4071:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:4072:1: ( ',' ) + // InternalApplicationConfiguration.g:4077:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:4078:1: ( ',' ) { - // InternalApplicationConfiguration.g:4072:1: ( ',' ) - // InternalApplicationConfiguration.g:4073:2: ',' + // InternalApplicationConfiguration.g:4078:1: ( ',' ) + // InternalApplicationConfiguration.g:4079:2: ',' { before(grammarAccess.getFolderEntryAccess().getCommaKeyword_2_3_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getFolderEntryAccess().getCommaKeyword_2_3_0()); } @@ -13170,14 +13197,14 @@ public final void rule__FolderEntry__Group_2_3__0__Impl() throws RecognitionExce // $ANTLR start "rule__FolderEntry__Group_2_3__1" - // InternalApplicationConfiguration.g:4082:1: rule__FolderEntry__Group_2_3__1 : rule__FolderEntry__Group_2_3__1__Impl ; + // InternalApplicationConfiguration.g:4088:1: rule__FolderEntry__Group_2_3__1 : rule__FolderEntry__Group_2_3__1__Impl ; public final void rule__FolderEntry__Group_2_3__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4086:1: ( rule__FolderEntry__Group_2_3__1__Impl ) - // InternalApplicationConfiguration.g:4087:2: rule__FolderEntry__Group_2_3__1__Impl + // InternalApplicationConfiguration.g:4092:1: ( rule__FolderEntry__Group_2_3__1__Impl ) + // InternalApplicationConfiguration.g:4093:2: rule__FolderEntry__Group_2_3__1__Impl { pushFollow(FOLLOW_2); rule__FolderEntry__Group_2_3__1__Impl(); @@ -13203,21 +13230,21 @@ public final void rule__FolderEntry__Group_2_3__1() throws RecognitionException // $ANTLR start "rule__FolderEntry__Group_2_3__1__Impl" - // InternalApplicationConfiguration.g:4093:1: rule__FolderEntry__Group_2_3__1__Impl : ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) ; + // InternalApplicationConfiguration.g:4099:1: rule__FolderEntry__Group_2_3__1__Impl : ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) ; public final void rule__FolderEntry__Group_2_3__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4097:1: ( ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) ) - // InternalApplicationConfiguration.g:4098:1: ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) + // InternalApplicationConfiguration.g:4103:1: ( ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) ) + // InternalApplicationConfiguration.g:4104:1: ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) { - // InternalApplicationConfiguration.g:4098:1: ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) - // InternalApplicationConfiguration.g:4099:2: ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) + // InternalApplicationConfiguration.g:4104:1: ( ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) ) + // InternalApplicationConfiguration.g:4105:2: ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) { before(grammarAccess.getFolderEntryAccess().getExclusionAssignment_2_3_1()); - // InternalApplicationConfiguration.g:4100:2: ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) - // InternalApplicationConfiguration.g:4100:3: rule__FolderEntry__ExclusionAssignment_2_3_1 + // InternalApplicationConfiguration.g:4106:2: ( rule__FolderEntry__ExclusionAssignment_2_3_1 ) + // InternalApplicationConfiguration.g:4106:3: rule__FolderEntry__ExclusionAssignment_2_3_1 { pushFollow(FOLLOW_2); rule__FolderEntry__ExclusionAssignment_2_3_1(); @@ -13250,14 +13277,14 @@ public final void rule__FolderEntry__Group_2_3__1__Impl() throws RecognitionExce // $ANTLR start "rule__PartialModelDeclaration__Group__0" - // InternalApplicationConfiguration.g:4109:1: rule__PartialModelDeclaration__Group__0 : rule__PartialModelDeclaration__Group__0__Impl rule__PartialModelDeclaration__Group__1 ; + // InternalApplicationConfiguration.g:4115:1: rule__PartialModelDeclaration__Group__0 : rule__PartialModelDeclaration__Group__0__Impl rule__PartialModelDeclaration__Group__1 ; public final void rule__PartialModelDeclaration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4113:1: ( rule__PartialModelDeclaration__Group__0__Impl rule__PartialModelDeclaration__Group__1 ) - // InternalApplicationConfiguration.g:4114:2: rule__PartialModelDeclaration__Group__0__Impl rule__PartialModelDeclaration__Group__1 + // InternalApplicationConfiguration.g:4119:1: ( rule__PartialModelDeclaration__Group__0__Impl rule__PartialModelDeclaration__Group__1 ) + // InternalApplicationConfiguration.g:4120:2: rule__PartialModelDeclaration__Group__0__Impl rule__PartialModelDeclaration__Group__1 { pushFollow(FOLLOW_8); rule__PartialModelDeclaration__Group__0__Impl(); @@ -13288,20 +13315,20 @@ public final void rule__PartialModelDeclaration__Group__0() throws RecognitionEx // $ANTLR start "rule__PartialModelDeclaration__Group__0__Impl" - // InternalApplicationConfiguration.g:4121:1: rule__PartialModelDeclaration__Group__0__Impl : ( 'models' ) ; + // InternalApplicationConfiguration.g:4127:1: rule__PartialModelDeclaration__Group__0__Impl : ( 'models' ) ; public final void rule__PartialModelDeclaration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4125:1: ( ( 'models' ) ) - // InternalApplicationConfiguration.g:4126:1: ( 'models' ) + // InternalApplicationConfiguration.g:4131:1: ( ( 'models' ) ) + // InternalApplicationConfiguration.g:4132:1: ( 'models' ) { - // InternalApplicationConfiguration.g:4126:1: ( 'models' ) - // InternalApplicationConfiguration.g:4127:2: 'models' + // InternalApplicationConfiguration.g:4132:1: ( 'models' ) + // InternalApplicationConfiguration.g:4133:2: 'models' { before(grammarAccess.getPartialModelDeclarationAccess().getModelsKeyword_0()); - match(input,32,FOLLOW_2); + match(input,33,FOLLOW_2); after(grammarAccess.getPartialModelDeclarationAccess().getModelsKeyword_0()); } @@ -13325,14 +13352,14 @@ public final void rule__PartialModelDeclaration__Group__0__Impl() throws Recogni // $ANTLR start "rule__PartialModelDeclaration__Group__1" - // InternalApplicationConfiguration.g:4136:1: rule__PartialModelDeclaration__Group__1 : rule__PartialModelDeclaration__Group__1__Impl rule__PartialModelDeclaration__Group__2 ; + // InternalApplicationConfiguration.g:4142:1: rule__PartialModelDeclaration__Group__1 : rule__PartialModelDeclaration__Group__1__Impl rule__PartialModelDeclaration__Group__2 ; public final void rule__PartialModelDeclaration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4140:1: ( rule__PartialModelDeclaration__Group__1__Impl rule__PartialModelDeclaration__Group__2 ) - // InternalApplicationConfiguration.g:4141:2: rule__PartialModelDeclaration__Group__1__Impl rule__PartialModelDeclaration__Group__2 + // InternalApplicationConfiguration.g:4146:1: ( rule__PartialModelDeclaration__Group__1__Impl rule__PartialModelDeclaration__Group__2 ) + // InternalApplicationConfiguration.g:4147:2: rule__PartialModelDeclaration__Group__1__Impl rule__PartialModelDeclaration__Group__2 { pushFollow(FOLLOW_18); rule__PartialModelDeclaration__Group__1__Impl(); @@ -13363,21 +13390,21 @@ public final void rule__PartialModelDeclaration__Group__1() throws RecognitionEx // $ANTLR start "rule__PartialModelDeclaration__Group__1__Impl" - // InternalApplicationConfiguration.g:4148:1: rule__PartialModelDeclaration__Group__1__Impl : ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:4154:1: rule__PartialModelDeclaration__Group__1__Impl : ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) ; public final void rule__PartialModelDeclaration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4152:1: ( ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:4153:1: ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:4158:1: ( ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:4159:1: ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) { - // InternalApplicationConfiguration.g:4153:1: ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) - // InternalApplicationConfiguration.g:4154:2: ( rule__PartialModelDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:4159:1: ( ( rule__PartialModelDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:4160:2: ( rule__PartialModelDeclaration__NameAssignment_1 ) { before(grammarAccess.getPartialModelDeclarationAccess().getNameAssignment_1()); - // InternalApplicationConfiguration.g:4155:2: ( rule__PartialModelDeclaration__NameAssignment_1 ) - // InternalApplicationConfiguration.g:4155:3: rule__PartialModelDeclaration__NameAssignment_1 + // InternalApplicationConfiguration.g:4161:2: ( rule__PartialModelDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:4161:3: rule__PartialModelDeclaration__NameAssignment_1 { pushFollow(FOLLOW_2); rule__PartialModelDeclaration__NameAssignment_1(); @@ -13410,14 +13437,14 @@ public final void rule__PartialModelDeclaration__Group__1__Impl() throws Recogni // $ANTLR start "rule__PartialModelDeclaration__Group__2" - // InternalApplicationConfiguration.g:4163:1: rule__PartialModelDeclaration__Group__2 : rule__PartialModelDeclaration__Group__2__Impl ; + // InternalApplicationConfiguration.g:4169:1: rule__PartialModelDeclaration__Group__2 : rule__PartialModelDeclaration__Group__2__Impl ; public final void rule__PartialModelDeclaration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4167:1: ( rule__PartialModelDeclaration__Group__2__Impl ) - // InternalApplicationConfiguration.g:4168:2: rule__PartialModelDeclaration__Group__2__Impl + // InternalApplicationConfiguration.g:4173:1: ( rule__PartialModelDeclaration__Group__2__Impl ) + // InternalApplicationConfiguration.g:4174:2: rule__PartialModelDeclaration__Group__2__Impl { pushFollow(FOLLOW_2); rule__PartialModelDeclaration__Group__2__Impl(); @@ -13443,21 +13470,21 @@ public final void rule__PartialModelDeclaration__Group__2() throws RecognitionEx // $ANTLR start "rule__PartialModelDeclaration__Group__2__Impl" - // InternalApplicationConfiguration.g:4174:1: rule__PartialModelDeclaration__Group__2__Impl : ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:4180:1: rule__PartialModelDeclaration__Group__2__Impl : ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) ; public final void rule__PartialModelDeclaration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4178:1: ( ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:4179:1: ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:4184:1: ( ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:4185:1: ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) { - // InternalApplicationConfiguration.g:4179:1: ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) - // InternalApplicationConfiguration.g:4180:2: ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:4185:1: ( ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:4186:2: ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) { before(grammarAccess.getPartialModelDeclarationAccess().getSpecificationAssignment_2()); - // InternalApplicationConfiguration.g:4181:2: ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) - // InternalApplicationConfiguration.g:4181:3: rule__PartialModelDeclaration__SpecificationAssignment_2 + // InternalApplicationConfiguration.g:4187:2: ( rule__PartialModelDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:4187:3: rule__PartialModelDeclaration__SpecificationAssignment_2 { pushFollow(FOLLOW_2); rule__PartialModelDeclaration__SpecificationAssignment_2(); @@ -13490,14 +13517,14 @@ public final void rule__PartialModelDeclaration__Group__2__Impl() throws Recogni // $ANTLR start "rule__PatternSpecification__Group__0" - // InternalApplicationConfiguration.g:4190:1: rule__PatternSpecification__Group__0 : rule__PatternSpecification__Group__0__Impl rule__PatternSpecification__Group__1 ; + // InternalApplicationConfiguration.g:4196:1: rule__PatternSpecification__Group__0 : rule__PatternSpecification__Group__0__Impl rule__PatternSpecification__Group__1 ; public final void rule__PatternSpecification__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4194:1: ( rule__PatternSpecification__Group__0__Impl rule__PatternSpecification__Group__1 ) - // InternalApplicationConfiguration.g:4195:2: rule__PatternSpecification__Group__0__Impl rule__PatternSpecification__Group__1 + // InternalApplicationConfiguration.g:4200:1: ( rule__PatternSpecification__Group__0__Impl rule__PatternSpecification__Group__1 ) + // InternalApplicationConfiguration.g:4201:2: rule__PatternSpecification__Group__0__Impl rule__PatternSpecification__Group__1 { pushFollow(FOLLOW_14); rule__PatternSpecification__Group__0__Impl(); @@ -13528,20 +13555,20 @@ public final void rule__PatternSpecification__Group__0() throws RecognitionExcep // $ANTLR start "rule__PatternSpecification__Group__0__Impl" - // InternalApplicationConfiguration.g:4202:1: rule__PatternSpecification__Group__0__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:4208:1: rule__PatternSpecification__Group__0__Impl : ( '{' ) ; public final void rule__PatternSpecification__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4206:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:4207:1: ( '{' ) + // InternalApplicationConfiguration.g:4212:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:4213:1: ( '{' ) { - // InternalApplicationConfiguration.g:4207:1: ( '{' ) - // InternalApplicationConfiguration.g:4208:2: '{' + // InternalApplicationConfiguration.g:4213:1: ( '{' ) + // InternalApplicationConfiguration.g:4214:2: '{' { before(grammarAccess.getPatternSpecificationAccess().getLeftCurlyBracketKeyword_0()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getPatternSpecificationAccess().getLeftCurlyBracketKeyword_0()); } @@ -13565,14 +13592,14 @@ public final void rule__PatternSpecification__Group__0__Impl() throws Recognitio // $ANTLR start "rule__PatternSpecification__Group__1" - // InternalApplicationConfiguration.g:4217:1: rule__PatternSpecification__Group__1 : rule__PatternSpecification__Group__1__Impl rule__PatternSpecification__Group__2 ; + // InternalApplicationConfiguration.g:4223:1: rule__PatternSpecification__Group__1 : rule__PatternSpecification__Group__1__Impl rule__PatternSpecification__Group__2 ; public final void rule__PatternSpecification__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4221:1: ( rule__PatternSpecification__Group__1__Impl rule__PatternSpecification__Group__2 ) - // InternalApplicationConfiguration.g:4222:2: rule__PatternSpecification__Group__1__Impl rule__PatternSpecification__Group__2 + // InternalApplicationConfiguration.g:4227:1: ( rule__PatternSpecification__Group__1__Impl rule__PatternSpecification__Group__2 ) + // InternalApplicationConfiguration.g:4228:2: rule__PatternSpecification__Group__1__Impl rule__PatternSpecification__Group__2 { pushFollow(FOLLOW_15); rule__PatternSpecification__Group__1__Impl(); @@ -13603,21 +13630,21 @@ public final void rule__PatternSpecification__Group__1() throws RecognitionExcep // $ANTLR start "rule__PatternSpecification__Group__1__Impl" - // InternalApplicationConfiguration.g:4229:1: rule__PatternSpecification__Group__1__Impl : ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:4235:1: rule__PatternSpecification__Group__1__Impl : ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) ; public final void rule__PatternSpecification__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4233:1: ( ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:4234:1: ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) + // InternalApplicationConfiguration.g:4239:1: ( ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:4240:1: ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) { - // InternalApplicationConfiguration.g:4234:1: ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) - // InternalApplicationConfiguration.g:4235:2: ( rule__PatternSpecification__EntriesAssignment_1 ) + // InternalApplicationConfiguration.g:4240:1: ( ( rule__PatternSpecification__EntriesAssignment_1 ) ) + // InternalApplicationConfiguration.g:4241:2: ( rule__PatternSpecification__EntriesAssignment_1 ) { before(grammarAccess.getPatternSpecificationAccess().getEntriesAssignment_1()); - // InternalApplicationConfiguration.g:4236:2: ( rule__PatternSpecification__EntriesAssignment_1 ) - // InternalApplicationConfiguration.g:4236:3: rule__PatternSpecification__EntriesAssignment_1 + // InternalApplicationConfiguration.g:4242:2: ( rule__PatternSpecification__EntriesAssignment_1 ) + // InternalApplicationConfiguration.g:4242:3: rule__PatternSpecification__EntriesAssignment_1 { pushFollow(FOLLOW_2); rule__PatternSpecification__EntriesAssignment_1(); @@ -13650,14 +13677,14 @@ public final void rule__PatternSpecification__Group__1__Impl() throws Recognitio // $ANTLR start "rule__PatternSpecification__Group__2" - // InternalApplicationConfiguration.g:4244:1: rule__PatternSpecification__Group__2 : rule__PatternSpecification__Group__2__Impl rule__PatternSpecification__Group__3 ; + // InternalApplicationConfiguration.g:4250:1: rule__PatternSpecification__Group__2 : rule__PatternSpecification__Group__2__Impl rule__PatternSpecification__Group__3 ; public final void rule__PatternSpecification__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4248:1: ( rule__PatternSpecification__Group__2__Impl rule__PatternSpecification__Group__3 ) - // InternalApplicationConfiguration.g:4249:2: rule__PatternSpecification__Group__2__Impl rule__PatternSpecification__Group__3 + // InternalApplicationConfiguration.g:4254:1: ( rule__PatternSpecification__Group__2__Impl rule__PatternSpecification__Group__3 ) + // InternalApplicationConfiguration.g:4255:2: rule__PatternSpecification__Group__2__Impl rule__PatternSpecification__Group__3 { pushFollow(FOLLOW_15); rule__PatternSpecification__Group__2__Impl(); @@ -13688,33 +13715,33 @@ public final void rule__PatternSpecification__Group__2() throws RecognitionExcep // $ANTLR start "rule__PatternSpecification__Group__2__Impl" - // InternalApplicationConfiguration.g:4256:1: rule__PatternSpecification__Group__2__Impl : ( ( rule__PatternSpecification__Group_2__0 )* ) ; + // InternalApplicationConfiguration.g:4262:1: rule__PatternSpecification__Group__2__Impl : ( ( rule__PatternSpecification__Group_2__0 )* ) ; public final void rule__PatternSpecification__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4260:1: ( ( ( rule__PatternSpecification__Group_2__0 )* ) ) - // InternalApplicationConfiguration.g:4261:1: ( ( rule__PatternSpecification__Group_2__0 )* ) + // InternalApplicationConfiguration.g:4266:1: ( ( ( rule__PatternSpecification__Group_2__0 )* ) ) + // InternalApplicationConfiguration.g:4267:1: ( ( rule__PatternSpecification__Group_2__0 )* ) { - // InternalApplicationConfiguration.g:4261:1: ( ( rule__PatternSpecification__Group_2__0 )* ) - // InternalApplicationConfiguration.g:4262:2: ( rule__PatternSpecification__Group_2__0 )* + // InternalApplicationConfiguration.g:4267:1: ( ( rule__PatternSpecification__Group_2__0 )* ) + // InternalApplicationConfiguration.g:4268:2: ( rule__PatternSpecification__Group_2__0 )* { before(grammarAccess.getPatternSpecificationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:4263:2: ( rule__PatternSpecification__Group_2__0 )* + // InternalApplicationConfiguration.g:4269:2: ( rule__PatternSpecification__Group_2__0 )* loop42: do { int alt42=2; int LA42_0 = input.LA(1); - if ( (LA42_0==26) ) { + if ( (LA42_0==27) ) { alt42=1; } switch (alt42) { case 1 : - // InternalApplicationConfiguration.g:4263:3: rule__PatternSpecification__Group_2__0 + // InternalApplicationConfiguration.g:4269:3: rule__PatternSpecification__Group_2__0 { pushFollow(FOLLOW_16); rule__PatternSpecification__Group_2__0(); @@ -13753,14 +13780,14 @@ public final void rule__PatternSpecification__Group__2__Impl() throws Recognitio // $ANTLR start "rule__PatternSpecification__Group__3" - // InternalApplicationConfiguration.g:4271:1: rule__PatternSpecification__Group__3 : rule__PatternSpecification__Group__3__Impl ; + // InternalApplicationConfiguration.g:4277:1: rule__PatternSpecification__Group__3 : rule__PatternSpecification__Group__3__Impl ; public final void rule__PatternSpecification__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4275:1: ( rule__PatternSpecification__Group__3__Impl ) - // InternalApplicationConfiguration.g:4276:2: rule__PatternSpecification__Group__3__Impl + // InternalApplicationConfiguration.g:4281:1: ( rule__PatternSpecification__Group__3__Impl ) + // InternalApplicationConfiguration.g:4282:2: rule__PatternSpecification__Group__3__Impl { pushFollow(FOLLOW_2); rule__PatternSpecification__Group__3__Impl(); @@ -13786,20 +13813,20 @@ public final void rule__PatternSpecification__Group__3() throws RecognitionExcep // $ANTLR start "rule__PatternSpecification__Group__3__Impl" - // InternalApplicationConfiguration.g:4282:1: rule__PatternSpecification__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:4288:1: rule__PatternSpecification__Group__3__Impl : ( '}' ) ; public final void rule__PatternSpecification__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4286:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:4287:1: ( '}' ) + // InternalApplicationConfiguration.g:4292:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:4293:1: ( '}' ) { - // InternalApplicationConfiguration.g:4287:1: ( '}' ) - // InternalApplicationConfiguration.g:4288:2: '}' + // InternalApplicationConfiguration.g:4293:1: ( '}' ) + // InternalApplicationConfiguration.g:4294:2: '}' { before(grammarAccess.getPatternSpecificationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getPatternSpecificationAccess().getRightCurlyBracketKeyword_3()); } @@ -13823,14 +13850,14 @@ public final void rule__PatternSpecification__Group__3__Impl() throws Recognitio // $ANTLR start "rule__PatternSpecification__Group_2__0" - // InternalApplicationConfiguration.g:4298:1: rule__PatternSpecification__Group_2__0 : rule__PatternSpecification__Group_2__0__Impl rule__PatternSpecification__Group_2__1 ; + // InternalApplicationConfiguration.g:4304:1: rule__PatternSpecification__Group_2__0 : rule__PatternSpecification__Group_2__0__Impl rule__PatternSpecification__Group_2__1 ; public final void rule__PatternSpecification__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4302:1: ( rule__PatternSpecification__Group_2__0__Impl rule__PatternSpecification__Group_2__1 ) - // InternalApplicationConfiguration.g:4303:2: rule__PatternSpecification__Group_2__0__Impl rule__PatternSpecification__Group_2__1 + // InternalApplicationConfiguration.g:4308:1: ( rule__PatternSpecification__Group_2__0__Impl rule__PatternSpecification__Group_2__1 ) + // InternalApplicationConfiguration.g:4309:2: rule__PatternSpecification__Group_2__0__Impl rule__PatternSpecification__Group_2__1 { pushFollow(FOLLOW_14); rule__PatternSpecification__Group_2__0__Impl(); @@ -13861,20 +13888,20 @@ public final void rule__PatternSpecification__Group_2__0() throws RecognitionExc // $ANTLR start "rule__PatternSpecification__Group_2__0__Impl" - // InternalApplicationConfiguration.g:4310:1: rule__PatternSpecification__Group_2__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:4316:1: rule__PatternSpecification__Group_2__0__Impl : ( ',' ) ; public final void rule__PatternSpecification__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4314:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:4315:1: ( ',' ) + // InternalApplicationConfiguration.g:4320:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:4321:1: ( ',' ) { - // InternalApplicationConfiguration.g:4315:1: ( ',' ) - // InternalApplicationConfiguration.g:4316:2: ',' + // InternalApplicationConfiguration.g:4321:1: ( ',' ) + // InternalApplicationConfiguration.g:4322:2: ',' { before(grammarAccess.getPatternSpecificationAccess().getCommaKeyword_2_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getPatternSpecificationAccess().getCommaKeyword_2_0()); } @@ -13898,14 +13925,14 @@ public final void rule__PatternSpecification__Group_2__0__Impl() throws Recognit // $ANTLR start "rule__PatternSpecification__Group_2__1" - // InternalApplicationConfiguration.g:4325:1: rule__PatternSpecification__Group_2__1 : rule__PatternSpecification__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:4331:1: rule__PatternSpecification__Group_2__1 : rule__PatternSpecification__Group_2__1__Impl ; public final void rule__PatternSpecification__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4329:1: ( rule__PatternSpecification__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:4330:2: rule__PatternSpecification__Group_2__1__Impl + // InternalApplicationConfiguration.g:4335:1: ( rule__PatternSpecification__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:4336:2: rule__PatternSpecification__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__PatternSpecification__Group_2__1__Impl(); @@ -13931,21 +13958,21 @@ public final void rule__PatternSpecification__Group_2__1() throws RecognitionExc // $ANTLR start "rule__PatternSpecification__Group_2__1__Impl" - // InternalApplicationConfiguration.g:4336:1: rule__PatternSpecification__Group_2__1__Impl : ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) ; + // InternalApplicationConfiguration.g:4342:1: rule__PatternSpecification__Group_2__1__Impl : ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) ; public final void rule__PatternSpecification__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4340:1: ( ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) ) - // InternalApplicationConfiguration.g:4341:1: ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:4346:1: ( ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) ) + // InternalApplicationConfiguration.g:4347:1: ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) { - // InternalApplicationConfiguration.g:4341:1: ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) - // InternalApplicationConfiguration.g:4342:2: ( rule__PatternSpecification__EntriesAssignment_2_1 ) + // InternalApplicationConfiguration.g:4347:1: ( ( rule__PatternSpecification__EntriesAssignment_2_1 ) ) + // InternalApplicationConfiguration.g:4348:2: ( rule__PatternSpecification__EntriesAssignment_2_1 ) { before(grammarAccess.getPatternSpecificationAccess().getEntriesAssignment_2_1()); - // InternalApplicationConfiguration.g:4343:2: ( rule__PatternSpecification__EntriesAssignment_2_1 ) - // InternalApplicationConfiguration.g:4343:3: rule__PatternSpecification__EntriesAssignment_2_1 + // InternalApplicationConfiguration.g:4349:2: ( rule__PatternSpecification__EntriesAssignment_2_1 ) + // InternalApplicationConfiguration.g:4349:3: rule__PatternSpecification__EntriesAssignment_2_1 { pushFollow(FOLLOW_2); rule__PatternSpecification__EntriesAssignment_2_1(); @@ -13978,14 +14005,14 @@ public final void rule__PatternSpecification__Group_2__1__Impl() throws Recognit // $ANTLR start "rule__AllPatternEntry__Group__0" - // InternalApplicationConfiguration.g:4352:1: rule__AllPatternEntry__Group__0 : rule__AllPatternEntry__Group__0__Impl rule__AllPatternEntry__Group__1 ; + // InternalApplicationConfiguration.g:4358:1: rule__AllPatternEntry__Group__0 : rule__AllPatternEntry__Group__0__Impl rule__AllPatternEntry__Group__1 ; public final void rule__AllPatternEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4356:1: ( rule__AllPatternEntry__Group__0__Impl rule__AllPatternEntry__Group__1 ) - // InternalApplicationConfiguration.g:4357:2: rule__AllPatternEntry__Group__0__Impl rule__AllPatternEntry__Group__1 + // InternalApplicationConfiguration.g:4362:1: ( rule__AllPatternEntry__Group__0__Impl rule__AllPatternEntry__Group__1 ) + // InternalApplicationConfiguration.g:4363:2: rule__AllPatternEntry__Group__0__Impl rule__AllPatternEntry__Group__1 { pushFollow(FOLLOW_8); rule__AllPatternEntry__Group__0__Impl(); @@ -14016,20 +14043,20 @@ public final void rule__AllPatternEntry__Group__0() throws RecognitionException // $ANTLR start "rule__AllPatternEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:4364:1: rule__AllPatternEntry__Group__0__Impl : ( 'package' ) ; + // InternalApplicationConfiguration.g:4370:1: rule__AllPatternEntry__Group__0__Impl : ( 'package' ) ; public final void rule__AllPatternEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4368:1: ( ( 'package' ) ) - // InternalApplicationConfiguration.g:4369:1: ( 'package' ) + // InternalApplicationConfiguration.g:4374:1: ( ( 'package' ) ) + // InternalApplicationConfiguration.g:4375:1: ( 'package' ) { - // InternalApplicationConfiguration.g:4369:1: ( 'package' ) - // InternalApplicationConfiguration.g:4370:2: 'package' + // InternalApplicationConfiguration.g:4375:1: ( 'package' ) + // InternalApplicationConfiguration.g:4376:2: 'package' { before(grammarAccess.getAllPatternEntryAccess().getPackageKeyword_0()); - match(input,27,FOLLOW_2); + match(input,28,FOLLOW_2); after(grammarAccess.getAllPatternEntryAccess().getPackageKeyword_0()); } @@ -14053,14 +14080,14 @@ public final void rule__AllPatternEntry__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__AllPatternEntry__Group__1" - // InternalApplicationConfiguration.g:4379:1: rule__AllPatternEntry__Group__1 : rule__AllPatternEntry__Group__1__Impl rule__AllPatternEntry__Group__2 ; + // InternalApplicationConfiguration.g:4385:1: rule__AllPatternEntry__Group__1 : rule__AllPatternEntry__Group__1__Impl rule__AllPatternEntry__Group__2 ; public final void rule__AllPatternEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4383:1: ( rule__AllPatternEntry__Group__1__Impl rule__AllPatternEntry__Group__2 ) - // InternalApplicationConfiguration.g:4384:2: rule__AllPatternEntry__Group__1__Impl rule__AllPatternEntry__Group__2 + // InternalApplicationConfiguration.g:4389:1: ( rule__AllPatternEntry__Group__1__Impl rule__AllPatternEntry__Group__2 ) + // InternalApplicationConfiguration.g:4390:2: rule__AllPatternEntry__Group__1__Impl rule__AllPatternEntry__Group__2 { pushFollow(FOLLOW_17); rule__AllPatternEntry__Group__1__Impl(); @@ -14091,21 +14118,21 @@ public final void rule__AllPatternEntry__Group__1() throws RecognitionException // $ANTLR start "rule__AllPatternEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:4391:1: rule__AllPatternEntry__Group__1__Impl : ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:4397:1: rule__AllPatternEntry__Group__1__Impl : ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) ; public final void rule__AllPatternEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4395:1: ( ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:4396:1: ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) + // InternalApplicationConfiguration.g:4401:1: ( ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:4402:1: ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) { - // InternalApplicationConfiguration.g:4396:1: ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) - // InternalApplicationConfiguration.g:4397:2: ( rule__AllPatternEntry__PackageAssignment_1 ) + // InternalApplicationConfiguration.g:4402:1: ( ( rule__AllPatternEntry__PackageAssignment_1 ) ) + // InternalApplicationConfiguration.g:4403:2: ( rule__AllPatternEntry__PackageAssignment_1 ) { before(grammarAccess.getAllPatternEntryAccess().getPackageAssignment_1()); - // InternalApplicationConfiguration.g:4398:2: ( rule__AllPatternEntry__PackageAssignment_1 ) - // InternalApplicationConfiguration.g:4398:3: rule__AllPatternEntry__PackageAssignment_1 + // InternalApplicationConfiguration.g:4404:2: ( rule__AllPatternEntry__PackageAssignment_1 ) + // InternalApplicationConfiguration.g:4404:3: rule__AllPatternEntry__PackageAssignment_1 { pushFollow(FOLLOW_2); rule__AllPatternEntry__PackageAssignment_1(); @@ -14138,14 +14165,14 @@ public final void rule__AllPatternEntry__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__AllPatternEntry__Group__2" - // InternalApplicationConfiguration.g:4406:1: rule__AllPatternEntry__Group__2 : rule__AllPatternEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:4412:1: rule__AllPatternEntry__Group__2 : rule__AllPatternEntry__Group__2__Impl ; public final void rule__AllPatternEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4410:1: ( rule__AllPatternEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:4411:2: rule__AllPatternEntry__Group__2__Impl + // InternalApplicationConfiguration.g:4416:1: ( rule__AllPatternEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:4417:2: rule__AllPatternEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__AllPatternEntry__Group__2__Impl(); @@ -14171,29 +14198,29 @@ public final void rule__AllPatternEntry__Group__2() throws RecognitionException // $ANTLR start "rule__AllPatternEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:4417:1: rule__AllPatternEntry__Group__2__Impl : ( ( rule__AllPatternEntry__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:4423:1: rule__AllPatternEntry__Group__2__Impl : ( ( rule__AllPatternEntry__Group_2__0 )? ) ; public final void rule__AllPatternEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4421:1: ( ( ( rule__AllPatternEntry__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:4422:1: ( ( rule__AllPatternEntry__Group_2__0 )? ) + // InternalApplicationConfiguration.g:4427:1: ( ( ( rule__AllPatternEntry__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:4428:1: ( ( rule__AllPatternEntry__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:4422:1: ( ( rule__AllPatternEntry__Group_2__0 )? ) - // InternalApplicationConfiguration.g:4423:2: ( rule__AllPatternEntry__Group_2__0 )? + // InternalApplicationConfiguration.g:4428:1: ( ( rule__AllPatternEntry__Group_2__0 )? ) + // InternalApplicationConfiguration.g:4429:2: ( rule__AllPatternEntry__Group_2__0 )? { before(grammarAccess.getAllPatternEntryAccess().getGroup_2()); - // InternalApplicationConfiguration.g:4424:2: ( rule__AllPatternEntry__Group_2__0 )? + // InternalApplicationConfiguration.g:4430:2: ( rule__AllPatternEntry__Group_2__0 )? int alt43=2; int LA43_0 = input.LA(1); - if ( (LA43_0==28) ) { + if ( (LA43_0==29) ) { alt43=1; } switch (alt43) { case 1 : - // InternalApplicationConfiguration.g:4424:3: rule__AllPatternEntry__Group_2__0 + // InternalApplicationConfiguration.g:4430:3: rule__AllPatternEntry__Group_2__0 { pushFollow(FOLLOW_2); rule__AllPatternEntry__Group_2__0(); @@ -14229,14 +14256,14 @@ public final void rule__AllPatternEntry__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__AllPatternEntry__Group_2__0" - // InternalApplicationConfiguration.g:4433:1: rule__AllPatternEntry__Group_2__0 : rule__AllPatternEntry__Group_2__0__Impl rule__AllPatternEntry__Group_2__1 ; + // InternalApplicationConfiguration.g:4439:1: rule__AllPatternEntry__Group_2__0 : rule__AllPatternEntry__Group_2__0__Impl rule__AllPatternEntry__Group_2__1 ; public final void rule__AllPatternEntry__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4437:1: ( rule__AllPatternEntry__Group_2__0__Impl rule__AllPatternEntry__Group_2__1 ) - // InternalApplicationConfiguration.g:4438:2: rule__AllPatternEntry__Group_2__0__Impl rule__AllPatternEntry__Group_2__1 + // InternalApplicationConfiguration.g:4443:1: ( rule__AllPatternEntry__Group_2__0__Impl rule__AllPatternEntry__Group_2__1 ) + // InternalApplicationConfiguration.g:4444:2: rule__AllPatternEntry__Group_2__0__Impl rule__AllPatternEntry__Group_2__1 { pushFollow(FOLLOW_18); rule__AllPatternEntry__Group_2__0__Impl(); @@ -14267,20 +14294,20 @@ public final void rule__AllPatternEntry__Group_2__0() throws RecognitionExceptio // $ANTLR start "rule__AllPatternEntry__Group_2__0__Impl" - // InternalApplicationConfiguration.g:4445:1: rule__AllPatternEntry__Group_2__0__Impl : ( 'excluding' ) ; + // InternalApplicationConfiguration.g:4451:1: rule__AllPatternEntry__Group_2__0__Impl : ( 'excluding' ) ; public final void rule__AllPatternEntry__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4449:1: ( ( 'excluding' ) ) - // InternalApplicationConfiguration.g:4450:1: ( 'excluding' ) + // InternalApplicationConfiguration.g:4455:1: ( ( 'excluding' ) ) + // InternalApplicationConfiguration.g:4456:1: ( 'excluding' ) { - // InternalApplicationConfiguration.g:4450:1: ( 'excluding' ) - // InternalApplicationConfiguration.g:4451:2: 'excluding' + // InternalApplicationConfiguration.g:4456:1: ( 'excluding' ) + // InternalApplicationConfiguration.g:4457:2: 'excluding' { before(grammarAccess.getAllPatternEntryAccess().getExcludingKeyword_2_0()); - match(input,28,FOLLOW_2); + match(input,29,FOLLOW_2); after(grammarAccess.getAllPatternEntryAccess().getExcludingKeyword_2_0()); } @@ -14304,14 +14331,14 @@ public final void rule__AllPatternEntry__Group_2__0__Impl() throws RecognitionEx // $ANTLR start "rule__AllPatternEntry__Group_2__1" - // InternalApplicationConfiguration.g:4460:1: rule__AllPatternEntry__Group_2__1 : rule__AllPatternEntry__Group_2__1__Impl rule__AllPatternEntry__Group_2__2 ; + // InternalApplicationConfiguration.g:4466:1: rule__AllPatternEntry__Group_2__1 : rule__AllPatternEntry__Group_2__1__Impl rule__AllPatternEntry__Group_2__2 ; public final void rule__AllPatternEntry__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4464:1: ( rule__AllPatternEntry__Group_2__1__Impl rule__AllPatternEntry__Group_2__2 ) - // InternalApplicationConfiguration.g:4465:2: rule__AllPatternEntry__Group_2__1__Impl rule__AllPatternEntry__Group_2__2 + // InternalApplicationConfiguration.g:4470:1: ( rule__AllPatternEntry__Group_2__1__Impl rule__AllPatternEntry__Group_2__2 ) + // InternalApplicationConfiguration.g:4471:2: rule__AllPatternEntry__Group_2__1__Impl rule__AllPatternEntry__Group_2__2 { pushFollow(FOLLOW_8); rule__AllPatternEntry__Group_2__1__Impl(); @@ -14342,20 +14369,20 @@ public final void rule__AllPatternEntry__Group_2__1() throws RecognitionExceptio // $ANTLR start "rule__AllPatternEntry__Group_2__1__Impl" - // InternalApplicationConfiguration.g:4472:1: rule__AllPatternEntry__Group_2__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:4478:1: rule__AllPatternEntry__Group_2__1__Impl : ( '{' ) ; public final void rule__AllPatternEntry__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4476:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:4477:1: ( '{' ) + // InternalApplicationConfiguration.g:4482:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:4483:1: ( '{' ) { - // InternalApplicationConfiguration.g:4477:1: ( '{' ) - // InternalApplicationConfiguration.g:4478:2: '{' + // InternalApplicationConfiguration.g:4483:1: ( '{' ) + // InternalApplicationConfiguration.g:4484:2: '{' { before(grammarAccess.getAllPatternEntryAccess().getLeftCurlyBracketKeyword_2_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getAllPatternEntryAccess().getLeftCurlyBracketKeyword_2_1()); } @@ -14379,14 +14406,14 @@ public final void rule__AllPatternEntry__Group_2__1__Impl() throws RecognitionEx // $ANTLR start "rule__AllPatternEntry__Group_2__2" - // InternalApplicationConfiguration.g:4487:1: rule__AllPatternEntry__Group_2__2 : rule__AllPatternEntry__Group_2__2__Impl rule__AllPatternEntry__Group_2__3 ; + // InternalApplicationConfiguration.g:4493:1: rule__AllPatternEntry__Group_2__2 : rule__AllPatternEntry__Group_2__2__Impl rule__AllPatternEntry__Group_2__3 ; public final void rule__AllPatternEntry__Group_2__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4491:1: ( rule__AllPatternEntry__Group_2__2__Impl rule__AllPatternEntry__Group_2__3 ) - // InternalApplicationConfiguration.g:4492:2: rule__AllPatternEntry__Group_2__2__Impl rule__AllPatternEntry__Group_2__3 + // InternalApplicationConfiguration.g:4497:1: ( rule__AllPatternEntry__Group_2__2__Impl rule__AllPatternEntry__Group_2__3 ) + // InternalApplicationConfiguration.g:4498:2: rule__AllPatternEntry__Group_2__2__Impl rule__AllPatternEntry__Group_2__3 { pushFollow(FOLLOW_15); rule__AllPatternEntry__Group_2__2__Impl(); @@ -14417,21 +14444,21 @@ public final void rule__AllPatternEntry__Group_2__2() throws RecognitionExceptio // $ANTLR start "rule__AllPatternEntry__Group_2__2__Impl" - // InternalApplicationConfiguration.g:4499:1: rule__AllPatternEntry__Group_2__2__Impl : ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) ; + // InternalApplicationConfiguration.g:4505:1: rule__AllPatternEntry__Group_2__2__Impl : ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) ; public final void rule__AllPatternEntry__Group_2__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4503:1: ( ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) ) - // InternalApplicationConfiguration.g:4504:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) + // InternalApplicationConfiguration.g:4509:1: ( ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) ) + // InternalApplicationConfiguration.g:4510:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) { - // InternalApplicationConfiguration.g:4504:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) - // InternalApplicationConfiguration.g:4505:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) + // InternalApplicationConfiguration.g:4510:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) ) + // InternalApplicationConfiguration.g:4511:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) { before(grammarAccess.getAllPatternEntryAccess().getExclusuionAssignment_2_2()); - // InternalApplicationConfiguration.g:4506:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) - // InternalApplicationConfiguration.g:4506:3: rule__AllPatternEntry__ExclusuionAssignment_2_2 + // InternalApplicationConfiguration.g:4512:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_2 ) + // InternalApplicationConfiguration.g:4512:3: rule__AllPatternEntry__ExclusuionAssignment_2_2 { pushFollow(FOLLOW_2); rule__AllPatternEntry__ExclusuionAssignment_2_2(); @@ -14464,14 +14491,14 @@ public final void rule__AllPatternEntry__Group_2__2__Impl() throws RecognitionEx // $ANTLR start "rule__AllPatternEntry__Group_2__3" - // InternalApplicationConfiguration.g:4514:1: rule__AllPatternEntry__Group_2__3 : rule__AllPatternEntry__Group_2__3__Impl rule__AllPatternEntry__Group_2__4 ; + // InternalApplicationConfiguration.g:4520:1: rule__AllPatternEntry__Group_2__3 : rule__AllPatternEntry__Group_2__3__Impl rule__AllPatternEntry__Group_2__4 ; public final void rule__AllPatternEntry__Group_2__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4518:1: ( rule__AllPatternEntry__Group_2__3__Impl rule__AllPatternEntry__Group_2__4 ) - // InternalApplicationConfiguration.g:4519:2: rule__AllPatternEntry__Group_2__3__Impl rule__AllPatternEntry__Group_2__4 + // InternalApplicationConfiguration.g:4524:1: ( rule__AllPatternEntry__Group_2__3__Impl rule__AllPatternEntry__Group_2__4 ) + // InternalApplicationConfiguration.g:4525:2: rule__AllPatternEntry__Group_2__3__Impl rule__AllPatternEntry__Group_2__4 { pushFollow(FOLLOW_15); rule__AllPatternEntry__Group_2__3__Impl(); @@ -14502,33 +14529,33 @@ public final void rule__AllPatternEntry__Group_2__3() throws RecognitionExceptio // $ANTLR start "rule__AllPatternEntry__Group_2__3__Impl" - // InternalApplicationConfiguration.g:4526:1: rule__AllPatternEntry__Group_2__3__Impl : ( ( rule__AllPatternEntry__Group_2_3__0 )* ) ; + // InternalApplicationConfiguration.g:4532:1: rule__AllPatternEntry__Group_2__3__Impl : ( ( rule__AllPatternEntry__Group_2_3__0 )* ) ; public final void rule__AllPatternEntry__Group_2__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4530:1: ( ( ( rule__AllPatternEntry__Group_2_3__0 )* ) ) - // InternalApplicationConfiguration.g:4531:1: ( ( rule__AllPatternEntry__Group_2_3__0 )* ) + // InternalApplicationConfiguration.g:4536:1: ( ( ( rule__AllPatternEntry__Group_2_3__0 )* ) ) + // InternalApplicationConfiguration.g:4537:1: ( ( rule__AllPatternEntry__Group_2_3__0 )* ) { - // InternalApplicationConfiguration.g:4531:1: ( ( rule__AllPatternEntry__Group_2_3__0 )* ) - // InternalApplicationConfiguration.g:4532:2: ( rule__AllPatternEntry__Group_2_3__0 )* + // InternalApplicationConfiguration.g:4537:1: ( ( rule__AllPatternEntry__Group_2_3__0 )* ) + // InternalApplicationConfiguration.g:4538:2: ( rule__AllPatternEntry__Group_2_3__0 )* { before(grammarAccess.getAllPatternEntryAccess().getGroup_2_3()); - // InternalApplicationConfiguration.g:4533:2: ( rule__AllPatternEntry__Group_2_3__0 )* + // InternalApplicationConfiguration.g:4539:2: ( rule__AllPatternEntry__Group_2_3__0 )* loop44: do { int alt44=2; int LA44_0 = input.LA(1); - if ( (LA44_0==26) ) { + if ( (LA44_0==27) ) { alt44=1; } switch (alt44) { case 1 : - // InternalApplicationConfiguration.g:4533:3: rule__AllPatternEntry__Group_2_3__0 + // InternalApplicationConfiguration.g:4539:3: rule__AllPatternEntry__Group_2_3__0 { pushFollow(FOLLOW_16); rule__AllPatternEntry__Group_2_3__0(); @@ -14567,14 +14594,14 @@ public final void rule__AllPatternEntry__Group_2__3__Impl() throws RecognitionEx // $ANTLR start "rule__AllPatternEntry__Group_2__4" - // InternalApplicationConfiguration.g:4541:1: rule__AllPatternEntry__Group_2__4 : rule__AllPatternEntry__Group_2__4__Impl ; + // InternalApplicationConfiguration.g:4547:1: rule__AllPatternEntry__Group_2__4 : rule__AllPatternEntry__Group_2__4__Impl ; public final void rule__AllPatternEntry__Group_2__4() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4545:1: ( rule__AllPatternEntry__Group_2__4__Impl ) - // InternalApplicationConfiguration.g:4546:2: rule__AllPatternEntry__Group_2__4__Impl + // InternalApplicationConfiguration.g:4551:1: ( rule__AllPatternEntry__Group_2__4__Impl ) + // InternalApplicationConfiguration.g:4552:2: rule__AllPatternEntry__Group_2__4__Impl { pushFollow(FOLLOW_2); rule__AllPatternEntry__Group_2__4__Impl(); @@ -14600,20 +14627,20 @@ public final void rule__AllPatternEntry__Group_2__4() throws RecognitionExceptio // $ANTLR start "rule__AllPatternEntry__Group_2__4__Impl" - // InternalApplicationConfiguration.g:4552:1: rule__AllPatternEntry__Group_2__4__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:4558:1: rule__AllPatternEntry__Group_2__4__Impl : ( '}' ) ; public final void rule__AllPatternEntry__Group_2__4__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4556:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:4557:1: ( '}' ) + // InternalApplicationConfiguration.g:4562:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:4563:1: ( '}' ) { - // InternalApplicationConfiguration.g:4557:1: ( '}' ) - // InternalApplicationConfiguration.g:4558:2: '}' + // InternalApplicationConfiguration.g:4563:1: ( '}' ) + // InternalApplicationConfiguration.g:4564:2: '}' { before(grammarAccess.getAllPatternEntryAccess().getRightCurlyBracketKeyword_2_4()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getAllPatternEntryAccess().getRightCurlyBracketKeyword_2_4()); } @@ -14637,14 +14664,14 @@ public final void rule__AllPatternEntry__Group_2__4__Impl() throws RecognitionEx // $ANTLR start "rule__AllPatternEntry__Group_2_3__0" - // InternalApplicationConfiguration.g:4568:1: rule__AllPatternEntry__Group_2_3__0 : rule__AllPatternEntry__Group_2_3__0__Impl rule__AllPatternEntry__Group_2_3__1 ; + // InternalApplicationConfiguration.g:4574:1: rule__AllPatternEntry__Group_2_3__0 : rule__AllPatternEntry__Group_2_3__0__Impl rule__AllPatternEntry__Group_2_3__1 ; public final void rule__AllPatternEntry__Group_2_3__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4572:1: ( rule__AllPatternEntry__Group_2_3__0__Impl rule__AllPatternEntry__Group_2_3__1 ) - // InternalApplicationConfiguration.g:4573:2: rule__AllPatternEntry__Group_2_3__0__Impl rule__AllPatternEntry__Group_2_3__1 + // InternalApplicationConfiguration.g:4578:1: ( rule__AllPatternEntry__Group_2_3__0__Impl rule__AllPatternEntry__Group_2_3__1 ) + // InternalApplicationConfiguration.g:4579:2: rule__AllPatternEntry__Group_2_3__0__Impl rule__AllPatternEntry__Group_2_3__1 { pushFollow(FOLLOW_8); rule__AllPatternEntry__Group_2_3__0__Impl(); @@ -14675,20 +14702,20 @@ public final void rule__AllPatternEntry__Group_2_3__0() throws RecognitionExcept // $ANTLR start "rule__AllPatternEntry__Group_2_3__0__Impl" - // InternalApplicationConfiguration.g:4580:1: rule__AllPatternEntry__Group_2_3__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:4586:1: rule__AllPatternEntry__Group_2_3__0__Impl : ( ',' ) ; public final void rule__AllPatternEntry__Group_2_3__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4584:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:4585:1: ( ',' ) + // InternalApplicationConfiguration.g:4590:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:4591:1: ( ',' ) { - // InternalApplicationConfiguration.g:4585:1: ( ',' ) - // InternalApplicationConfiguration.g:4586:2: ',' + // InternalApplicationConfiguration.g:4591:1: ( ',' ) + // InternalApplicationConfiguration.g:4592:2: ',' { before(grammarAccess.getAllPatternEntryAccess().getCommaKeyword_2_3_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getAllPatternEntryAccess().getCommaKeyword_2_3_0()); } @@ -14712,14 +14739,14 @@ public final void rule__AllPatternEntry__Group_2_3__0__Impl() throws Recognition // $ANTLR start "rule__AllPatternEntry__Group_2_3__1" - // InternalApplicationConfiguration.g:4595:1: rule__AllPatternEntry__Group_2_3__1 : rule__AllPatternEntry__Group_2_3__1__Impl ; + // InternalApplicationConfiguration.g:4601:1: rule__AllPatternEntry__Group_2_3__1 : rule__AllPatternEntry__Group_2_3__1__Impl ; public final void rule__AllPatternEntry__Group_2_3__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4599:1: ( rule__AllPatternEntry__Group_2_3__1__Impl ) - // InternalApplicationConfiguration.g:4600:2: rule__AllPatternEntry__Group_2_3__1__Impl + // InternalApplicationConfiguration.g:4605:1: ( rule__AllPatternEntry__Group_2_3__1__Impl ) + // InternalApplicationConfiguration.g:4606:2: rule__AllPatternEntry__Group_2_3__1__Impl { pushFollow(FOLLOW_2); rule__AllPatternEntry__Group_2_3__1__Impl(); @@ -14745,21 +14772,21 @@ public final void rule__AllPatternEntry__Group_2_3__1() throws RecognitionExcept // $ANTLR start "rule__AllPatternEntry__Group_2_3__1__Impl" - // InternalApplicationConfiguration.g:4606:1: rule__AllPatternEntry__Group_2_3__1__Impl : ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) ; + // InternalApplicationConfiguration.g:4612:1: rule__AllPatternEntry__Group_2_3__1__Impl : ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) ; public final void rule__AllPatternEntry__Group_2_3__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4610:1: ( ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) ) - // InternalApplicationConfiguration.g:4611:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) + // InternalApplicationConfiguration.g:4616:1: ( ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) ) + // InternalApplicationConfiguration.g:4617:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) { - // InternalApplicationConfiguration.g:4611:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) - // InternalApplicationConfiguration.g:4612:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) + // InternalApplicationConfiguration.g:4617:1: ( ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) ) + // InternalApplicationConfiguration.g:4618:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) { before(grammarAccess.getAllPatternEntryAccess().getExclusuionAssignment_2_3_1()); - // InternalApplicationConfiguration.g:4613:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) - // InternalApplicationConfiguration.g:4613:3: rule__AllPatternEntry__ExclusuionAssignment_2_3_1 + // InternalApplicationConfiguration.g:4619:2: ( rule__AllPatternEntry__ExclusuionAssignment_2_3_1 ) + // InternalApplicationConfiguration.g:4619:3: rule__AllPatternEntry__ExclusuionAssignment_2_3_1 { pushFollow(FOLLOW_2); rule__AllPatternEntry__ExclusuionAssignment_2_3_1(); @@ -14792,14 +14819,14 @@ public final void rule__AllPatternEntry__Group_2_3__1__Impl() throws Recognition // $ANTLR start "rule__PatternElement__Group__0" - // InternalApplicationConfiguration.g:4622:1: rule__PatternElement__Group__0 : rule__PatternElement__Group__0__Impl rule__PatternElement__Group__1 ; + // InternalApplicationConfiguration.g:4628:1: rule__PatternElement__Group__0 : rule__PatternElement__Group__0__Impl rule__PatternElement__Group__1 ; public final void rule__PatternElement__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4626:1: ( rule__PatternElement__Group__0__Impl rule__PatternElement__Group__1 ) - // InternalApplicationConfiguration.g:4627:2: rule__PatternElement__Group__0__Impl rule__PatternElement__Group__1 + // InternalApplicationConfiguration.g:4632:1: ( rule__PatternElement__Group__0__Impl rule__PatternElement__Group__1 ) + // InternalApplicationConfiguration.g:4633:2: rule__PatternElement__Group__0__Impl rule__PatternElement__Group__1 { pushFollow(FOLLOW_8); rule__PatternElement__Group__0__Impl(); @@ -14830,33 +14857,33 @@ public final void rule__PatternElement__Group__0() throws RecognitionException { // $ANTLR start "rule__PatternElement__Group__0__Impl" - // InternalApplicationConfiguration.g:4634:1: rule__PatternElement__Group__0__Impl : ( ( rule__PatternElement__Group_0__0 )? ) ; + // InternalApplicationConfiguration.g:4640:1: rule__PatternElement__Group__0__Impl : ( ( rule__PatternElement__Group_0__0 )? ) ; public final void rule__PatternElement__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4638:1: ( ( ( rule__PatternElement__Group_0__0 )? ) ) - // InternalApplicationConfiguration.g:4639:1: ( ( rule__PatternElement__Group_0__0 )? ) + // InternalApplicationConfiguration.g:4644:1: ( ( ( rule__PatternElement__Group_0__0 )? ) ) + // InternalApplicationConfiguration.g:4645:1: ( ( rule__PatternElement__Group_0__0 )? ) { - // InternalApplicationConfiguration.g:4639:1: ( ( rule__PatternElement__Group_0__0 )? ) - // InternalApplicationConfiguration.g:4640:2: ( rule__PatternElement__Group_0__0 )? + // InternalApplicationConfiguration.g:4645:1: ( ( rule__PatternElement__Group_0__0 )? ) + // InternalApplicationConfiguration.g:4646:2: ( rule__PatternElement__Group_0__0 )? { before(grammarAccess.getPatternElementAccess().getGroup_0()); - // InternalApplicationConfiguration.g:4641:2: ( rule__PatternElement__Group_0__0 )? + // InternalApplicationConfiguration.g:4647:2: ( rule__PatternElement__Group_0__0 )? int alt45=2; int LA45_0 = input.LA(1); if ( (LA45_0==RULE_ID) ) { int LA45_1 = input.LA(2); - if ( (LA45_1==17||LA45_1==29) ) { + if ( (LA45_1==18||LA45_1==30) ) { alt45=1; } } switch (alt45) { case 1 : - // InternalApplicationConfiguration.g:4641:3: rule__PatternElement__Group_0__0 + // InternalApplicationConfiguration.g:4647:3: rule__PatternElement__Group_0__0 { pushFollow(FOLLOW_2); rule__PatternElement__Group_0__0(); @@ -14892,14 +14919,14 @@ public final void rule__PatternElement__Group__0__Impl() throws RecognitionExcep // $ANTLR start "rule__PatternElement__Group__1" - // InternalApplicationConfiguration.g:4649:1: rule__PatternElement__Group__1 : rule__PatternElement__Group__1__Impl ; + // InternalApplicationConfiguration.g:4655:1: rule__PatternElement__Group__1 : rule__PatternElement__Group__1__Impl ; public final void rule__PatternElement__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4653:1: ( rule__PatternElement__Group__1__Impl ) - // InternalApplicationConfiguration.g:4654:2: rule__PatternElement__Group__1__Impl + // InternalApplicationConfiguration.g:4659:1: ( rule__PatternElement__Group__1__Impl ) + // InternalApplicationConfiguration.g:4660:2: rule__PatternElement__Group__1__Impl { pushFollow(FOLLOW_2); rule__PatternElement__Group__1__Impl(); @@ -14925,21 +14952,21 @@ public final void rule__PatternElement__Group__1() throws RecognitionException { // $ANTLR start "rule__PatternElement__Group__1__Impl" - // InternalApplicationConfiguration.g:4660:1: rule__PatternElement__Group__1__Impl : ( ( rule__PatternElement__PatternAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:4666:1: rule__PatternElement__Group__1__Impl : ( ( rule__PatternElement__PatternAssignment_1 ) ) ; public final void rule__PatternElement__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4664:1: ( ( ( rule__PatternElement__PatternAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:4665:1: ( ( rule__PatternElement__PatternAssignment_1 ) ) + // InternalApplicationConfiguration.g:4670:1: ( ( ( rule__PatternElement__PatternAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:4671:1: ( ( rule__PatternElement__PatternAssignment_1 ) ) { - // InternalApplicationConfiguration.g:4665:1: ( ( rule__PatternElement__PatternAssignment_1 ) ) - // InternalApplicationConfiguration.g:4666:2: ( rule__PatternElement__PatternAssignment_1 ) + // InternalApplicationConfiguration.g:4671:1: ( ( rule__PatternElement__PatternAssignment_1 ) ) + // InternalApplicationConfiguration.g:4672:2: ( rule__PatternElement__PatternAssignment_1 ) { before(grammarAccess.getPatternElementAccess().getPatternAssignment_1()); - // InternalApplicationConfiguration.g:4667:2: ( rule__PatternElement__PatternAssignment_1 ) - // InternalApplicationConfiguration.g:4667:3: rule__PatternElement__PatternAssignment_1 + // InternalApplicationConfiguration.g:4673:2: ( rule__PatternElement__PatternAssignment_1 ) + // InternalApplicationConfiguration.g:4673:3: rule__PatternElement__PatternAssignment_1 { pushFollow(FOLLOW_2); rule__PatternElement__PatternAssignment_1(); @@ -14972,14 +14999,14 @@ public final void rule__PatternElement__Group__1__Impl() throws RecognitionExcep // $ANTLR start "rule__PatternElement__Group_0__0" - // InternalApplicationConfiguration.g:4676:1: rule__PatternElement__Group_0__0 : rule__PatternElement__Group_0__0__Impl rule__PatternElement__Group_0__1 ; + // InternalApplicationConfiguration.g:4682:1: rule__PatternElement__Group_0__0 : rule__PatternElement__Group_0__0__Impl rule__PatternElement__Group_0__1 ; public final void rule__PatternElement__Group_0__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4680:1: ( rule__PatternElement__Group_0__0__Impl rule__PatternElement__Group_0__1 ) - // InternalApplicationConfiguration.g:4681:2: rule__PatternElement__Group_0__0__Impl rule__PatternElement__Group_0__1 + // InternalApplicationConfiguration.g:4686:1: ( rule__PatternElement__Group_0__0__Impl rule__PatternElement__Group_0__1 ) + // InternalApplicationConfiguration.g:4687:2: rule__PatternElement__Group_0__0__Impl rule__PatternElement__Group_0__1 { pushFollow(FOLLOW_19); rule__PatternElement__Group_0__0__Impl(); @@ -15010,21 +15037,21 @@ public final void rule__PatternElement__Group_0__0() throws RecognitionException // $ANTLR start "rule__PatternElement__Group_0__0__Impl" - // InternalApplicationConfiguration.g:4688:1: rule__PatternElement__Group_0__0__Impl : ( ( rule__PatternElement__PackageAssignment_0_0 ) ) ; + // InternalApplicationConfiguration.g:4694:1: rule__PatternElement__Group_0__0__Impl : ( ( rule__PatternElement__PackageAssignment_0_0 ) ) ; public final void rule__PatternElement__Group_0__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4692:1: ( ( ( rule__PatternElement__PackageAssignment_0_0 ) ) ) - // InternalApplicationConfiguration.g:4693:1: ( ( rule__PatternElement__PackageAssignment_0_0 ) ) + // InternalApplicationConfiguration.g:4698:1: ( ( ( rule__PatternElement__PackageAssignment_0_0 ) ) ) + // InternalApplicationConfiguration.g:4699:1: ( ( rule__PatternElement__PackageAssignment_0_0 ) ) { - // InternalApplicationConfiguration.g:4693:1: ( ( rule__PatternElement__PackageAssignment_0_0 ) ) - // InternalApplicationConfiguration.g:4694:2: ( rule__PatternElement__PackageAssignment_0_0 ) + // InternalApplicationConfiguration.g:4699:1: ( ( rule__PatternElement__PackageAssignment_0_0 ) ) + // InternalApplicationConfiguration.g:4700:2: ( rule__PatternElement__PackageAssignment_0_0 ) { before(grammarAccess.getPatternElementAccess().getPackageAssignment_0_0()); - // InternalApplicationConfiguration.g:4695:2: ( rule__PatternElement__PackageAssignment_0_0 ) - // InternalApplicationConfiguration.g:4695:3: rule__PatternElement__PackageAssignment_0_0 + // InternalApplicationConfiguration.g:4701:2: ( rule__PatternElement__PackageAssignment_0_0 ) + // InternalApplicationConfiguration.g:4701:3: rule__PatternElement__PackageAssignment_0_0 { pushFollow(FOLLOW_2); rule__PatternElement__PackageAssignment_0_0(); @@ -15057,14 +15084,14 @@ public final void rule__PatternElement__Group_0__0__Impl() throws RecognitionExc // $ANTLR start "rule__PatternElement__Group_0__1" - // InternalApplicationConfiguration.g:4703:1: rule__PatternElement__Group_0__1 : rule__PatternElement__Group_0__1__Impl ; + // InternalApplicationConfiguration.g:4709:1: rule__PatternElement__Group_0__1 : rule__PatternElement__Group_0__1__Impl ; public final void rule__PatternElement__Group_0__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4707:1: ( rule__PatternElement__Group_0__1__Impl ) - // InternalApplicationConfiguration.g:4708:2: rule__PatternElement__Group_0__1__Impl + // InternalApplicationConfiguration.g:4713:1: ( rule__PatternElement__Group_0__1__Impl ) + // InternalApplicationConfiguration.g:4714:2: rule__PatternElement__Group_0__1__Impl { pushFollow(FOLLOW_2); rule__PatternElement__Group_0__1__Impl(); @@ -15090,20 +15117,20 @@ public final void rule__PatternElement__Group_0__1() throws RecognitionException // $ANTLR start "rule__PatternElement__Group_0__1__Impl" - // InternalApplicationConfiguration.g:4714:1: rule__PatternElement__Group_0__1__Impl : ( '::' ) ; + // InternalApplicationConfiguration.g:4720:1: rule__PatternElement__Group_0__1__Impl : ( '::' ) ; public final void rule__PatternElement__Group_0__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4718:1: ( ( '::' ) ) - // InternalApplicationConfiguration.g:4719:1: ( '::' ) + // InternalApplicationConfiguration.g:4724:1: ( ( '::' ) ) + // InternalApplicationConfiguration.g:4725:1: ( '::' ) { - // InternalApplicationConfiguration.g:4719:1: ( '::' ) - // InternalApplicationConfiguration.g:4720:2: '::' + // InternalApplicationConfiguration.g:4725:1: ( '::' ) + // InternalApplicationConfiguration.g:4726:2: '::' { before(grammarAccess.getPatternElementAccess().getColonColonKeyword_0_1()); - match(input,29,FOLLOW_2); + match(input,30,FOLLOW_2); after(grammarAccess.getPatternElementAccess().getColonColonKeyword_0_1()); } @@ -15127,14 +15154,14 @@ public final void rule__PatternElement__Group_0__1__Impl() throws RecognitionExc // $ANTLR start "rule__GraphPatternDeclaration__Group__0" - // InternalApplicationConfiguration.g:4730:1: rule__GraphPatternDeclaration__Group__0 : rule__GraphPatternDeclaration__Group__0__Impl rule__GraphPatternDeclaration__Group__1 ; + // InternalApplicationConfiguration.g:4736:1: rule__GraphPatternDeclaration__Group__0 : rule__GraphPatternDeclaration__Group__0__Impl rule__GraphPatternDeclaration__Group__1 ; public final void rule__GraphPatternDeclaration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4734:1: ( rule__GraphPatternDeclaration__Group__0__Impl rule__GraphPatternDeclaration__Group__1 ) - // InternalApplicationConfiguration.g:4735:2: rule__GraphPatternDeclaration__Group__0__Impl rule__GraphPatternDeclaration__Group__1 + // InternalApplicationConfiguration.g:4740:1: ( rule__GraphPatternDeclaration__Group__0__Impl rule__GraphPatternDeclaration__Group__1 ) + // InternalApplicationConfiguration.g:4741:2: rule__GraphPatternDeclaration__Group__0__Impl rule__GraphPatternDeclaration__Group__1 { pushFollow(FOLLOW_8); rule__GraphPatternDeclaration__Group__0__Impl(); @@ -15165,20 +15192,20 @@ public final void rule__GraphPatternDeclaration__Group__0() throws RecognitionEx // $ANTLR start "rule__GraphPatternDeclaration__Group__0__Impl" - // InternalApplicationConfiguration.g:4742:1: rule__GraphPatternDeclaration__Group__0__Impl : ( 'constraints' ) ; + // InternalApplicationConfiguration.g:4748:1: rule__GraphPatternDeclaration__Group__0__Impl : ( 'constraints' ) ; public final void rule__GraphPatternDeclaration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4746:1: ( ( 'constraints' ) ) - // InternalApplicationConfiguration.g:4747:1: ( 'constraints' ) + // InternalApplicationConfiguration.g:4752:1: ( ( 'constraints' ) ) + // InternalApplicationConfiguration.g:4753:1: ( 'constraints' ) { - // InternalApplicationConfiguration.g:4747:1: ( 'constraints' ) - // InternalApplicationConfiguration.g:4748:2: 'constraints' + // InternalApplicationConfiguration.g:4753:1: ( 'constraints' ) + // InternalApplicationConfiguration.g:4754:2: 'constraints' { before(grammarAccess.getGraphPatternDeclarationAccess().getConstraintsKeyword_0()); - match(input,33,FOLLOW_2); + match(input,34,FOLLOW_2); after(grammarAccess.getGraphPatternDeclarationAccess().getConstraintsKeyword_0()); } @@ -15202,14 +15229,14 @@ public final void rule__GraphPatternDeclaration__Group__0__Impl() throws Recogni // $ANTLR start "rule__GraphPatternDeclaration__Group__1" - // InternalApplicationConfiguration.g:4757:1: rule__GraphPatternDeclaration__Group__1 : rule__GraphPatternDeclaration__Group__1__Impl rule__GraphPatternDeclaration__Group__2 ; + // InternalApplicationConfiguration.g:4763:1: rule__GraphPatternDeclaration__Group__1 : rule__GraphPatternDeclaration__Group__1__Impl rule__GraphPatternDeclaration__Group__2 ; public final void rule__GraphPatternDeclaration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4761:1: ( rule__GraphPatternDeclaration__Group__1__Impl rule__GraphPatternDeclaration__Group__2 ) - // InternalApplicationConfiguration.g:4762:2: rule__GraphPatternDeclaration__Group__1__Impl rule__GraphPatternDeclaration__Group__2 + // InternalApplicationConfiguration.g:4767:1: ( rule__GraphPatternDeclaration__Group__1__Impl rule__GraphPatternDeclaration__Group__2 ) + // InternalApplicationConfiguration.g:4768:2: rule__GraphPatternDeclaration__Group__1__Impl rule__GraphPatternDeclaration__Group__2 { pushFollow(FOLLOW_18); rule__GraphPatternDeclaration__Group__1__Impl(); @@ -15240,21 +15267,21 @@ public final void rule__GraphPatternDeclaration__Group__1() throws RecognitionEx // $ANTLR start "rule__GraphPatternDeclaration__Group__1__Impl" - // InternalApplicationConfiguration.g:4769:1: rule__GraphPatternDeclaration__Group__1__Impl : ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:4775:1: rule__GraphPatternDeclaration__Group__1__Impl : ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) ; public final void rule__GraphPatternDeclaration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4773:1: ( ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:4774:1: ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:4779:1: ( ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:4780:1: ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) { - // InternalApplicationConfiguration.g:4774:1: ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) - // InternalApplicationConfiguration.g:4775:2: ( rule__GraphPatternDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:4780:1: ( ( rule__GraphPatternDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:4781:2: ( rule__GraphPatternDeclaration__NameAssignment_1 ) { before(grammarAccess.getGraphPatternDeclarationAccess().getNameAssignment_1()); - // InternalApplicationConfiguration.g:4776:2: ( rule__GraphPatternDeclaration__NameAssignment_1 ) - // InternalApplicationConfiguration.g:4776:3: rule__GraphPatternDeclaration__NameAssignment_1 + // InternalApplicationConfiguration.g:4782:2: ( rule__GraphPatternDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:4782:3: rule__GraphPatternDeclaration__NameAssignment_1 { pushFollow(FOLLOW_2); rule__GraphPatternDeclaration__NameAssignment_1(); @@ -15287,14 +15314,14 @@ public final void rule__GraphPatternDeclaration__Group__1__Impl() throws Recogni // $ANTLR start "rule__GraphPatternDeclaration__Group__2" - // InternalApplicationConfiguration.g:4784:1: rule__GraphPatternDeclaration__Group__2 : rule__GraphPatternDeclaration__Group__2__Impl ; + // InternalApplicationConfiguration.g:4790:1: rule__GraphPatternDeclaration__Group__2 : rule__GraphPatternDeclaration__Group__2__Impl ; public final void rule__GraphPatternDeclaration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4788:1: ( rule__GraphPatternDeclaration__Group__2__Impl ) - // InternalApplicationConfiguration.g:4789:2: rule__GraphPatternDeclaration__Group__2__Impl + // InternalApplicationConfiguration.g:4794:1: ( rule__GraphPatternDeclaration__Group__2__Impl ) + // InternalApplicationConfiguration.g:4795:2: rule__GraphPatternDeclaration__Group__2__Impl { pushFollow(FOLLOW_2); rule__GraphPatternDeclaration__Group__2__Impl(); @@ -15320,21 +15347,21 @@ public final void rule__GraphPatternDeclaration__Group__2() throws RecognitionEx // $ANTLR start "rule__GraphPatternDeclaration__Group__2__Impl" - // InternalApplicationConfiguration.g:4795:1: rule__GraphPatternDeclaration__Group__2__Impl : ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:4801:1: rule__GraphPatternDeclaration__Group__2__Impl : ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) ; public final void rule__GraphPatternDeclaration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4799:1: ( ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:4800:1: ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:4805:1: ( ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:4806:1: ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) { - // InternalApplicationConfiguration.g:4800:1: ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) - // InternalApplicationConfiguration.g:4801:2: ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:4806:1: ( ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:4807:2: ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) { before(grammarAccess.getGraphPatternDeclarationAccess().getSpecificationAssignment_2()); - // InternalApplicationConfiguration.g:4802:2: ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) - // InternalApplicationConfiguration.g:4802:3: rule__GraphPatternDeclaration__SpecificationAssignment_2 + // InternalApplicationConfiguration.g:4808:2: ( rule__GraphPatternDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:4808:3: rule__GraphPatternDeclaration__SpecificationAssignment_2 { pushFollow(FOLLOW_2); rule__GraphPatternDeclaration__SpecificationAssignment_2(); @@ -15367,14 +15394,14 @@ public final void rule__GraphPatternDeclaration__Group__2__Impl() throws Recogni // $ANTLR start "rule__ConfigSpecification__Group__0" - // InternalApplicationConfiguration.g:4811:1: rule__ConfigSpecification__Group__0 : rule__ConfigSpecification__Group__0__Impl rule__ConfigSpecification__Group__1 ; + // InternalApplicationConfiguration.g:4817:1: rule__ConfigSpecification__Group__0 : rule__ConfigSpecification__Group__0__Impl rule__ConfigSpecification__Group__1 ; public final void rule__ConfigSpecification__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4815:1: ( rule__ConfigSpecification__Group__0__Impl rule__ConfigSpecification__Group__1 ) - // InternalApplicationConfiguration.g:4816:2: rule__ConfigSpecification__Group__0__Impl rule__ConfigSpecification__Group__1 + // InternalApplicationConfiguration.g:4821:1: ( rule__ConfigSpecification__Group__0__Impl rule__ConfigSpecification__Group__1 ) + // InternalApplicationConfiguration.g:4822:2: rule__ConfigSpecification__Group__0__Impl rule__ConfigSpecification__Group__1 { pushFollow(FOLLOW_18); rule__ConfigSpecification__Group__0__Impl(); @@ -15405,21 +15432,21 @@ public final void rule__ConfigSpecification__Group__0() throws RecognitionExcept // $ANTLR start "rule__ConfigSpecification__Group__0__Impl" - // InternalApplicationConfiguration.g:4823:1: rule__ConfigSpecification__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:4829:1: rule__ConfigSpecification__Group__0__Impl : ( () ) ; public final void rule__ConfigSpecification__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4827:1: ( ( () ) ) - // InternalApplicationConfiguration.g:4828:1: ( () ) + // InternalApplicationConfiguration.g:4833:1: ( ( () ) ) + // InternalApplicationConfiguration.g:4834:1: ( () ) { - // InternalApplicationConfiguration.g:4828:1: ( () ) - // InternalApplicationConfiguration.g:4829:2: () + // InternalApplicationConfiguration.g:4834:1: ( () ) + // InternalApplicationConfiguration.g:4835:2: () { before(grammarAccess.getConfigSpecificationAccess().getConfigSpecificationAction_0()); - // InternalApplicationConfiguration.g:4830:2: () - // InternalApplicationConfiguration.g:4830:3: + // InternalApplicationConfiguration.g:4836:2: () + // InternalApplicationConfiguration.g:4836:3: { } @@ -15442,14 +15469,14 @@ public final void rule__ConfigSpecification__Group__0__Impl() throws Recognition // $ANTLR start "rule__ConfigSpecification__Group__1" - // InternalApplicationConfiguration.g:4838:1: rule__ConfigSpecification__Group__1 : rule__ConfigSpecification__Group__1__Impl rule__ConfigSpecification__Group__2 ; + // InternalApplicationConfiguration.g:4844:1: rule__ConfigSpecification__Group__1 : rule__ConfigSpecification__Group__1__Impl rule__ConfigSpecification__Group__2 ; public final void rule__ConfigSpecification__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4842:1: ( rule__ConfigSpecification__Group__1__Impl rule__ConfigSpecification__Group__2 ) - // InternalApplicationConfiguration.g:4843:2: rule__ConfigSpecification__Group__1__Impl rule__ConfigSpecification__Group__2 + // InternalApplicationConfiguration.g:4848:1: ( rule__ConfigSpecification__Group__1__Impl rule__ConfigSpecification__Group__2 ) + // InternalApplicationConfiguration.g:4849:2: rule__ConfigSpecification__Group__1__Impl rule__ConfigSpecification__Group__2 { pushFollow(FOLLOW_22); rule__ConfigSpecification__Group__1__Impl(); @@ -15480,20 +15507,20 @@ public final void rule__ConfigSpecification__Group__1() throws RecognitionExcept // $ANTLR start "rule__ConfigSpecification__Group__1__Impl" - // InternalApplicationConfiguration.g:4850:1: rule__ConfigSpecification__Group__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:4856:1: rule__ConfigSpecification__Group__1__Impl : ( '{' ) ; public final void rule__ConfigSpecification__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4854:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:4855:1: ( '{' ) + // InternalApplicationConfiguration.g:4860:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:4861:1: ( '{' ) { - // InternalApplicationConfiguration.g:4855:1: ( '{' ) - // InternalApplicationConfiguration.g:4856:2: '{' + // InternalApplicationConfiguration.g:4861:1: ( '{' ) + // InternalApplicationConfiguration.g:4862:2: '{' { before(grammarAccess.getConfigSpecificationAccess().getLeftCurlyBracketKeyword_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getConfigSpecificationAccess().getLeftCurlyBracketKeyword_1()); } @@ -15517,14 +15544,14 @@ public final void rule__ConfigSpecification__Group__1__Impl() throws Recognition // $ANTLR start "rule__ConfigSpecification__Group__2" - // InternalApplicationConfiguration.g:4865:1: rule__ConfigSpecification__Group__2 : rule__ConfigSpecification__Group__2__Impl rule__ConfigSpecification__Group__3 ; + // InternalApplicationConfiguration.g:4871:1: rule__ConfigSpecification__Group__2 : rule__ConfigSpecification__Group__2__Impl rule__ConfigSpecification__Group__3 ; public final void rule__ConfigSpecification__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4869:1: ( rule__ConfigSpecification__Group__2__Impl rule__ConfigSpecification__Group__3 ) - // InternalApplicationConfiguration.g:4870:2: rule__ConfigSpecification__Group__2__Impl rule__ConfigSpecification__Group__3 + // InternalApplicationConfiguration.g:4875:1: ( rule__ConfigSpecification__Group__2__Impl rule__ConfigSpecification__Group__3 ) + // InternalApplicationConfiguration.g:4876:2: rule__ConfigSpecification__Group__2__Impl rule__ConfigSpecification__Group__3 { pushFollow(FOLLOW_22); rule__ConfigSpecification__Group__2__Impl(); @@ -15555,29 +15582,29 @@ public final void rule__ConfigSpecification__Group__2() throws RecognitionExcept // $ANTLR start "rule__ConfigSpecification__Group__2__Impl" - // InternalApplicationConfiguration.g:4877:1: rule__ConfigSpecification__Group__2__Impl : ( ( rule__ConfigSpecification__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:4883:1: rule__ConfigSpecification__Group__2__Impl : ( ( rule__ConfigSpecification__Group_2__0 )? ) ; public final void rule__ConfigSpecification__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4881:1: ( ( ( rule__ConfigSpecification__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:4882:1: ( ( rule__ConfigSpecification__Group_2__0 )? ) + // InternalApplicationConfiguration.g:4887:1: ( ( ( rule__ConfigSpecification__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:4888:1: ( ( rule__ConfigSpecification__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:4882:1: ( ( rule__ConfigSpecification__Group_2__0 )? ) - // InternalApplicationConfiguration.g:4883:2: ( rule__ConfigSpecification__Group_2__0 )? + // InternalApplicationConfiguration.g:4888:1: ( ( rule__ConfigSpecification__Group_2__0 )? ) + // InternalApplicationConfiguration.g:4889:2: ( rule__ConfigSpecification__Group_2__0 )? { before(grammarAccess.getConfigSpecificationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:4884:2: ( rule__ConfigSpecification__Group_2__0 )? + // InternalApplicationConfiguration.g:4890:2: ( rule__ConfigSpecification__Group_2__0 )? int alt46=2; int LA46_0 = input.LA(1); - if ( (LA46_0==RULE_STRING||(LA46_0>=35 && LA46_0<=37)) ) { + if ( (LA46_0==RULE_STRING||(LA46_0>=36 && LA46_0<=38)) ) { alt46=1; } switch (alt46) { case 1 : - // InternalApplicationConfiguration.g:4884:3: rule__ConfigSpecification__Group_2__0 + // InternalApplicationConfiguration.g:4890:3: rule__ConfigSpecification__Group_2__0 { pushFollow(FOLLOW_2); rule__ConfigSpecification__Group_2__0(); @@ -15613,14 +15640,14 @@ public final void rule__ConfigSpecification__Group__2__Impl() throws Recognition // $ANTLR start "rule__ConfigSpecification__Group__3" - // InternalApplicationConfiguration.g:4892:1: rule__ConfigSpecification__Group__3 : rule__ConfigSpecification__Group__3__Impl ; + // InternalApplicationConfiguration.g:4898:1: rule__ConfigSpecification__Group__3 : rule__ConfigSpecification__Group__3__Impl ; public final void rule__ConfigSpecification__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4896:1: ( rule__ConfigSpecification__Group__3__Impl ) - // InternalApplicationConfiguration.g:4897:2: rule__ConfigSpecification__Group__3__Impl + // InternalApplicationConfiguration.g:4902:1: ( rule__ConfigSpecification__Group__3__Impl ) + // InternalApplicationConfiguration.g:4903:2: rule__ConfigSpecification__Group__3__Impl { pushFollow(FOLLOW_2); rule__ConfigSpecification__Group__3__Impl(); @@ -15646,20 +15673,20 @@ public final void rule__ConfigSpecification__Group__3() throws RecognitionExcept // $ANTLR start "rule__ConfigSpecification__Group__3__Impl" - // InternalApplicationConfiguration.g:4903:1: rule__ConfigSpecification__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:4909:1: rule__ConfigSpecification__Group__3__Impl : ( '}' ) ; public final void rule__ConfigSpecification__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4907:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:4908:1: ( '}' ) + // InternalApplicationConfiguration.g:4913:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:4914:1: ( '}' ) { - // InternalApplicationConfiguration.g:4908:1: ( '}' ) - // InternalApplicationConfiguration.g:4909:2: '}' + // InternalApplicationConfiguration.g:4914:1: ( '}' ) + // InternalApplicationConfiguration.g:4915:2: '}' { before(grammarAccess.getConfigSpecificationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getConfigSpecificationAccess().getRightCurlyBracketKeyword_3()); } @@ -15683,14 +15710,14 @@ public final void rule__ConfigSpecification__Group__3__Impl() throws Recognition // $ANTLR start "rule__ConfigSpecification__Group_2__0" - // InternalApplicationConfiguration.g:4919:1: rule__ConfigSpecification__Group_2__0 : rule__ConfigSpecification__Group_2__0__Impl rule__ConfigSpecification__Group_2__1 ; + // InternalApplicationConfiguration.g:4925:1: rule__ConfigSpecification__Group_2__0 : rule__ConfigSpecification__Group_2__0__Impl rule__ConfigSpecification__Group_2__1 ; public final void rule__ConfigSpecification__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4923:1: ( rule__ConfigSpecification__Group_2__0__Impl rule__ConfigSpecification__Group_2__1 ) - // InternalApplicationConfiguration.g:4924:2: rule__ConfigSpecification__Group_2__0__Impl rule__ConfigSpecification__Group_2__1 + // InternalApplicationConfiguration.g:4929:1: ( rule__ConfigSpecification__Group_2__0__Impl rule__ConfigSpecification__Group_2__1 ) + // InternalApplicationConfiguration.g:4930:2: rule__ConfigSpecification__Group_2__0__Impl rule__ConfigSpecification__Group_2__1 { pushFollow(FOLLOW_23); rule__ConfigSpecification__Group_2__0__Impl(); @@ -15721,21 +15748,21 @@ public final void rule__ConfigSpecification__Group_2__0() throws RecognitionExce // $ANTLR start "rule__ConfigSpecification__Group_2__0__Impl" - // InternalApplicationConfiguration.g:4931:1: rule__ConfigSpecification__Group_2__0__Impl : ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) ; + // InternalApplicationConfiguration.g:4937:1: rule__ConfigSpecification__Group_2__0__Impl : ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) ; public final void rule__ConfigSpecification__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4935:1: ( ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) ) - // InternalApplicationConfiguration.g:4936:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:4941:1: ( ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) ) + // InternalApplicationConfiguration.g:4942:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) { - // InternalApplicationConfiguration.g:4936:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) - // InternalApplicationConfiguration.g:4937:2: ( rule__ConfigSpecification__EntriesAssignment_2_0 ) + // InternalApplicationConfiguration.g:4942:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:4943:2: ( rule__ConfigSpecification__EntriesAssignment_2_0 ) { before(grammarAccess.getConfigSpecificationAccess().getEntriesAssignment_2_0()); - // InternalApplicationConfiguration.g:4938:2: ( rule__ConfigSpecification__EntriesAssignment_2_0 ) - // InternalApplicationConfiguration.g:4938:3: rule__ConfigSpecification__EntriesAssignment_2_0 + // InternalApplicationConfiguration.g:4944:2: ( rule__ConfigSpecification__EntriesAssignment_2_0 ) + // InternalApplicationConfiguration.g:4944:3: rule__ConfigSpecification__EntriesAssignment_2_0 { pushFollow(FOLLOW_2); rule__ConfigSpecification__EntriesAssignment_2_0(); @@ -15768,14 +15795,14 @@ public final void rule__ConfigSpecification__Group_2__0__Impl() throws Recogniti // $ANTLR start "rule__ConfigSpecification__Group_2__1" - // InternalApplicationConfiguration.g:4946:1: rule__ConfigSpecification__Group_2__1 : rule__ConfigSpecification__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:4952:1: rule__ConfigSpecification__Group_2__1 : rule__ConfigSpecification__Group_2__1__Impl ; public final void rule__ConfigSpecification__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4950:1: ( rule__ConfigSpecification__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:4951:2: rule__ConfigSpecification__Group_2__1__Impl + // InternalApplicationConfiguration.g:4956:1: ( rule__ConfigSpecification__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:4957:2: rule__ConfigSpecification__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__ConfigSpecification__Group_2__1__Impl(); @@ -15801,33 +15828,33 @@ public final void rule__ConfigSpecification__Group_2__1() throws RecognitionExce // $ANTLR start "rule__ConfigSpecification__Group_2__1__Impl" - // InternalApplicationConfiguration.g:4957:1: rule__ConfigSpecification__Group_2__1__Impl : ( ( rule__ConfigSpecification__Group_2_1__0 )* ) ; + // InternalApplicationConfiguration.g:4963:1: rule__ConfigSpecification__Group_2__1__Impl : ( ( rule__ConfigSpecification__Group_2_1__0 )* ) ; public final void rule__ConfigSpecification__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4961:1: ( ( ( rule__ConfigSpecification__Group_2_1__0 )* ) ) - // InternalApplicationConfiguration.g:4962:1: ( ( rule__ConfigSpecification__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:4967:1: ( ( ( rule__ConfigSpecification__Group_2_1__0 )* ) ) + // InternalApplicationConfiguration.g:4968:1: ( ( rule__ConfigSpecification__Group_2_1__0 )* ) { - // InternalApplicationConfiguration.g:4962:1: ( ( rule__ConfigSpecification__Group_2_1__0 )* ) - // InternalApplicationConfiguration.g:4963:2: ( rule__ConfigSpecification__Group_2_1__0 )* + // InternalApplicationConfiguration.g:4968:1: ( ( rule__ConfigSpecification__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:4969:2: ( rule__ConfigSpecification__Group_2_1__0 )* { before(grammarAccess.getConfigSpecificationAccess().getGroup_2_1()); - // InternalApplicationConfiguration.g:4964:2: ( rule__ConfigSpecification__Group_2_1__0 )* + // InternalApplicationConfiguration.g:4970:2: ( rule__ConfigSpecification__Group_2_1__0 )* loop47: do { int alt47=2; int LA47_0 = input.LA(1); - if ( (LA47_0==26) ) { + if ( (LA47_0==27) ) { alt47=1; } switch (alt47) { case 1 : - // InternalApplicationConfiguration.g:4964:3: rule__ConfigSpecification__Group_2_1__0 + // InternalApplicationConfiguration.g:4970:3: rule__ConfigSpecification__Group_2_1__0 { pushFollow(FOLLOW_16); rule__ConfigSpecification__Group_2_1__0(); @@ -15866,14 +15893,14 @@ public final void rule__ConfigSpecification__Group_2__1__Impl() throws Recogniti // $ANTLR start "rule__ConfigSpecification__Group_2_1__0" - // InternalApplicationConfiguration.g:4973:1: rule__ConfigSpecification__Group_2_1__0 : rule__ConfigSpecification__Group_2_1__0__Impl rule__ConfigSpecification__Group_2_1__1 ; + // InternalApplicationConfiguration.g:4979:1: rule__ConfigSpecification__Group_2_1__0 : rule__ConfigSpecification__Group_2_1__0__Impl rule__ConfigSpecification__Group_2_1__1 ; public final void rule__ConfigSpecification__Group_2_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4977:1: ( rule__ConfigSpecification__Group_2_1__0__Impl rule__ConfigSpecification__Group_2_1__1 ) - // InternalApplicationConfiguration.g:4978:2: rule__ConfigSpecification__Group_2_1__0__Impl rule__ConfigSpecification__Group_2_1__1 + // InternalApplicationConfiguration.g:4983:1: ( rule__ConfigSpecification__Group_2_1__0__Impl rule__ConfigSpecification__Group_2_1__1 ) + // InternalApplicationConfiguration.g:4984:2: rule__ConfigSpecification__Group_2_1__0__Impl rule__ConfigSpecification__Group_2_1__1 { pushFollow(FOLLOW_24); rule__ConfigSpecification__Group_2_1__0__Impl(); @@ -15904,20 +15931,20 @@ public final void rule__ConfigSpecification__Group_2_1__0() throws RecognitionEx // $ANTLR start "rule__ConfigSpecification__Group_2_1__0__Impl" - // InternalApplicationConfiguration.g:4985:1: rule__ConfigSpecification__Group_2_1__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:4991:1: rule__ConfigSpecification__Group_2_1__0__Impl : ( ',' ) ; public final void rule__ConfigSpecification__Group_2_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:4989:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:4990:1: ( ',' ) + // InternalApplicationConfiguration.g:4995:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:4996:1: ( ',' ) { - // InternalApplicationConfiguration.g:4990:1: ( ',' ) - // InternalApplicationConfiguration.g:4991:2: ',' + // InternalApplicationConfiguration.g:4996:1: ( ',' ) + // InternalApplicationConfiguration.g:4997:2: ',' { before(grammarAccess.getConfigSpecificationAccess().getCommaKeyword_2_1_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getConfigSpecificationAccess().getCommaKeyword_2_1_0()); } @@ -15941,14 +15968,14 @@ public final void rule__ConfigSpecification__Group_2_1__0__Impl() throws Recogni // $ANTLR start "rule__ConfigSpecification__Group_2_1__1" - // InternalApplicationConfiguration.g:5000:1: rule__ConfigSpecification__Group_2_1__1 : rule__ConfigSpecification__Group_2_1__1__Impl ; + // InternalApplicationConfiguration.g:5006:1: rule__ConfigSpecification__Group_2_1__1 : rule__ConfigSpecification__Group_2_1__1__Impl ; public final void rule__ConfigSpecification__Group_2_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5004:1: ( rule__ConfigSpecification__Group_2_1__1__Impl ) - // InternalApplicationConfiguration.g:5005:2: rule__ConfigSpecification__Group_2_1__1__Impl + // InternalApplicationConfiguration.g:5010:1: ( rule__ConfigSpecification__Group_2_1__1__Impl ) + // InternalApplicationConfiguration.g:5011:2: rule__ConfigSpecification__Group_2_1__1__Impl { pushFollow(FOLLOW_2); rule__ConfigSpecification__Group_2_1__1__Impl(); @@ -15974,21 +16001,21 @@ public final void rule__ConfigSpecification__Group_2_1__1() throws RecognitionEx // $ANTLR start "rule__ConfigSpecification__Group_2_1__1__Impl" - // InternalApplicationConfiguration.g:5011:1: rule__ConfigSpecification__Group_2_1__1__Impl : ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) ; + // InternalApplicationConfiguration.g:5017:1: rule__ConfigSpecification__Group_2_1__1__Impl : ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) ; public final void rule__ConfigSpecification__Group_2_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5015:1: ( ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) ) - // InternalApplicationConfiguration.g:5016:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:5021:1: ( ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) ) + // InternalApplicationConfiguration.g:5022:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) { - // InternalApplicationConfiguration.g:5016:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) - // InternalApplicationConfiguration.g:5017:2: ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:5022:1: ( ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:5023:2: ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) { before(grammarAccess.getConfigSpecificationAccess().getEntriesAssignment_2_1_1()); - // InternalApplicationConfiguration.g:5018:2: ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) - // InternalApplicationConfiguration.g:5018:3: rule__ConfigSpecification__EntriesAssignment_2_1_1 + // InternalApplicationConfiguration.g:5024:2: ( rule__ConfigSpecification__EntriesAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:5024:3: rule__ConfigSpecification__EntriesAssignment_2_1_1 { pushFollow(FOLLOW_2); rule__ConfigSpecification__EntriesAssignment_2_1_1(); @@ -16021,14 +16048,14 @@ public final void rule__ConfigSpecification__Group_2_1__1__Impl() throws Recogni // $ANTLR start "rule__ConfigDeclaration__Group__0" - // InternalApplicationConfiguration.g:5027:1: rule__ConfigDeclaration__Group__0 : rule__ConfigDeclaration__Group__0__Impl rule__ConfigDeclaration__Group__1 ; + // InternalApplicationConfiguration.g:5033:1: rule__ConfigDeclaration__Group__0 : rule__ConfigDeclaration__Group__0__Impl rule__ConfigDeclaration__Group__1 ; public final void rule__ConfigDeclaration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5031:1: ( rule__ConfigDeclaration__Group__0__Impl rule__ConfigDeclaration__Group__1 ) - // InternalApplicationConfiguration.g:5032:2: rule__ConfigDeclaration__Group__0__Impl rule__ConfigDeclaration__Group__1 + // InternalApplicationConfiguration.g:5037:1: ( rule__ConfigDeclaration__Group__0__Impl rule__ConfigDeclaration__Group__1 ) + // InternalApplicationConfiguration.g:5038:2: rule__ConfigDeclaration__Group__0__Impl rule__ConfigDeclaration__Group__1 { pushFollow(FOLLOW_8); rule__ConfigDeclaration__Group__0__Impl(); @@ -16059,20 +16086,20 @@ public final void rule__ConfigDeclaration__Group__0() throws RecognitionExceptio // $ANTLR start "rule__ConfigDeclaration__Group__0__Impl" - // InternalApplicationConfiguration.g:5039:1: rule__ConfigDeclaration__Group__0__Impl : ( 'config' ) ; + // InternalApplicationConfiguration.g:5045:1: rule__ConfigDeclaration__Group__0__Impl : ( 'config' ) ; public final void rule__ConfigDeclaration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5043:1: ( ( 'config' ) ) - // InternalApplicationConfiguration.g:5044:1: ( 'config' ) + // InternalApplicationConfiguration.g:5049:1: ( ( 'config' ) ) + // InternalApplicationConfiguration.g:5050:1: ( 'config' ) { - // InternalApplicationConfiguration.g:5044:1: ( 'config' ) - // InternalApplicationConfiguration.g:5045:2: 'config' + // InternalApplicationConfiguration.g:5050:1: ( 'config' ) + // InternalApplicationConfiguration.g:5051:2: 'config' { before(grammarAccess.getConfigDeclarationAccess().getConfigKeyword_0()); - match(input,34,FOLLOW_2); + match(input,35,FOLLOW_2); after(grammarAccess.getConfigDeclarationAccess().getConfigKeyword_0()); } @@ -16096,14 +16123,14 @@ public final void rule__ConfigDeclaration__Group__0__Impl() throws RecognitionEx // $ANTLR start "rule__ConfigDeclaration__Group__1" - // InternalApplicationConfiguration.g:5054:1: rule__ConfigDeclaration__Group__1 : rule__ConfigDeclaration__Group__1__Impl rule__ConfigDeclaration__Group__2 ; + // InternalApplicationConfiguration.g:5060:1: rule__ConfigDeclaration__Group__1 : rule__ConfigDeclaration__Group__1__Impl rule__ConfigDeclaration__Group__2 ; public final void rule__ConfigDeclaration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5058:1: ( rule__ConfigDeclaration__Group__1__Impl rule__ConfigDeclaration__Group__2 ) - // InternalApplicationConfiguration.g:5059:2: rule__ConfigDeclaration__Group__1__Impl rule__ConfigDeclaration__Group__2 + // InternalApplicationConfiguration.g:5064:1: ( rule__ConfigDeclaration__Group__1__Impl rule__ConfigDeclaration__Group__2 ) + // InternalApplicationConfiguration.g:5065:2: rule__ConfigDeclaration__Group__1__Impl rule__ConfigDeclaration__Group__2 { pushFollow(FOLLOW_18); rule__ConfigDeclaration__Group__1__Impl(); @@ -16134,21 +16161,21 @@ public final void rule__ConfigDeclaration__Group__1() throws RecognitionExceptio // $ANTLR start "rule__ConfigDeclaration__Group__1__Impl" - // InternalApplicationConfiguration.g:5066:1: rule__ConfigDeclaration__Group__1__Impl : ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:5072:1: rule__ConfigDeclaration__Group__1__Impl : ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) ; public final void rule__ConfigDeclaration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5070:1: ( ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:5071:1: ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:5076:1: ( ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:5077:1: ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) { - // InternalApplicationConfiguration.g:5071:1: ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) - // InternalApplicationConfiguration.g:5072:2: ( rule__ConfigDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:5077:1: ( ( rule__ConfigDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:5078:2: ( rule__ConfigDeclaration__NameAssignment_1 ) { before(grammarAccess.getConfigDeclarationAccess().getNameAssignment_1()); - // InternalApplicationConfiguration.g:5073:2: ( rule__ConfigDeclaration__NameAssignment_1 ) - // InternalApplicationConfiguration.g:5073:3: rule__ConfigDeclaration__NameAssignment_1 + // InternalApplicationConfiguration.g:5079:2: ( rule__ConfigDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:5079:3: rule__ConfigDeclaration__NameAssignment_1 { pushFollow(FOLLOW_2); rule__ConfigDeclaration__NameAssignment_1(); @@ -16181,14 +16208,14 @@ public final void rule__ConfigDeclaration__Group__1__Impl() throws RecognitionEx // $ANTLR start "rule__ConfigDeclaration__Group__2" - // InternalApplicationConfiguration.g:5081:1: rule__ConfigDeclaration__Group__2 : rule__ConfigDeclaration__Group__2__Impl ; + // InternalApplicationConfiguration.g:5087:1: rule__ConfigDeclaration__Group__2 : rule__ConfigDeclaration__Group__2__Impl ; public final void rule__ConfigDeclaration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5085:1: ( rule__ConfigDeclaration__Group__2__Impl ) - // InternalApplicationConfiguration.g:5086:2: rule__ConfigDeclaration__Group__2__Impl + // InternalApplicationConfiguration.g:5091:1: ( rule__ConfigDeclaration__Group__2__Impl ) + // InternalApplicationConfiguration.g:5092:2: rule__ConfigDeclaration__Group__2__Impl { pushFollow(FOLLOW_2); rule__ConfigDeclaration__Group__2__Impl(); @@ -16214,21 +16241,21 @@ public final void rule__ConfigDeclaration__Group__2() throws RecognitionExceptio // $ANTLR start "rule__ConfigDeclaration__Group__2__Impl" - // InternalApplicationConfiguration.g:5092:1: rule__ConfigDeclaration__Group__2__Impl : ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:5098:1: rule__ConfigDeclaration__Group__2__Impl : ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) ; public final void rule__ConfigDeclaration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5096:1: ( ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:5097:1: ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:5102:1: ( ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:5103:1: ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) { - // InternalApplicationConfiguration.g:5097:1: ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) - // InternalApplicationConfiguration.g:5098:2: ( rule__ConfigDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:5103:1: ( ( rule__ConfigDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:5104:2: ( rule__ConfigDeclaration__SpecificationAssignment_2 ) { before(grammarAccess.getConfigDeclarationAccess().getSpecificationAssignment_2()); - // InternalApplicationConfiguration.g:5099:2: ( rule__ConfigDeclaration__SpecificationAssignment_2 ) - // InternalApplicationConfiguration.g:5099:3: rule__ConfigDeclaration__SpecificationAssignment_2 + // InternalApplicationConfiguration.g:5105:2: ( rule__ConfigDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:5105:3: rule__ConfigDeclaration__SpecificationAssignment_2 { pushFollow(FOLLOW_2); rule__ConfigDeclaration__SpecificationAssignment_2(); @@ -16261,14 +16288,14 @@ public final void rule__ConfigDeclaration__Group__2__Impl() throws RecognitionEx // $ANTLR start "rule__DocumentationEntry__Group__0" - // InternalApplicationConfiguration.g:5108:1: rule__DocumentationEntry__Group__0 : rule__DocumentationEntry__Group__0__Impl rule__DocumentationEntry__Group__1 ; + // InternalApplicationConfiguration.g:5114:1: rule__DocumentationEntry__Group__0 : rule__DocumentationEntry__Group__0__Impl rule__DocumentationEntry__Group__1 ; public final void rule__DocumentationEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5112:1: ( rule__DocumentationEntry__Group__0__Impl rule__DocumentationEntry__Group__1 ) - // InternalApplicationConfiguration.g:5113:2: rule__DocumentationEntry__Group__0__Impl rule__DocumentationEntry__Group__1 + // InternalApplicationConfiguration.g:5118:1: ( rule__DocumentationEntry__Group__0__Impl rule__DocumentationEntry__Group__1 ) + // InternalApplicationConfiguration.g:5119:2: rule__DocumentationEntry__Group__0__Impl rule__DocumentationEntry__Group__1 { pushFollow(FOLLOW_13); rule__DocumentationEntry__Group__0__Impl(); @@ -16299,20 +16326,20 @@ public final void rule__DocumentationEntry__Group__0() throws RecognitionExcepti // $ANTLR start "rule__DocumentationEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:5120:1: rule__DocumentationEntry__Group__0__Impl : ( 'log-level' ) ; + // InternalApplicationConfiguration.g:5126:1: rule__DocumentationEntry__Group__0__Impl : ( 'log-level' ) ; public final void rule__DocumentationEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5124:1: ( ( 'log-level' ) ) - // InternalApplicationConfiguration.g:5125:1: ( 'log-level' ) + // InternalApplicationConfiguration.g:5130:1: ( ( 'log-level' ) ) + // InternalApplicationConfiguration.g:5131:1: ( 'log-level' ) { - // InternalApplicationConfiguration.g:5125:1: ( 'log-level' ) - // InternalApplicationConfiguration.g:5126:2: 'log-level' + // InternalApplicationConfiguration.g:5131:1: ( 'log-level' ) + // InternalApplicationConfiguration.g:5132:2: 'log-level' { before(grammarAccess.getDocumentationEntryAccess().getLogLevelKeyword_0()); - match(input,35,FOLLOW_2); + match(input,36,FOLLOW_2); after(grammarAccess.getDocumentationEntryAccess().getLogLevelKeyword_0()); } @@ -16336,14 +16363,14 @@ public final void rule__DocumentationEntry__Group__0__Impl() throws RecognitionE // $ANTLR start "rule__DocumentationEntry__Group__1" - // InternalApplicationConfiguration.g:5135:1: rule__DocumentationEntry__Group__1 : rule__DocumentationEntry__Group__1__Impl rule__DocumentationEntry__Group__2 ; + // InternalApplicationConfiguration.g:5141:1: rule__DocumentationEntry__Group__1 : rule__DocumentationEntry__Group__1__Impl rule__DocumentationEntry__Group__2 ; public final void rule__DocumentationEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5139:1: ( rule__DocumentationEntry__Group__1__Impl rule__DocumentationEntry__Group__2 ) - // InternalApplicationConfiguration.g:5140:2: rule__DocumentationEntry__Group__1__Impl rule__DocumentationEntry__Group__2 + // InternalApplicationConfiguration.g:5145:1: ( rule__DocumentationEntry__Group__1__Impl rule__DocumentationEntry__Group__2 ) + // InternalApplicationConfiguration.g:5146:2: rule__DocumentationEntry__Group__1__Impl rule__DocumentationEntry__Group__2 { pushFollow(FOLLOW_25); rule__DocumentationEntry__Group__1__Impl(); @@ -16374,20 +16401,20 @@ public final void rule__DocumentationEntry__Group__1() throws RecognitionExcepti // $ANTLR start "rule__DocumentationEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:5147:1: rule__DocumentationEntry__Group__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:5153:1: rule__DocumentationEntry__Group__1__Impl : ( '=' ) ; public final void rule__DocumentationEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5151:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:5152:1: ( '=' ) + // InternalApplicationConfiguration.g:5157:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:5158:1: ( '=' ) { - // InternalApplicationConfiguration.g:5152:1: ( '=' ) - // InternalApplicationConfiguration.g:5153:2: '=' + // InternalApplicationConfiguration.g:5158:1: ( '=' ) + // InternalApplicationConfiguration.g:5159:2: '=' { before(grammarAccess.getDocumentationEntryAccess().getEqualsSignKeyword_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getDocumentationEntryAccess().getEqualsSignKeyword_1()); } @@ -16411,14 +16438,14 @@ public final void rule__DocumentationEntry__Group__1__Impl() throws RecognitionE // $ANTLR start "rule__DocumentationEntry__Group__2" - // InternalApplicationConfiguration.g:5162:1: rule__DocumentationEntry__Group__2 : rule__DocumentationEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:5168:1: rule__DocumentationEntry__Group__2 : rule__DocumentationEntry__Group__2__Impl ; public final void rule__DocumentationEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5166:1: ( rule__DocumentationEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:5167:2: rule__DocumentationEntry__Group__2__Impl + // InternalApplicationConfiguration.g:5172:1: ( rule__DocumentationEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:5173:2: rule__DocumentationEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__DocumentationEntry__Group__2__Impl(); @@ -16444,21 +16471,21 @@ public final void rule__DocumentationEntry__Group__2() throws RecognitionExcepti // $ANTLR start "rule__DocumentationEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:5173:1: rule__DocumentationEntry__Group__2__Impl : ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:5179:1: rule__DocumentationEntry__Group__2__Impl : ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) ; public final void rule__DocumentationEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5177:1: ( ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:5178:1: ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) + // InternalApplicationConfiguration.g:5183:1: ( ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:5184:1: ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) { - // InternalApplicationConfiguration.g:5178:1: ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) - // InternalApplicationConfiguration.g:5179:2: ( rule__DocumentationEntry__LevelAssignment_2 ) + // InternalApplicationConfiguration.g:5184:1: ( ( rule__DocumentationEntry__LevelAssignment_2 ) ) + // InternalApplicationConfiguration.g:5185:2: ( rule__DocumentationEntry__LevelAssignment_2 ) { before(grammarAccess.getDocumentationEntryAccess().getLevelAssignment_2()); - // InternalApplicationConfiguration.g:5180:2: ( rule__DocumentationEntry__LevelAssignment_2 ) - // InternalApplicationConfiguration.g:5180:3: rule__DocumentationEntry__LevelAssignment_2 + // InternalApplicationConfiguration.g:5186:2: ( rule__DocumentationEntry__LevelAssignment_2 ) + // InternalApplicationConfiguration.g:5186:3: rule__DocumentationEntry__LevelAssignment_2 { pushFollow(FOLLOW_2); rule__DocumentationEntry__LevelAssignment_2(); @@ -16491,14 +16518,14 @@ public final void rule__DocumentationEntry__Group__2__Impl() throws RecognitionE // $ANTLR start "rule__RuntimeEntry__Group__0" - // InternalApplicationConfiguration.g:5189:1: rule__RuntimeEntry__Group__0 : rule__RuntimeEntry__Group__0__Impl rule__RuntimeEntry__Group__1 ; + // InternalApplicationConfiguration.g:5195:1: rule__RuntimeEntry__Group__0 : rule__RuntimeEntry__Group__0__Impl rule__RuntimeEntry__Group__1 ; public final void rule__RuntimeEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5193:1: ( rule__RuntimeEntry__Group__0__Impl rule__RuntimeEntry__Group__1 ) - // InternalApplicationConfiguration.g:5194:2: rule__RuntimeEntry__Group__0__Impl rule__RuntimeEntry__Group__1 + // InternalApplicationConfiguration.g:5199:1: ( rule__RuntimeEntry__Group__0__Impl rule__RuntimeEntry__Group__1 ) + // InternalApplicationConfiguration.g:5200:2: rule__RuntimeEntry__Group__0__Impl rule__RuntimeEntry__Group__1 { pushFollow(FOLLOW_13); rule__RuntimeEntry__Group__0__Impl(); @@ -16529,20 +16556,20 @@ public final void rule__RuntimeEntry__Group__0() throws RecognitionException { // $ANTLR start "rule__RuntimeEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:5201:1: rule__RuntimeEntry__Group__0__Impl : ( 'runtime' ) ; + // InternalApplicationConfiguration.g:5207:1: rule__RuntimeEntry__Group__0__Impl : ( 'runtime' ) ; public final void rule__RuntimeEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5205:1: ( ( 'runtime' ) ) - // InternalApplicationConfiguration.g:5206:1: ( 'runtime' ) + // InternalApplicationConfiguration.g:5211:1: ( ( 'runtime' ) ) + // InternalApplicationConfiguration.g:5212:1: ( 'runtime' ) { - // InternalApplicationConfiguration.g:5206:1: ( 'runtime' ) - // InternalApplicationConfiguration.g:5207:2: 'runtime' + // InternalApplicationConfiguration.g:5212:1: ( 'runtime' ) + // InternalApplicationConfiguration.g:5213:2: 'runtime' { before(grammarAccess.getRuntimeEntryAccess().getRuntimeKeyword_0()); - match(input,36,FOLLOW_2); + match(input,37,FOLLOW_2); after(grammarAccess.getRuntimeEntryAccess().getRuntimeKeyword_0()); } @@ -16566,14 +16593,14 @@ public final void rule__RuntimeEntry__Group__0__Impl() throws RecognitionExcepti // $ANTLR start "rule__RuntimeEntry__Group__1" - // InternalApplicationConfiguration.g:5216:1: rule__RuntimeEntry__Group__1 : rule__RuntimeEntry__Group__1__Impl rule__RuntimeEntry__Group__2 ; + // InternalApplicationConfiguration.g:5222:1: rule__RuntimeEntry__Group__1 : rule__RuntimeEntry__Group__1__Impl rule__RuntimeEntry__Group__2 ; public final void rule__RuntimeEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5220:1: ( rule__RuntimeEntry__Group__1__Impl rule__RuntimeEntry__Group__2 ) - // InternalApplicationConfiguration.g:5221:2: rule__RuntimeEntry__Group__1__Impl rule__RuntimeEntry__Group__2 + // InternalApplicationConfiguration.g:5226:1: ( rule__RuntimeEntry__Group__1__Impl rule__RuntimeEntry__Group__2 ) + // InternalApplicationConfiguration.g:5227:2: rule__RuntimeEntry__Group__1__Impl rule__RuntimeEntry__Group__2 { pushFollow(FOLLOW_9); rule__RuntimeEntry__Group__1__Impl(); @@ -16604,20 +16631,20 @@ public final void rule__RuntimeEntry__Group__1() throws RecognitionException { // $ANTLR start "rule__RuntimeEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:5228:1: rule__RuntimeEntry__Group__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:5234:1: rule__RuntimeEntry__Group__1__Impl : ( '=' ) ; public final void rule__RuntimeEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5232:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:5233:1: ( '=' ) + // InternalApplicationConfiguration.g:5238:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:5239:1: ( '=' ) { - // InternalApplicationConfiguration.g:5233:1: ( '=' ) - // InternalApplicationConfiguration.g:5234:2: '=' + // InternalApplicationConfiguration.g:5239:1: ( '=' ) + // InternalApplicationConfiguration.g:5240:2: '=' { before(grammarAccess.getRuntimeEntryAccess().getEqualsSignKeyword_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getRuntimeEntryAccess().getEqualsSignKeyword_1()); } @@ -16641,14 +16668,14 @@ public final void rule__RuntimeEntry__Group__1__Impl() throws RecognitionExcepti // $ANTLR start "rule__RuntimeEntry__Group__2" - // InternalApplicationConfiguration.g:5243:1: rule__RuntimeEntry__Group__2 : rule__RuntimeEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:5249:1: rule__RuntimeEntry__Group__2 : rule__RuntimeEntry__Group__2__Impl ; public final void rule__RuntimeEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5247:1: ( rule__RuntimeEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:5248:2: rule__RuntimeEntry__Group__2__Impl + // InternalApplicationConfiguration.g:5253:1: ( rule__RuntimeEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:5254:2: rule__RuntimeEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__RuntimeEntry__Group__2__Impl(); @@ -16674,21 +16701,21 @@ public final void rule__RuntimeEntry__Group__2() throws RecognitionException { // $ANTLR start "rule__RuntimeEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:5254:1: rule__RuntimeEntry__Group__2__Impl : ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:5260:1: rule__RuntimeEntry__Group__2__Impl : ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) ; public final void rule__RuntimeEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5258:1: ( ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:5259:1: ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) + // InternalApplicationConfiguration.g:5264:1: ( ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:5265:1: ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) { - // InternalApplicationConfiguration.g:5259:1: ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) - // InternalApplicationConfiguration.g:5260:2: ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) + // InternalApplicationConfiguration.g:5265:1: ( ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) ) + // InternalApplicationConfiguration.g:5266:2: ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) { before(grammarAccess.getRuntimeEntryAccess().getMillisecLimitAssignment_2()); - // InternalApplicationConfiguration.g:5261:2: ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) - // InternalApplicationConfiguration.g:5261:3: rule__RuntimeEntry__MillisecLimitAssignment_2 + // InternalApplicationConfiguration.g:5267:2: ( rule__RuntimeEntry__MillisecLimitAssignment_2 ) + // InternalApplicationConfiguration.g:5267:3: rule__RuntimeEntry__MillisecLimitAssignment_2 { pushFollow(FOLLOW_2); rule__RuntimeEntry__MillisecLimitAssignment_2(); @@ -16721,14 +16748,14 @@ public final void rule__RuntimeEntry__Group__2__Impl() throws RecognitionExcepti // $ANTLR start "rule__MemoryEntry__Group__0" - // InternalApplicationConfiguration.g:5270:1: rule__MemoryEntry__Group__0 : rule__MemoryEntry__Group__0__Impl rule__MemoryEntry__Group__1 ; + // InternalApplicationConfiguration.g:5276:1: rule__MemoryEntry__Group__0 : rule__MemoryEntry__Group__0__Impl rule__MemoryEntry__Group__1 ; public final void rule__MemoryEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5274:1: ( rule__MemoryEntry__Group__0__Impl rule__MemoryEntry__Group__1 ) - // InternalApplicationConfiguration.g:5275:2: rule__MemoryEntry__Group__0__Impl rule__MemoryEntry__Group__1 + // InternalApplicationConfiguration.g:5280:1: ( rule__MemoryEntry__Group__0__Impl rule__MemoryEntry__Group__1 ) + // InternalApplicationConfiguration.g:5281:2: rule__MemoryEntry__Group__0__Impl rule__MemoryEntry__Group__1 { pushFollow(FOLLOW_13); rule__MemoryEntry__Group__0__Impl(); @@ -16759,20 +16786,20 @@ public final void rule__MemoryEntry__Group__0() throws RecognitionException { // $ANTLR start "rule__MemoryEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:5282:1: rule__MemoryEntry__Group__0__Impl : ( 'memory' ) ; + // InternalApplicationConfiguration.g:5288:1: rule__MemoryEntry__Group__0__Impl : ( 'memory' ) ; public final void rule__MemoryEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5286:1: ( ( 'memory' ) ) - // InternalApplicationConfiguration.g:5287:1: ( 'memory' ) + // InternalApplicationConfiguration.g:5292:1: ( ( 'memory' ) ) + // InternalApplicationConfiguration.g:5293:1: ( 'memory' ) { - // InternalApplicationConfiguration.g:5287:1: ( 'memory' ) - // InternalApplicationConfiguration.g:5288:2: 'memory' + // InternalApplicationConfiguration.g:5293:1: ( 'memory' ) + // InternalApplicationConfiguration.g:5294:2: 'memory' { before(grammarAccess.getMemoryEntryAccess().getMemoryKeyword_0()); - match(input,37,FOLLOW_2); + match(input,38,FOLLOW_2); after(grammarAccess.getMemoryEntryAccess().getMemoryKeyword_0()); } @@ -16796,14 +16823,14 @@ public final void rule__MemoryEntry__Group__0__Impl() throws RecognitionExceptio // $ANTLR start "rule__MemoryEntry__Group__1" - // InternalApplicationConfiguration.g:5297:1: rule__MemoryEntry__Group__1 : rule__MemoryEntry__Group__1__Impl rule__MemoryEntry__Group__2 ; + // InternalApplicationConfiguration.g:5303:1: rule__MemoryEntry__Group__1 : rule__MemoryEntry__Group__1__Impl rule__MemoryEntry__Group__2 ; public final void rule__MemoryEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5301:1: ( rule__MemoryEntry__Group__1__Impl rule__MemoryEntry__Group__2 ) - // InternalApplicationConfiguration.g:5302:2: rule__MemoryEntry__Group__1__Impl rule__MemoryEntry__Group__2 + // InternalApplicationConfiguration.g:5307:1: ( rule__MemoryEntry__Group__1__Impl rule__MemoryEntry__Group__2 ) + // InternalApplicationConfiguration.g:5308:2: rule__MemoryEntry__Group__1__Impl rule__MemoryEntry__Group__2 { pushFollow(FOLLOW_9); rule__MemoryEntry__Group__1__Impl(); @@ -16834,20 +16861,20 @@ public final void rule__MemoryEntry__Group__1() throws RecognitionException { // $ANTLR start "rule__MemoryEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:5309:1: rule__MemoryEntry__Group__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:5315:1: rule__MemoryEntry__Group__1__Impl : ( '=' ) ; public final void rule__MemoryEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5313:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:5314:1: ( '=' ) + // InternalApplicationConfiguration.g:5319:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:5320:1: ( '=' ) { - // InternalApplicationConfiguration.g:5314:1: ( '=' ) - // InternalApplicationConfiguration.g:5315:2: '=' + // InternalApplicationConfiguration.g:5320:1: ( '=' ) + // InternalApplicationConfiguration.g:5321:2: '=' { before(grammarAccess.getMemoryEntryAccess().getEqualsSignKeyword_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getMemoryEntryAccess().getEqualsSignKeyword_1()); } @@ -16871,14 +16898,14 @@ public final void rule__MemoryEntry__Group__1__Impl() throws RecognitionExceptio // $ANTLR start "rule__MemoryEntry__Group__2" - // InternalApplicationConfiguration.g:5324:1: rule__MemoryEntry__Group__2 : rule__MemoryEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:5330:1: rule__MemoryEntry__Group__2 : rule__MemoryEntry__Group__2__Impl ; public final void rule__MemoryEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5328:1: ( rule__MemoryEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:5329:2: rule__MemoryEntry__Group__2__Impl + // InternalApplicationConfiguration.g:5334:1: ( rule__MemoryEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:5335:2: rule__MemoryEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__MemoryEntry__Group__2__Impl(); @@ -16904,21 +16931,21 @@ public final void rule__MemoryEntry__Group__2() throws RecognitionException { // $ANTLR start "rule__MemoryEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:5335:1: rule__MemoryEntry__Group__2__Impl : ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:5341:1: rule__MemoryEntry__Group__2__Impl : ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) ; public final void rule__MemoryEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5339:1: ( ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:5340:1: ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) + // InternalApplicationConfiguration.g:5345:1: ( ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:5346:1: ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) { - // InternalApplicationConfiguration.g:5340:1: ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) - // InternalApplicationConfiguration.g:5341:2: ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) + // InternalApplicationConfiguration.g:5346:1: ( ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) ) + // InternalApplicationConfiguration.g:5347:2: ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) { before(grammarAccess.getMemoryEntryAccess().getMegabyteLimitAssignment_2()); - // InternalApplicationConfiguration.g:5342:2: ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) - // InternalApplicationConfiguration.g:5342:3: rule__MemoryEntry__MegabyteLimitAssignment_2 + // InternalApplicationConfiguration.g:5348:2: ( rule__MemoryEntry__MegabyteLimitAssignment_2 ) + // InternalApplicationConfiguration.g:5348:3: rule__MemoryEntry__MegabyteLimitAssignment_2 { pushFollow(FOLLOW_2); rule__MemoryEntry__MegabyteLimitAssignment_2(); @@ -16951,14 +16978,14 @@ public final void rule__MemoryEntry__Group__2__Impl() throws RecognitionExceptio // $ANTLR start "rule__CustomEntry__Group__0" - // InternalApplicationConfiguration.g:5351:1: rule__CustomEntry__Group__0 : rule__CustomEntry__Group__0__Impl rule__CustomEntry__Group__1 ; + // InternalApplicationConfiguration.g:5357:1: rule__CustomEntry__Group__0 : rule__CustomEntry__Group__0__Impl rule__CustomEntry__Group__1 ; public final void rule__CustomEntry__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5355:1: ( rule__CustomEntry__Group__0__Impl rule__CustomEntry__Group__1 ) - // InternalApplicationConfiguration.g:5356:2: rule__CustomEntry__Group__0__Impl rule__CustomEntry__Group__1 + // InternalApplicationConfiguration.g:5361:1: ( rule__CustomEntry__Group__0__Impl rule__CustomEntry__Group__1 ) + // InternalApplicationConfiguration.g:5362:2: rule__CustomEntry__Group__0__Impl rule__CustomEntry__Group__1 { pushFollow(FOLLOW_13); rule__CustomEntry__Group__0__Impl(); @@ -16989,21 +17016,21 @@ public final void rule__CustomEntry__Group__0() throws RecognitionException { // $ANTLR start "rule__CustomEntry__Group__0__Impl" - // InternalApplicationConfiguration.g:5363:1: rule__CustomEntry__Group__0__Impl : ( ( rule__CustomEntry__KeyAssignment_0 ) ) ; + // InternalApplicationConfiguration.g:5369:1: rule__CustomEntry__Group__0__Impl : ( ( rule__CustomEntry__KeyAssignment_0 ) ) ; public final void rule__CustomEntry__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5367:1: ( ( ( rule__CustomEntry__KeyAssignment_0 ) ) ) - // InternalApplicationConfiguration.g:5368:1: ( ( rule__CustomEntry__KeyAssignment_0 ) ) + // InternalApplicationConfiguration.g:5373:1: ( ( ( rule__CustomEntry__KeyAssignment_0 ) ) ) + // InternalApplicationConfiguration.g:5374:1: ( ( rule__CustomEntry__KeyAssignment_0 ) ) { - // InternalApplicationConfiguration.g:5368:1: ( ( rule__CustomEntry__KeyAssignment_0 ) ) - // InternalApplicationConfiguration.g:5369:2: ( rule__CustomEntry__KeyAssignment_0 ) + // InternalApplicationConfiguration.g:5374:1: ( ( rule__CustomEntry__KeyAssignment_0 ) ) + // InternalApplicationConfiguration.g:5375:2: ( rule__CustomEntry__KeyAssignment_0 ) { before(grammarAccess.getCustomEntryAccess().getKeyAssignment_0()); - // InternalApplicationConfiguration.g:5370:2: ( rule__CustomEntry__KeyAssignment_0 ) - // InternalApplicationConfiguration.g:5370:3: rule__CustomEntry__KeyAssignment_0 + // InternalApplicationConfiguration.g:5376:2: ( rule__CustomEntry__KeyAssignment_0 ) + // InternalApplicationConfiguration.g:5376:3: rule__CustomEntry__KeyAssignment_0 { pushFollow(FOLLOW_2); rule__CustomEntry__KeyAssignment_0(); @@ -17036,14 +17063,14 @@ public final void rule__CustomEntry__Group__0__Impl() throws RecognitionExceptio // $ANTLR start "rule__CustomEntry__Group__1" - // InternalApplicationConfiguration.g:5378:1: rule__CustomEntry__Group__1 : rule__CustomEntry__Group__1__Impl rule__CustomEntry__Group__2 ; + // InternalApplicationConfiguration.g:5384:1: rule__CustomEntry__Group__1 : rule__CustomEntry__Group__1__Impl rule__CustomEntry__Group__2 ; public final void rule__CustomEntry__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5382:1: ( rule__CustomEntry__Group__1__Impl rule__CustomEntry__Group__2 ) - // InternalApplicationConfiguration.g:5383:2: rule__CustomEntry__Group__1__Impl rule__CustomEntry__Group__2 + // InternalApplicationConfiguration.g:5388:1: ( rule__CustomEntry__Group__1__Impl rule__CustomEntry__Group__2 ) + // InternalApplicationConfiguration.g:5389:2: rule__CustomEntry__Group__1__Impl rule__CustomEntry__Group__2 { pushFollow(FOLLOW_11); rule__CustomEntry__Group__1__Impl(); @@ -17074,20 +17101,20 @@ public final void rule__CustomEntry__Group__1() throws RecognitionException { // $ANTLR start "rule__CustomEntry__Group__1__Impl" - // InternalApplicationConfiguration.g:5390:1: rule__CustomEntry__Group__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:5396:1: rule__CustomEntry__Group__1__Impl : ( '=' ) ; public final void rule__CustomEntry__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5394:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:5395:1: ( '=' ) + // InternalApplicationConfiguration.g:5400:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:5401:1: ( '=' ) { - // InternalApplicationConfiguration.g:5395:1: ( '=' ) - // InternalApplicationConfiguration.g:5396:2: '=' + // InternalApplicationConfiguration.g:5401:1: ( '=' ) + // InternalApplicationConfiguration.g:5402:2: '=' { before(grammarAccess.getCustomEntryAccess().getEqualsSignKeyword_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getCustomEntryAccess().getEqualsSignKeyword_1()); } @@ -17111,14 +17138,14 @@ public final void rule__CustomEntry__Group__1__Impl() throws RecognitionExceptio // $ANTLR start "rule__CustomEntry__Group__2" - // InternalApplicationConfiguration.g:5405:1: rule__CustomEntry__Group__2 : rule__CustomEntry__Group__2__Impl ; + // InternalApplicationConfiguration.g:5411:1: rule__CustomEntry__Group__2 : rule__CustomEntry__Group__2__Impl ; public final void rule__CustomEntry__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5409:1: ( rule__CustomEntry__Group__2__Impl ) - // InternalApplicationConfiguration.g:5410:2: rule__CustomEntry__Group__2__Impl + // InternalApplicationConfiguration.g:5415:1: ( rule__CustomEntry__Group__2__Impl ) + // InternalApplicationConfiguration.g:5416:2: rule__CustomEntry__Group__2__Impl { pushFollow(FOLLOW_2); rule__CustomEntry__Group__2__Impl(); @@ -17144,21 +17171,21 @@ public final void rule__CustomEntry__Group__2() throws RecognitionException { // $ANTLR start "rule__CustomEntry__Group__2__Impl" - // InternalApplicationConfiguration.g:5416:1: rule__CustomEntry__Group__2__Impl : ( ( rule__CustomEntry__ValueAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:5422:1: rule__CustomEntry__Group__2__Impl : ( ( rule__CustomEntry__ValueAssignment_2 ) ) ; public final void rule__CustomEntry__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5420:1: ( ( ( rule__CustomEntry__ValueAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:5421:1: ( ( rule__CustomEntry__ValueAssignment_2 ) ) + // InternalApplicationConfiguration.g:5426:1: ( ( ( rule__CustomEntry__ValueAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:5427:1: ( ( rule__CustomEntry__ValueAssignment_2 ) ) { - // InternalApplicationConfiguration.g:5421:1: ( ( rule__CustomEntry__ValueAssignment_2 ) ) - // InternalApplicationConfiguration.g:5422:2: ( rule__CustomEntry__ValueAssignment_2 ) + // InternalApplicationConfiguration.g:5427:1: ( ( rule__CustomEntry__ValueAssignment_2 ) ) + // InternalApplicationConfiguration.g:5428:2: ( rule__CustomEntry__ValueAssignment_2 ) { before(grammarAccess.getCustomEntryAccess().getValueAssignment_2()); - // InternalApplicationConfiguration.g:5423:2: ( rule__CustomEntry__ValueAssignment_2 ) - // InternalApplicationConfiguration.g:5423:3: rule__CustomEntry__ValueAssignment_2 + // InternalApplicationConfiguration.g:5429:2: ( rule__CustomEntry__ValueAssignment_2 ) + // InternalApplicationConfiguration.g:5429:3: rule__CustomEntry__ValueAssignment_2 { pushFollow(FOLLOW_2); rule__CustomEntry__ValueAssignment_2(); @@ -17191,14 +17218,14 @@ public final void rule__CustomEntry__Group__2__Impl() throws RecognitionExceptio // $ANTLR start "rule__ScopeSpecification__Group__0" - // InternalApplicationConfiguration.g:5432:1: rule__ScopeSpecification__Group__0 : rule__ScopeSpecification__Group__0__Impl rule__ScopeSpecification__Group__1 ; + // InternalApplicationConfiguration.g:5438:1: rule__ScopeSpecification__Group__0 : rule__ScopeSpecification__Group__0__Impl rule__ScopeSpecification__Group__1 ; public final void rule__ScopeSpecification__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5436:1: ( rule__ScopeSpecification__Group__0__Impl rule__ScopeSpecification__Group__1 ) - // InternalApplicationConfiguration.g:5437:2: rule__ScopeSpecification__Group__0__Impl rule__ScopeSpecification__Group__1 + // InternalApplicationConfiguration.g:5442:1: ( rule__ScopeSpecification__Group__0__Impl rule__ScopeSpecification__Group__1 ) + // InternalApplicationConfiguration.g:5443:2: rule__ScopeSpecification__Group__0__Impl rule__ScopeSpecification__Group__1 { pushFollow(FOLLOW_18); rule__ScopeSpecification__Group__0__Impl(); @@ -17229,21 +17256,21 @@ public final void rule__ScopeSpecification__Group__0() throws RecognitionExcepti // $ANTLR start "rule__ScopeSpecification__Group__0__Impl" - // InternalApplicationConfiguration.g:5444:1: rule__ScopeSpecification__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:5450:1: rule__ScopeSpecification__Group__0__Impl : ( () ) ; public final void rule__ScopeSpecification__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5448:1: ( ( () ) ) - // InternalApplicationConfiguration.g:5449:1: ( () ) + // InternalApplicationConfiguration.g:5454:1: ( ( () ) ) + // InternalApplicationConfiguration.g:5455:1: ( () ) { - // InternalApplicationConfiguration.g:5449:1: ( () ) - // InternalApplicationConfiguration.g:5450:2: () + // InternalApplicationConfiguration.g:5455:1: ( () ) + // InternalApplicationConfiguration.g:5456:2: () { before(grammarAccess.getScopeSpecificationAccess().getScopeSpecificationAction_0()); - // InternalApplicationConfiguration.g:5451:2: () - // InternalApplicationConfiguration.g:5451:3: + // InternalApplicationConfiguration.g:5457:2: () + // InternalApplicationConfiguration.g:5457:3: { } @@ -17266,14 +17293,14 @@ public final void rule__ScopeSpecification__Group__0__Impl() throws RecognitionE // $ANTLR start "rule__ScopeSpecification__Group__1" - // InternalApplicationConfiguration.g:5459:1: rule__ScopeSpecification__Group__1 : rule__ScopeSpecification__Group__1__Impl rule__ScopeSpecification__Group__2 ; + // InternalApplicationConfiguration.g:5465:1: rule__ScopeSpecification__Group__1 : rule__ScopeSpecification__Group__1__Impl rule__ScopeSpecification__Group__2 ; public final void rule__ScopeSpecification__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5463:1: ( rule__ScopeSpecification__Group__1__Impl rule__ScopeSpecification__Group__2 ) - // InternalApplicationConfiguration.g:5464:2: rule__ScopeSpecification__Group__1__Impl rule__ScopeSpecification__Group__2 + // InternalApplicationConfiguration.g:5469:1: ( rule__ScopeSpecification__Group__1__Impl rule__ScopeSpecification__Group__2 ) + // InternalApplicationConfiguration.g:5470:2: rule__ScopeSpecification__Group__1__Impl rule__ScopeSpecification__Group__2 { pushFollow(FOLLOW_26); rule__ScopeSpecification__Group__1__Impl(); @@ -17304,20 +17331,20 @@ public final void rule__ScopeSpecification__Group__1() throws RecognitionExcepti // $ANTLR start "rule__ScopeSpecification__Group__1__Impl" - // InternalApplicationConfiguration.g:5471:1: rule__ScopeSpecification__Group__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:5477:1: rule__ScopeSpecification__Group__1__Impl : ( '{' ) ; public final void rule__ScopeSpecification__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5475:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:5476:1: ( '{' ) + // InternalApplicationConfiguration.g:5481:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:5482:1: ( '{' ) { - // InternalApplicationConfiguration.g:5476:1: ( '{' ) - // InternalApplicationConfiguration.g:5477:2: '{' + // InternalApplicationConfiguration.g:5482:1: ( '{' ) + // InternalApplicationConfiguration.g:5483:2: '{' { before(grammarAccess.getScopeSpecificationAccess().getLeftCurlyBracketKeyword_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getScopeSpecificationAccess().getLeftCurlyBracketKeyword_1()); } @@ -17341,14 +17368,14 @@ public final void rule__ScopeSpecification__Group__1__Impl() throws RecognitionE // $ANTLR start "rule__ScopeSpecification__Group__2" - // InternalApplicationConfiguration.g:5486:1: rule__ScopeSpecification__Group__2 : rule__ScopeSpecification__Group__2__Impl rule__ScopeSpecification__Group__3 ; + // InternalApplicationConfiguration.g:5492:1: rule__ScopeSpecification__Group__2 : rule__ScopeSpecification__Group__2__Impl rule__ScopeSpecification__Group__3 ; public final void rule__ScopeSpecification__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5490:1: ( rule__ScopeSpecification__Group__2__Impl rule__ScopeSpecification__Group__3 ) - // InternalApplicationConfiguration.g:5491:2: rule__ScopeSpecification__Group__2__Impl rule__ScopeSpecification__Group__3 + // InternalApplicationConfiguration.g:5496:1: ( rule__ScopeSpecification__Group__2__Impl rule__ScopeSpecification__Group__3 ) + // InternalApplicationConfiguration.g:5497:2: rule__ScopeSpecification__Group__2__Impl rule__ScopeSpecification__Group__3 { pushFollow(FOLLOW_26); rule__ScopeSpecification__Group__2__Impl(); @@ -17379,29 +17406,29 @@ public final void rule__ScopeSpecification__Group__2() throws RecognitionExcepti // $ANTLR start "rule__ScopeSpecification__Group__2__Impl" - // InternalApplicationConfiguration.g:5498:1: rule__ScopeSpecification__Group__2__Impl : ( ( rule__ScopeSpecification__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:5504:1: rule__ScopeSpecification__Group__2__Impl : ( ( rule__ScopeSpecification__Group_2__0 )? ) ; public final void rule__ScopeSpecification__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5502:1: ( ( ( rule__ScopeSpecification__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:5503:1: ( ( rule__ScopeSpecification__Group_2__0 )? ) + // InternalApplicationConfiguration.g:5508:1: ( ( ( rule__ScopeSpecification__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:5509:1: ( ( rule__ScopeSpecification__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:5503:1: ( ( rule__ScopeSpecification__Group_2__0 )? ) - // InternalApplicationConfiguration.g:5504:2: ( rule__ScopeSpecification__Group_2__0 )? + // InternalApplicationConfiguration.g:5509:1: ( ( rule__ScopeSpecification__Group_2__0 )? ) + // InternalApplicationConfiguration.g:5510:2: ( rule__ScopeSpecification__Group_2__0 )? { before(grammarAccess.getScopeSpecificationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:5505:2: ( rule__ScopeSpecification__Group_2__0 )? + // InternalApplicationConfiguration.g:5511:2: ( rule__ScopeSpecification__Group_2__0 )? int alt48=2; int LA48_0 = input.LA(1); - if ( (LA48_0==38) ) { + if ( (LA48_0==39) ) { alt48=1; } switch (alt48) { case 1 : - // InternalApplicationConfiguration.g:5505:3: rule__ScopeSpecification__Group_2__0 + // InternalApplicationConfiguration.g:5511:3: rule__ScopeSpecification__Group_2__0 { pushFollow(FOLLOW_2); rule__ScopeSpecification__Group_2__0(); @@ -17437,14 +17464,14 @@ public final void rule__ScopeSpecification__Group__2__Impl() throws RecognitionE // $ANTLR start "rule__ScopeSpecification__Group__3" - // InternalApplicationConfiguration.g:5513:1: rule__ScopeSpecification__Group__3 : rule__ScopeSpecification__Group__3__Impl ; + // InternalApplicationConfiguration.g:5519:1: rule__ScopeSpecification__Group__3 : rule__ScopeSpecification__Group__3__Impl ; public final void rule__ScopeSpecification__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5517:1: ( rule__ScopeSpecification__Group__3__Impl ) - // InternalApplicationConfiguration.g:5518:2: rule__ScopeSpecification__Group__3__Impl + // InternalApplicationConfiguration.g:5523:1: ( rule__ScopeSpecification__Group__3__Impl ) + // InternalApplicationConfiguration.g:5524:2: rule__ScopeSpecification__Group__3__Impl { pushFollow(FOLLOW_2); rule__ScopeSpecification__Group__3__Impl(); @@ -17470,20 +17497,20 @@ public final void rule__ScopeSpecification__Group__3() throws RecognitionExcepti // $ANTLR start "rule__ScopeSpecification__Group__3__Impl" - // InternalApplicationConfiguration.g:5524:1: rule__ScopeSpecification__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:5530:1: rule__ScopeSpecification__Group__3__Impl : ( '}' ) ; public final void rule__ScopeSpecification__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5528:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:5529:1: ( '}' ) + // InternalApplicationConfiguration.g:5534:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:5535:1: ( '}' ) { - // InternalApplicationConfiguration.g:5529:1: ( '}' ) - // InternalApplicationConfiguration.g:5530:2: '}' + // InternalApplicationConfiguration.g:5535:1: ( '}' ) + // InternalApplicationConfiguration.g:5536:2: '}' { before(grammarAccess.getScopeSpecificationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getScopeSpecificationAccess().getRightCurlyBracketKeyword_3()); } @@ -17507,14 +17534,14 @@ public final void rule__ScopeSpecification__Group__3__Impl() throws RecognitionE // $ANTLR start "rule__ScopeSpecification__Group_2__0" - // InternalApplicationConfiguration.g:5540:1: rule__ScopeSpecification__Group_2__0 : rule__ScopeSpecification__Group_2__0__Impl rule__ScopeSpecification__Group_2__1 ; + // InternalApplicationConfiguration.g:5546:1: rule__ScopeSpecification__Group_2__0 : rule__ScopeSpecification__Group_2__0__Impl rule__ScopeSpecification__Group_2__1 ; public final void rule__ScopeSpecification__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5544:1: ( rule__ScopeSpecification__Group_2__0__Impl rule__ScopeSpecification__Group_2__1 ) - // InternalApplicationConfiguration.g:5545:2: rule__ScopeSpecification__Group_2__0__Impl rule__ScopeSpecification__Group_2__1 + // InternalApplicationConfiguration.g:5550:1: ( rule__ScopeSpecification__Group_2__0__Impl rule__ScopeSpecification__Group_2__1 ) + // InternalApplicationConfiguration.g:5551:2: rule__ScopeSpecification__Group_2__0__Impl rule__ScopeSpecification__Group_2__1 { pushFollow(FOLLOW_23); rule__ScopeSpecification__Group_2__0__Impl(); @@ -17545,21 +17572,21 @@ public final void rule__ScopeSpecification__Group_2__0() throws RecognitionExcep // $ANTLR start "rule__ScopeSpecification__Group_2__0__Impl" - // InternalApplicationConfiguration.g:5552:1: rule__ScopeSpecification__Group_2__0__Impl : ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) ; + // InternalApplicationConfiguration.g:5558:1: rule__ScopeSpecification__Group_2__0__Impl : ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) ; public final void rule__ScopeSpecification__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5556:1: ( ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) ) - // InternalApplicationConfiguration.g:5557:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:5562:1: ( ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) ) + // InternalApplicationConfiguration.g:5563:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) { - // InternalApplicationConfiguration.g:5557:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) - // InternalApplicationConfiguration.g:5558:2: ( rule__ScopeSpecification__ScopesAssignment_2_0 ) + // InternalApplicationConfiguration.g:5563:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:5564:2: ( rule__ScopeSpecification__ScopesAssignment_2_0 ) { before(grammarAccess.getScopeSpecificationAccess().getScopesAssignment_2_0()); - // InternalApplicationConfiguration.g:5559:2: ( rule__ScopeSpecification__ScopesAssignment_2_0 ) - // InternalApplicationConfiguration.g:5559:3: rule__ScopeSpecification__ScopesAssignment_2_0 + // InternalApplicationConfiguration.g:5565:2: ( rule__ScopeSpecification__ScopesAssignment_2_0 ) + // InternalApplicationConfiguration.g:5565:3: rule__ScopeSpecification__ScopesAssignment_2_0 { pushFollow(FOLLOW_2); rule__ScopeSpecification__ScopesAssignment_2_0(); @@ -17592,14 +17619,14 @@ public final void rule__ScopeSpecification__Group_2__0__Impl() throws Recognitio // $ANTLR start "rule__ScopeSpecification__Group_2__1" - // InternalApplicationConfiguration.g:5567:1: rule__ScopeSpecification__Group_2__1 : rule__ScopeSpecification__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:5573:1: rule__ScopeSpecification__Group_2__1 : rule__ScopeSpecification__Group_2__1__Impl ; public final void rule__ScopeSpecification__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5571:1: ( rule__ScopeSpecification__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:5572:2: rule__ScopeSpecification__Group_2__1__Impl + // InternalApplicationConfiguration.g:5577:1: ( rule__ScopeSpecification__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:5578:2: rule__ScopeSpecification__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__ScopeSpecification__Group_2__1__Impl(); @@ -17625,33 +17652,33 @@ public final void rule__ScopeSpecification__Group_2__1() throws RecognitionExcep // $ANTLR start "rule__ScopeSpecification__Group_2__1__Impl" - // InternalApplicationConfiguration.g:5578:1: rule__ScopeSpecification__Group_2__1__Impl : ( ( rule__ScopeSpecification__Group_2_1__0 )* ) ; + // InternalApplicationConfiguration.g:5584:1: rule__ScopeSpecification__Group_2__1__Impl : ( ( rule__ScopeSpecification__Group_2_1__0 )* ) ; public final void rule__ScopeSpecification__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5582:1: ( ( ( rule__ScopeSpecification__Group_2_1__0 )* ) ) - // InternalApplicationConfiguration.g:5583:1: ( ( rule__ScopeSpecification__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:5588:1: ( ( ( rule__ScopeSpecification__Group_2_1__0 )* ) ) + // InternalApplicationConfiguration.g:5589:1: ( ( rule__ScopeSpecification__Group_2_1__0 )* ) { - // InternalApplicationConfiguration.g:5583:1: ( ( rule__ScopeSpecification__Group_2_1__0 )* ) - // InternalApplicationConfiguration.g:5584:2: ( rule__ScopeSpecification__Group_2_1__0 )* + // InternalApplicationConfiguration.g:5589:1: ( ( rule__ScopeSpecification__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:5590:2: ( rule__ScopeSpecification__Group_2_1__0 )* { before(grammarAccess.getScopeSpecificationAccess().getGroup_2_1()); - // InternalApplicationConfiguration.g:5585:2: ( rule__ScopeSpecification__Group_2_1__0 )* + // InternalApplicationConfiguration.g:5591:2: ( rule__ScopeSpecification__Group_2_1__0 )* loop49: do { int alt49=2; int LA49_0 = input.LA(1); - if ( (LA49_0==26) ) { + if ( (LA49_0==27) ) { alt49=1; } switch (alt49) { case 1 : - // InternalApplicationConfiguration.g:5585:3: rule__ScopeSpecification__Group_2_1__0 + // InternalApplicationConfiguration.g:5591:3: rule__ScopeSpecification__Group_2_1__0 { pushFollow(FOLLOW_16); rule__ScopeSpecification__Group_2_1__0(); @@ -17690,14 +17717,14 @@ public final void rule__ScopeSpecification__Group_2__1__Impl() throws Recognitio // $ANTLR start "rule__ScopeSpecification__Group_2_1__0" - // InternalApplicationConfiguration.g:5594:1: rule__ScopeSpecification__Group_2_1__0 : rule__ScopeSpecification__Group_2_1__0__Impl rule__ScopeSpecification__Group_2_1__1 ; + // InternalApplicationConfiguration.g:5600:1: rule__ScopeSpecification__Group_2_1__0 : rule__ScopeSpecification__Group_2_1__0__Impl rule__ScopeSpecification__Group_2_1__1 ; public final void rule__ScopeSpecification__Group_2_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5598:1: ( rule__ScopeSpecification__Group_2_1__0__Impl rule__ScopeSpecification__Group_2_1__1 ) - // InternalApplicationConfiguration.g:5599:2: rule__ScopeSpecification__Group_2_1__0__Impl rule__ScopeSpecification__Group_2_1__1 + // InternalApplicationConfiguration.g:5604:1: ( rule__ScopeSpecification__Group_2_1__0__Impl rule__ScopeSpecification__Group_2_1__1 ) + // InternalApplicationConfiguration.g:5605:2: rule__ScopeSpecification__Group_2_1__0__Impl rule__ScopeSpecification__Group_2_1__1 { pushFollow(FOLLOW_27); rule__ScopeSpecification__Group_2_1__0__Impl(); @@ -17728,20 +17755,20 @@ public final void rule__ScopeSpecification__Group_2_1__0() throws RecognitionExc // $ANTLR start "rule__ScopeSpecification__Group_2_1__0__Impl" - // InternalApplicationConfiguration.g:5606:1: rule__ScopeSpecification__Group_2_1__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:5612:1: rule__ScopeSpecification__Group_2_1__0__Impl : ( ',' ) ; public final void rule__ScopeSpecification__Group_2_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5610:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:5611:1: ( ',' ) + // InternalApplicationConfiguration.g:5616:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:5617:1: ( ',' ) { - // InternalApplicationConfiguration.g:5611:1: ( ',' ) - // InternalApplicationConfiguration.g:5612:2: ',' + // InternalApplicationConfiguration.g:5617:1: ( ',' ) + // InternalApplicationConfiguration.g:5618:2: ',' { before(grammarAccess.getScopeSpecificationAccess().getCommaKeyword_2_1_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getScopeSpecificationAccess().getCommaKeyword_2_1_0()); } @@ -17765,14 +17792,14 @@ public final void rule__ScopeSpecification__Group_2_1__0__Impl() throws Recognit // $ANTLR start "rule__ScopeSpecification__Group_2_1__1" - // InternalApplicationConfiguration.g:5621:1: rule__ScopeSpecification__Group_2_1__1 : rule__ScopeSpecification__Group_2_1__1__Impl ; + // InternalApplicationConfiguration.g:5627:1: rule__ScopeSpecification__Group_2_1__1 : rule__ScopeSpecification__Group_2_1__1__Impl ; public final void rule__ScopeSpecification__Group_2_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5625:1: ( rule__ScopeSpecification__Group_2_1__1__Impl ) - // InternalApplicationConfiguration.g:5626:2: rule__ScopeSpecification__Group_2_1__1__Impl + // InternalApplicationConfiguration.g:5631:1: ( rule__ScopeSpecification__Group_2_1__1__Impl ) + // InternalApplicationConfiguration.g:5632:2: rule__ScopeSpecification__Group_2_1__1__Impl { pushFollow(FOLLOW_2); rule__ScopeSpecification__Group_2_1__1__Impl(); @@ -17798,21 +17825,21 @@ public final void rule__ScopeSpecification__Group_2_1__1() throws RecognitionExc // $ANTLR start "rule__ScopeSpecification__Group_2_1__1__Impl" - // InternalApplicationConfiguration.g:5632:1: rule__ScopeSpecification__Group_2_1__1__Impl : ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) ; + // InternalApplicationConfiguration.g:5638:1: rule__ScopeSpecification__Group_2_1__1__Impl : ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) ; public final void rule__ScopeSpecification__Group_2_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5636:1: ( ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) ) - // InternalApplicationConfiguration.g:5637:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:5642:1: ( ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) ) + // InternalApplicationConfiguration.g:5643:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) { - // InternalApplicationConfiguration.g:5637:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) - // InternalApplicationConfiguration.g:5638:2: ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:5643:1: ( ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:5644:2: ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) { before(grammarAccess.getScopeSpecificationAccess().getScopesAssignment_2_1_1()); - // InternalApplicationConfiguration.g:5639:2: ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) - // InternalApplicationConfiguration.g:5639:3: rule__ScopeSpecification__ScopesAssignment_2_1_1 + // InternalApplicationConfiguration.g:5645:2: ( rule__ScopeSpecification__ScopesAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:5645:3: rule__ScopeSpecification__ScopesAssignment_2_1_1 { pushFollow(FOLLOW_2); rule__ScopeSpecification__ScopesAssignment_2_1_1(); @@ -17845,14 +17872,14 @@ public final void rule__ScopeSpecification__Group_2_1__1__Impl() throws Recognit // $ANTLR start "rule__ClassTypeScope__Group__0" - // InternalApplicationConfiguration.g:5648:1: rule__ClassTypeScope__Group__0 : rule__ClassTypeScope__Group__0__Impl rule__ClassTypeScope__Group__1 ; + // InternalApplicationConfiguration.g:5654:1: rule__ClassTypeScope__Group__0 : rule__ClassTypeScope__Group__0__Impl rule__ClassTypeScope__Group__1 ; public final void rule__ClassTypeScope__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5652:1: ( rule__ClassTypeScope__Group__0__Impl rule__ClassTypeScope__Group__1 ) - // InternalApplicationConfiguration.g:5653:2: rule__ClassTypeScope__Group__0__Impl rule__ClassTypeScope__Group__1 + // InternalApplicationConfiguration.g:5658:1: ( rule__ClassTypeScope__Group__0__Impl rule__ClassTypeScope__Group__1 ) + // InternalApplicationConfiguration.g:5659:2: rule__ClassTypeScope__Group__0__Impl rule__ClassTypeScope__Group__1 { pushFollow(FOLLOW_28); rule__ClassTypeScope__Group__0__Impl(); @@ -17883,20 +17910,20 @@ public final void rule__ClassTypeScope__Group__0() throws RecognitionException { // $ANTLR start "rule__ClassTypeScope__Group__0__Impl" - // InternalApplicationConfiguration.g:5660:1: rule__ClassTypeScope__Group__0__Impl : ( '#' ) ; + // InternalApplicationConfiguration.g:5666:1: rule__ClassTypeScope__Group__0__Impl : ( '#' ) ; public final void rule__ClassTypeScope__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5664:1: ( ( '#' ) ) - // InternalApplicationConfiguration.g:5665:1: ( '#' ) + // InternalApplicationConfiguration.g:5670:1: ( ( '#' ) ) + // InternalApplicationConfiguration.g:5671:1: ( '#' ) { - // InternalApplicationConfiguration.g:5665:1: ( '#' ) - // InternalApplicationConfiguration.g:5666:2: '#' + // InternalApplicationConfiguration.g:5671:1: ( '#' ) + // InternalApplicationConfiguration.g:5672:2: '#' { before(grammarAccess.getClassTypeScopeAccess().getNumberSignKeyword_0()); - match(input,38,FOLLOW_2); + match(input,39,FOLLOW_2); after(grammarAccess.getClassTypeScopeAccess().getNumberSignKeyword_0()); } @@ -17920,14 +17947,14 @@ public final void rule__ClassTypeScope__Group__0__Impl() throws RecognitionExcep // $ANTLR start "rule__ClassTypeScope__Group__1" - // InternalApplicationConfiguration.g:5675:1: rule__ClassTypeScope__Group__1 : rule__ClassTypeScope__Group__1__Impl rule__ClassTypeScope__Group__2 ; + // InternalApplicationConfiguration.g:5681:1: rule__ClassTypeScope__Group__1 : rule__ClassTypeScope__Group__1__Impl rule__ClassTypeScope__Group__2 ; public final void rule__ClassTypeScope__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5679:1: ( rule__ClassTypeScope__Group__1__Impl rule__ClassTypeScope__Group__2 ) - // InternalApplicationConfiguration.g:5680:2: rule__ClassTypeScope__Group__1__Impl rule__ClassTypeScope__Group__2 + // InternalApplicationConfiguration.g:5685:1: ( rule__ClassTypeScope__Group__1__Impl rule__ClassTypeScope__Group__2 ) + // InternalApplicationConfiguration.g:5686:2: rule__ClassTypeScope__Group__1__Impl rule__ClassTypeScope__Group__2 { pushFollow(FOLLOW_29); rule__ClassTypeScope__Group__1__Impl(); @@ -17958,21 +17985,21 @@ public final void rule__ClassTypeScope__Group__1() throws RecognitionException { // $ANTLR start "rule__ClassTypeScope__Group__1__Impl" - // InternalApplicationConfiguration.g:5687:1: rule__ClassTypeScope__Group__1__Impl : ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:5693:1: rule__ClassTypeScope__Group__1__Impl : ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) ; public final void rule__ClassTypeScope__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5691:1: ( ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:5692:1: ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:5697:1: ( ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:5698:1: ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) { - // InternalApplicationConfiguration.g:5692:1: ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) - // InternalApplicationConfiguration.g:5693:2: ( rule__ClassTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:5698:1: ( ( rule__ClassTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:5699:2: ( rule__ClassTypeScope__TypeAssignment_1 ) { before(grammarAccess.getClassTypeScopeAccess().getTypeAssignment_1()); - // InternalApplicationConfiguration.g:5694:2: ( rule__ClassTypeScope__TypeAssignment_1 ) - // InternalApplicationConfiguration.g:5694:3: rule__ClassTypeScope__TypeAssignment_1 + // InternalApplicationConfiguration.g:5700:2: ( rule__ClassTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:5700:3: rule__ClassTypeScope__TypeAssignment_1 { pushFollow(FOLLOW_2); rule__ClassTypeScope__TypeAssignment_1(); @@ -18005,14 +18032,14 @@ public final void rule__ClassTypeScope__Group__1__Impl() throws RecognitionExcep // $ANTLR start "rule__ClassTypeScope__Group__2" - // InternalApplicationConfiguration.g:5702:1: rule__ClassTypeScope__Group__2 : rule__ClassTypeScope__Group__2__Impl rule__ClassTypeScope__Group__3 ; + // InternalApplicationConfiguration.g:5708:1: rule__ClassTypeScope__Group__2 : rule__ClassTypeScope__Group__2__Impl rule__ClassTypeScope__Group__3 ; public final void rule__ClassTypeScope__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5706:1: ( rule__ClassTypeScope__Group__2__Impl rule__ClassTypeScope__Group__3 ) - // InternalApplicationConfiguration.g:5707:2: rule__ClassTypeScope__Group__2__Impl rule__ClassTypeScope__Group__3 + // InternalApplicationConfiguration.g:5712:1: ( rule__ClassTypeScope__Group__2__Impl rule__ClassTypeScope__Group__3 ) + // InternalApplicationConfiguration.g:5713:2: rule__ClassTypeScope__Group__2__Impl rule__ClassTypeScope__Group__3 { pushFollow(FOLLOW_30); rule__ClassTypeScope__Group__2__Impl(); @@ -18043,21 +18070,21 @@ public final void rule__ClassTypeScope__Group__2() throws RecognitionException { // $ANTLR start "rule__ClassTypeScope__Group__2__Impl" - // InternalApplicationConfiguration.g:5714:1: rule__ClassTypeScope__Group__2__Impl : ( ( rule__ClassTypeScope__Alternatives_2 ) ) ; + // InternalApplicationConfiguration.g:5720:1: rule__ClassTypeScope__Group__2__Impl : ( ( rule__ClassTypeScope__Alternatives_2 ) ) ; public final void rule__ClassTypeScope__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5718:1: ( ( ( rule__ClassTypeScope__Alternatives_2 ) ) ) - // InternalApplicationConfiguration.g:5719:1: ( ( rule__ClassTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:5724:1: ( ( ( rule__ClassTypeScope__Alternatives_2 ) ) ) + // InternalApplicationConfiguration.g:5725:1: ( ( rule__ClassTypeScope__Alternatives_2 ) ) { - // InternalApplicationConfiguration.g:5719:1: ( ( rule__ClassTypeScope__Alternatives_2 ) ) - // InternalApplicationConfiguration.g:5720:2: ( rule__ClassTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:5725:1: ( ( rule__ClassTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:5726:2: ( rule__ClassTypeScope__Alternatives_2 ) { before(grammarAccess.getClassTypeScopeAccess().getAlternatives_2()); - // InternalApplicationConfiguration.g:5721:2: ( rule__ClassTypeScope__Alternatives_2 ) - // InternalApplicationConfiguration.g:5721:3: rule__ClassTypeScope__Alternatives_2 + // InternalApplicationConfiguration.g:5727:2: ( rule__ClassTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:5727:3: rule__ClassTypeScope__Alternatives_2 { pushFollow(FOLLOW_2); rule__ClassTypeScope__Alternatives_2(); @@ -18090,14 +18117,14 @@ public final void rule__ClassTypeScope__Group__2__Impl() throws RecognitionExcep // $ANTLR start "rule__ClassTypeScope__Group__3" - // InternalApplicationConfiguration.g:5729:1: rule__ClassTypeScope__Group__3 : rule__ClassTypeScope__Group__3__Impl ; + // InternalApplicationConfiguration.g:5735:1: rule__ClassTypeScope__Group__3 : rule__ClassTypeScope__Group__3__Impl ; public final void rule__ClassTypeScope__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5733:1: ( rule__ClassTypeScope__Group__3__Impl ) - // InternalApplicationConfiguration.g:5734:2: rule__ClassTypeScope__Group__3__Impl + // InternalApplicationConfiguration.g:5739:1: ( rule__ClassTypeScope__Group__3__Impl ) + // InternalApplicationConfiguration.g:5740:2: rule__ClassTypeScope__Group__3__Impl { pushFollow(FOLLOW_2); rule__ClassTypeScope__Group__3__Impl(); @@ -18123,21 +18150,21 @@ public final void rule__ClassTypeScope__Group__3() throws RecognitionException { // $ANTLR start "rule__ClassTypeScope__Group__3__Impl" - // InternalApplicationConfiguration.g:5740:1: rule__ClassTypeScope__Group__3__Impl : ( ( rule__ClassTypeScope__Alternatives_3 ) ) ; + // InternalApplicationConfiguration.g:5746:1: rule__ClassTypeScope__Group__3__Impl : ( ( rule__ClassTypeScope__Alternatives_3 ) ) ; public final void rule__ClassTypeScope__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5744:1: ( ( ( rule__ClassTypeScope__Alternatives_3 ) ) ) - // InternalApplicationConfiguration.g:5745:1: ( ( rule__ClassTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:5750:1: ( ( ( rule__ClassTypeScope__Alternatives_3 ) ) ) + // InternalApplicationConfiguration.g:5751:1: ( ( rule__ClassTypeScope__Alternatives_3 ) ) { - // InternalApplicationConfiguration.g:5745:1: ( ( rule__ClassTypeScope__Alternatives_3 ) ) - // InternalApplicationConfiguration.g:5746:2: ( rule__ClassTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:5751:1: ( ( rule__ClassTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:5752:2: ( rule__ClassTypeScope__Alternatives_3 ) { before(grammarAccess.getClassTypeScopeAccess().getAlternatives_3()); - // InternalApplicationConfiguration.g:5747:2: ( rule__ClassTypeScope__Alternatives_3 ) - // InternalApplicationConfiguration.g:5747:3: rule__ClassTypeScope__Alternatives_3 + // InternalApplicationConfiguration.g:5753:2: ( rule__ClassTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:5753:3: rule__ClassTypeScope__Alternatives_3 { pushFollow(FOLLOW_2); rule__ClassTypeScope__Alternatives_3(); @@ -18170,14 +18197,14 @@ public final void rule__ClassTypeScope__Group__3__Impl() throws RecognitionExcep // $ANTLR start "rule__ObjectTypeScope__Group__0" - // InternalApplicationConfiguration.g:5756:1: rule__ObjectTypeScope__Group__0 : rule__ObjectTypeScope__Group__0__Impl rule__ObjectTypeScope__Group__1 ; + // InternalApplicationConfiguration.g:5762:1: rule__ObjectTypeScope__Group__0 : rule__ObjectTypeScope__Group__0__Impl rule__ObjectTypeScope__Group__1 ; public final void rule__ObjectTypeScope__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5760:1: ( rule__ObjectTypeScope__Group__0__Impl rule__ObjectTypeScope__Group__1 ) - // InternalApplicationConfiguration.g:5761:2: rule__ObjectTypeScope__Group__0__Impl rule__ObjectTypeScope__Group__1 + // InternalApplicationConfiguration.g:5766:1: ( rule__ObjectTypeScope__Group__0__Impl rule__ObjectTypeScope__Group__1 ) + // InternalApplicationConfiguration.g:5767:2: rule__ObjectTypeScope__Group__0__Impl rule__ObjectTypeScope__Group__1 { pushFollow(FOLLOW_31); rule__ObjectTypeScope__Group__0__Impl(); @@ -18208,20 +18235,20 @@ public final void rule__ObjectTypeScope__Group__0() throws RecognitionException // $ANTLR start "rule__ObjectTypeScope__Group__0__Impl" - // InternalApplicationConfiguration.g:5768:1: rule__ObjectTypeScope__Group__0__Impl : ( '#' ) ; + // InternalApplicationConfiguration.g:5774:1: rule__ObjectTypeScope__Group__0__Impl : ( '#' ) ; public final void rule__ObjectTypeScope__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5772:1: ( ( '#' ) ) - // InternalApplicationConfiguration.g:5773:1: ( '#' ) + // InternalApplicationConfiguration.g:5778:1: ( ( '#' ) ) + // InternalApplicationConfiguration.g:5779:1: ( '#' ) { - // InternalApplicationConfiguration.g:5773:1: ( '#' ) - // InternalApplicationConfiguration.g:5774:2: '#' + // InternalApplicationConfiguration.g:5779:1: ( '#' ) + // InternalApplicationConfiguration.g:5780:2: '#' { before(grammarAccess.getObjectTypeScopeAccess().getNumberSignKeyword_0()); - match(input,38,FOLLOW_2); + match(input,39,FOLLOW_2); after(grammarAccess.getObjectTypeScopeAccess().getNumberSignKeyword_0()); } @@ -18245,14 +18272,14 @@ public final void rule__ObjectTypeScope__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__ObjectTypeScope__Group__1" - // InternalApplicationConfiguration.g:5783:1: rule__ObjectTypeScope__Group__1 : rule__ObjectTypeScope__Group__1__Impl rule__ObjectTypeScope__Group__2 ; + // InternalApplicationConfiguration.g:5789:1: rule__ObjectTypeScope__Group__1 : rule__ObjectTypeScope__Group__1__Impl rule__ObjectTypeScope__Group__2 ; public final void rule__ObjectTypeScope__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5787:1: ( rule__ObjectTypeScope__Group__1__Impl rule__ObjectTypeScope__Group__2 ) - // InternalApplicationConfiguration.g:5788:2: rule__ObjectTypeScope__Group__1__Impl rule__ObjectTypeScope__Group__2 + // InternalApplicationConfiguration.g:5793:1: ( rule__ObjectTypeScope__Group__1__Impl rule__ObjectTypeScope__Group__2 ) + // InternalApplicationConfiguration.g:5794:2: rule__ObjectTypeScope__Group__1__Impl rule__ObjectTypeScope__Group__2 { pushFollow(FOLLOW_29); rule__ObjectTypeScope__Group__1__Impl(); @@ -18283,21 +18310,21 @@ public final void rule__ObjectTypeScope__Group__1() throws RecognitionException // $ANTLR start "rule__ObjectTypeScope__Group__1__Impl" - // InternalApplicationConfiguration.g:5795:1: rule__ObjectTypeScope__Group__1__Impl : ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:5801:1: rule__ObjectTypeScope__Group__1__Impl : ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) ; public final void rule__ObjectTypeScope__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5799:1: ( ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:5800:1: ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:5805:1: ( ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:5806:1: ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) { - // InternalApplicationConfiguration.g:5800:1: ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) - // InternalApplicationConfiguration.g:5801:2: ( rule__ObjectTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:5806:1: ( ( rule__ObjectTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:5807:2: ( rule__ObjectTypeScope__TypeAssignment_1 ) { before(grammarAccess.getObjectTypeScopeAccess().getTypeAssignment_1()); - // InternalApplicationConfiguration.g:5802:2: ( rule__ObjectTypeScope__TypeAssignment_1 ) - // InternalApplicationConfiguration.g:5802:3: rule__ObjectTypeScope__TypeAssignment_1 + // InternalApplicationConfiguration.g:5808:2: ( rule__ObjectTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:5808:3: rule__ObjectTypeScope__TypeAssignment_1 { pushFollow(FOLLOW_2); rule__ObjectTypeScope__TypeAssignment_1(); @@ -18330,14 +18357,14 @@ public final void rule__ObjectTypeScope__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__ObjectTypeScope__Group__2" - // InternalApplicationConfiguration.g:5810:1: rule__ObjectTypeScope__Group__2 : rule__ObjectTypeScope__Group__2__Impl rule__ObjectTypeScope__Group__3 ; + // InternalApplicationConfiguration.g:5816:1: rule__ObjectTypeScope__Group__2 : rule__ObjectTypeScope__Group__2__Impl rule__ObjectTypeScope__Group__3 ; public final void rule__ObjectTypeScope__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5814:1: ( rule__ObjectTypeScope__Group__2__Impl rule__ObjectTypeScope__Group__3 ) - // InternalApplicationConfiguration.g:5815:2: rule__ObjectTypeScope__Group__2__Impl rule__ObjectTypeScope__Group__3 + // InternalApplicationConfiguration.g:5820:1: ( rule__ObjectTypeScope__Group__2__Impl rule__ObjectTypeScope__Group__3 ) + // InternalApplicationConfiguration.g:5821:2: rule__ObjectTypeScope__Group__2__Impl rule__ObjectTypeScope__Group__3 { pushFollow(FOLLOW_30); rule__ObjectTypeScope__Group__2__Impl(); @@ -18368,21 +18395,21 @@ public final void rule__ObjectTypeScope__Group__2() throws RecognitionException // $ANTLR start "rule__ObjectTypeScope__Group__2__Impl" - // InternalApplicationConfiguration.g:5822:1: rule__ObjectTypeScope__Group__2__Impl : ( ( rule__ObjectTypeScope__Alternatives_2 ) ) ; + // InternalApplicationConfiguration.g:5828:1: rule__ObjectTypeScope__Group__2__Impl : ( ( rule__ObjectTypeScope__Alternatives_2 ) ) ; public final void rule__ObjectTypeScope__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5826:1: ( ( ( rule__ObjectTypeScope__Alternatives_2 ) ) ) - // InternalApplicationConfiguration.g:5827:1: ( ( rule__ObjectTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:5832:1: ( ( ( rule__ObjectTypeScope__Alternatives_2 ) ) ) + // InternalApplicationConfiguration.g:5833:1: ( ( rule__ObjectTypeScope__Alternatives_2 ) ) { - // InternalApplicationConfiguration.g:5827:1: ( ( rule__ObjectTypeScope__Alternatives_2 ) ) - // InternalApplicationConfiguration.g:5828:2: ( rule__ObjectTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:5833:1: ( ( rule__ObjectTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:5834:2: ( rule__ObjectTypeScope__Alternatives_2 ) { before(grammarAccess.getObjectTypeScopeAccess().getAlternatives_2()); - // InternalApplicationConfiguration.g:5829:2: ( rule__ObjectTypeScope__Alternatives_2 ) - // InternalApplicationConfiguration.g:5829:3: rule__ObjectTypeScope__Alternatives_2 + // InternalApplicationConfiguration.g:5835:2: ( rule__ObjectTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:5835:3: rule__ObjectTypeScope__Alternatives_2 { pushFollow(FOLLOW_2); rule__ObjectTypeScope__Alternatives_2(); @@ -18415,14 +18442,14 @@ public final void rule__ObjectTypeScope__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__ObjectTypeScope__Group__3" - // InternalApplicationConfiguration.g:5837:1: rule__ObjectTypeScope__Group__3 : rule__ObjectTypeScope__Group__3__Impl ; + // InternalApplicationConfiguration.g:5843:1: rule__ObjectTypeScope__Group__3 : rule__ObjectTypeScope__Group__3__Impl ; public final void rule__ObjectTypeScope__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5841:1: ( rule__ObjectTypeScope__Group__3__Impl ) - // InternalApplicationConfiguration.g:5842:2: rule__ObjectTypeScope__Group__3__Impl + // InternalApplicationConfiguration.g:5847:1: ( rule__ObjectTypeScope__Group__3__Impl ) + // InternalApplicationConfiguration.g:5848:2: rule__ObjectTypeScope__Group__3__Impl { pushFollow(FOLLOW_2); rule__ObjectTypeScope__Group__3__Impl(); @@ -18448,21 +18475,21 @@ public final void rule__ObjectTypeScope__Group__3() throws RecognitionException // $ANTLR start "rule__ObjectTypeScope__Group__3__Impl" - // InternalApplicationConfiguration.g:5848:1: rule__ObjectTypeScope__Group__3__Impl : ( ( rule__ObjectTypeScope__Alternatives_3 ) ) ; + // InternalApplicationConfiguration.g:5854:1: rule__ObjectTypeScope__Group__3__Impl : ( ( rule__ObjectTypeScope__Alternatives_3 ) ) ; public final void rule__ObjectTypeScope__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5852:1: ( ( ( rule__ObjectTypeScope__Alternatives_3 ) ) ) - // InternalApplicationConfiguration.g:5853:1: ( ( rule__ObjectTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:5858:1: ( ( ( rule__ObjectTypeScope__Alternatives_3 ) ) ) + // InternalApplicationConfiguration.g:5859:1: ( ( rule__ObjectTypeScope__Alternatives_3 ) ) { - // InternalApplicationConfiguration.g:5853:1: ( ( rule__ObjectTypeScope__Alternatives_3 ) ) - // InternalApplicationConfiguration.g:5854:2: ( rule__ObjectTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:5859:1: ( ( rule__ObjectTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:5860:2: ( rule__ObjectTypeScope__Alternatives_3 ) { before(grammarAccess.getObjectTypeScopeAccess().getAlternatives_3()); - // InternalApplicationConfiguration.g:5855:2: ( rule__ObjectTypeScope__Alternatives_3 ) - // InternalApplicationConfiguration.g:5855:3: rule__ObjectTypeScope__Alternatives_3 + // InternalApplicationConfiguration.g:5861:2: ( rule__ObjectTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:5861:3: rule__ObjectTypeScope__Alternatives_3 { pushFollow(FOLLOW_2); rule__ObjectTypeScope__Alternatives_3(); @@ -18495,14 +18522,14 @@ public final void rule__ObjectTypeScope__Group__3__Impl() throws RecognitionExce // $ANTLR start "rule__IntegerTypeScope__Group__0" - // InternalApplicationConfiguration.g:5864:1: rule__IntegerTypeScope__Group__0 : rule__IntegerTypeScope__Group__0__Impl rule__IntegerTypeScope__Group__1 ; + // InternalApplicationConfiguration.g:5870:1: rule__IntegerTypeScope__Group__0 : rule__IntegerTypeScope__Group__0__Impl rule__IntegerTypeScope__Group__1 ; public final void rule__IntegerTypeScope__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5868:1: ( rule__IntegerTypeScope__Group__0__Impl rule__IntegerTypeScope__Group__1 ) - // InternalApplicationConfiguration.g:5869:2: rule__IntegerTypeScope__Group__0__Impl rule__IntegerTypeScope__Group__1 + // InternalApplicationConfiguration.g:5874:1: ( rule__IntegerTypeScope__Group__0__Impl rule__IntegerTypeScope__Group__1 ) + // InternalApplicationConfiguration.g:5875:2: rule__IntegerTypeScope__Group__0__Impl rule__IntegerTypeScope__Group__1 { pushFollow(FOLLOW_32); rule__IntegerTypeScope__Group__0__Impl(); @@ -18533,20 +18560,20 @@ public final void rule__IntegerTypeScope__Group__0() throws RecognitionException // $ANTLR start "rule__IntegerTypeScope__Group__0__Impl" - // InternalApplicationConfiguration.g:5876:1: rule__IntegerTypeScope__Group__0__Impl : ( '#' ) ; + // InternalApplicationConfiguration.g:5882:1: rule__IntegerTypeScope__Group__0__Impl : ( '#' ) ; public final void rule__IntegerTypeScope__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5880:1: ( ( '#' ) ) - // InternalApplicationConfiguration.g:5881:1: ( '#' ) + // InternalApplicationConfiguration.g:5886:1: ( ( '#' ) ) + // InternalApplicationConfiguration.g:5887:1: ( '#' ) { - // InternalApplicationConfiguration.g:5881:1: ( '#' ) - // InternalApplicationConfiguration.g:5882:2: '#' + // InternalApplicationConfiguration.g:5887:1: ( '#' ) + // InternalApplicationConfiguration.g:5888:2: '#' { before(grammarAccess.getIntegerTypeScopeAccess().getNumberSignKeyword_0()); - match(input,38,FOLLOW_2); + match(input,39,FOLLOW_2); after(grammarAccess.getIntegerTypeScopeAccess().getNumberSignKeyword_0()); } @@ -18570,14 +18597,14 @@ public final void rule__IntegerTypeScope__Group__0__Impl() throws RecognitionExc // $ANTLR start "rule__IntegerTypeScope__Group__1" - // InternalApplicationConfiguration.g:5891:1: rule__IntegerTypeScope__Group__1 : rule__IntegerTypeScope__Group__1__Impl rule__IntegerTypeScope__Group__2 ; + // InternalApplicationConfiguration.g:5897:1: rule__IntegerTypeScope__Group__1 : rule__IntegerTypeScope__Group__1__Impl rule__IntegerTypeScope__Group__2 ; public final void rule__IntegerTypeScope__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5895:1: ( rule__IntegerTypeScope__Group__1__Impl rule__IntegerTypeScope__Group__2 ) - // InternalApplicationConfiguration.g:5896:2: rule__IntegerTypeScope__Group__1__Impl rule__IntegerTypeScope__Group__2 + // InternalApplicationConfiguration.g:5901:1: ( rule__IntegerTypeScope__Group__1__Impl rule__IntegerTypeScope__Group__2 ) + // InternalApplicationConfiguration.g:5902:2: rule__IntegerTypeScope__Group__1__Impl rule__IntegerTypeScope__Group__2 { pushFollow(FOLLOW_29); rule__IntegerTypeScope__Group__1__Impl(); @@ -18608,21 +18635,21 @@ public final void rule__IntegerTypeScope__Group__1() throws RecognitionException // $ANTLR start "rule__IntegerTypeScope__Group__1__Impl" - // InternalApplicationConfiguration.g:5903:1: rule__IntegerTypeScope__Group__1__Impl : ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:5909:1: rule__IntegerTypeScope__Group__1__Impl : ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) ; public final void rule__IntegerTypeScope__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5907:1: ( ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:5908:1: ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:5913:1: ( ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:5914:1: ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) { - // InternalApplicationConfiguration.g:5908:1: ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) - // InternalApplicationConfiguration.g:5909:2: ( rule__IntegerTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:5914:1: ( ( rule__IntegerTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:5915:2: ( rule__IntegerTypeScope__TypeAssignment_1 ) { before(grammarAccess.getIntegerTypeScopeAccess().getTypeAssignment_1()); - // InternalApplicationConfiguration.g:5910:2: ( rule__IntegerTypeScope__TypeAssignment_1 ) - // InternalApplicationConfiguration.g:5910:3: rule__IntegerTypeScope__TypeAssignment_1 + // InternalApplicationConfiguration.g:5916:2: ( rule__IntegerTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:5916:3: rule__IntegerTypeScope__TypeAssignment_1 { pushFollow(FOLLOW_2); rule__IntegerTypeScope__TypeAssignment_1(); @@ -18655,14 +18682,14 @@ public final void rule__IntegerTypeScope__Group__1__Impl() throws RecognitionExc // $ANTLR start "rule__IntegerTypeScope__Group__2" - // InternalApplicationConfiguration.g:5918:1: rule__IntegerTypeScope__Group__2 : rule__IntegerTypeScope__Group__2__Impl rule__IntegerTypeScope__Group__3 ; + // InternalApplicationConfiguration.g:5924:1: rule__IntegerTypeScope__Group__2 : rule__IntegerTypeScope__Group__2__Impl rule__IntegerTypeScope__Group__3 ; public final void rule__IntegerTypeScope__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5922:1: ( rule__IntegerTypeScope__Group__2__Impl rule__IntegerTypeScope__Group__3 ) - // InternalApplicationConfiguration.g:5923:2: rule__IntegerTypeScope__Group__2__Impl rule__IntegerTypeScope__Group__3 + // InternalApplicationConfiguration.g:5928:1: ( rule__IntegerTypeScope__Group__2__Impl rule__IntegerTypeScope__Group__3 ) + // InternalApplicationConfiguration.g:5929:2: rule__IntegerTypeScope__Group__2__Impl rule__IntegerTypeScope__Group__3 { pushFollow(FOLLOW_33); rule__IntegerTypeScope__Group__2__Impl(); @@ -18693,21 +18720,21 @@ public final void rule__IntegerTypeScope__Group__2() throws RecognitionException // $ANTLR start "rule__IntegerTypeScope__Group__2__Impl" - // InternalApplicationConfiguration.g:5930:1: rule__IntegerTypeScope__Group__2__Impl : ( ( rule__IntegerTypeScope__Alternatives_2 ) ) ; + // InternalApplicationConfiguration.g:5936:1: rule__IntegerTypeScope__Group__2__Impl : ( ( rule__IntegerTypeScope__Alternatives_2 ) ) ; public final void rule__IntegerTypeScope__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5934:1: ( ( ( rule__IntegerTypeScope__Alternatives_2 ) ) ) - // InternalApplicationConfiguration.g:5935:1: ( ( rule__IntegerTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:5940:1: ( ( ( rule__IntegerTypeScope__Alternatives_2 ) ) ) + // InternalApplicationConfiguration.g:5941:1: ( ( rule__IntegerTypeScope__Alternatives_2 ) ) { - // InternalApplicationConfiguration.g:5935:1: ( ( rule__IntegerTypeScope__Alternatives_2 ) ) - // InternalApplicationConfiguration.g:5936:2: ( rule__IntegerTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:5941:1: ( ( rule__IntegerTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:5942:2: ( rule__IntegerTypeScope__Alternatives_2 ) { before(grammarAccess.getIntegerTypeScopeAccess().getAlternatives_2()); - // InternalApplicationConfiguration.g:5937:2: ( rule__IntegerTypeScope__Alternatives_2 ) - // InternalApplicationConfiguration.g:5937:3: rule__IntegerTypeScope__Alternatives_2 + // InternalApplicationConfiguration.g:5943:2: ( rule__IntegerTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:5943:3: rule__IntegerTypeScope__Alternatives_2 { pushFollow(FOLLOW_2); rule__IntegerTypeScope__Alternatives_2(); @@ -18740,14 +18767,14 @@ public final void rule__IntegerTypeScope__Group__2__Impl() throws RecognitionExc // $ANTLR start "rule__IntegerTypeScope__Group__3" - // InternalApplicationConfiguration.g:5945:1: rule__IntegerTypeScope__Group__3 : rule__IntegerTypeScope__Group__3__Impl ; + // InternalApplicationConfiguration.g:5951:1: rule__IntegerTypeScope__Group__3 : rule__IntegerTypeScope__Group__3__Impl ; public final void rule__IntegerTypeScope__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5949:1: ( rule__IntegerTypeScope__Group__3__Impl ) - // InternalApplicationConfiguration.g:5950:2: rule__IntegerTypeScope__Group__3__Impl + // InternalApplicationConfiguration.g:5955:1: ( rule__IntegerTypeScope__Group__3__Impl ) + // InternalApplicationConfiguration.g:5956:2: rule__IntegerTypeScope__Group__3__Impl { pushFollow(FOLLOW_2); rule__IntegerTypeScope__Group__3__Impl(); @@ -18773,21 +18800,21 @@ public final void rule__IntegerTypeScope__Group__3() throws RecognitionException // $ANTLR start "rule__IntegerTypeScope__Group__3__Impl" - // InternalApplicationConfiguration.g:5956:1: rule__IntegerTypeScope__Group__3__Impl : ( ( rule__IntegerTypeScope__Alternatives_3 ) ) ; + // InternalApplicationConfiguration.g:5962:1: rule__IntegerTypeScope__Group__3__Impl : ( ( rule__IntegerTypeScope__Alternatives_3 ) ) ; public final void rule__IntegerTypeScope__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5960:1: ( ( ( rule__IntegerTypeScope__Alternatives_3 ) ) ) - // InternalApplicationConfiguration.g:5961:1: ( ( rule__IntegerTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:5966:1: ( ( ( rule__IntegerTypeScope__Alternatives_3 ) ) ) + // InternalApplicationConfiguration.g:5967:1: ( ( rule__IntegerTypeScope__Alternatives_3 ) ) { - // InternalApplicationConfiguration.g:5961:1: ( ( rule__IntegerTypeScope__Alternatives_3 ) ) - // InternalApplicationConfiguration.g:5962:2: ( rule__IntegerTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:5967:1: ( ( rule__IntegerTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:5968:2: ( rule__IntegerTypeScope__Alternatives_3 ) { before(grammarAccess.getIntegerTypeScopeAccess().getAlternatives_3()); - // InternalApplicationConfiguration.g:5963:2: ( rule__IntegerTypeScope__Alternatives_3 ) - // InternalApplicationConfiguration.g:5963:3: rule__IntegerTypeScope__Alternatives_3 + // InternalApplicationConfiguration.g:5969:2: ( rule__IntegerTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:5969:3: rule__IntegerTypeScope__Alternatives_3 { pushFollow(FOLLOW_2); rule__IntegerTypeScope__Alternatives_3(); @@ -18820,14 +18847,14 @@ public final void rule__IntegerTypeScope__Group__3__Impl() throws RecognitionExc // $ANTLR start "rule__RealTypeScope__Group__0" - // InternalApplicationConfiguration.g:5972:1: rule__RealTypeScope__Group__0 : rule__RealTypeScope__Group__0__Impl rule__RealTypeScope__Group__1 ; + // InternalApplicationConfiguration.g:5978:1: rule__RealTypeScope__Group__0 : rule__RealTypeScope__Group__0__Impl rule__RealTypeScope__Group__1 ; public final void rule__RealTypeScope__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5976:1: ( rule__RealTypeScope__Group__0__Impl rule__RealTypeScope__Group__1 ) - // InternalApplicationConfiguration.g:5977:2: rule__RealTypeScope__Group__0__Impl rule__RealTypeScope__Group__1 + // InternalApplicationConfiguration.g:5982:1: ( rule__RealTypeScope__Group__0__Impl rule__RealTypeScope__Group__1 ) + // InternalApplicationConfiguration.g:5983:2: rule__RealTypeScope__Group__0__Impl rule__RealTypeScope__Group__1 { pushFollow(FOLLOW_34); rule__RealTypeScope__Group__0__Impl(); @@ -18858,20 +18885,20 @@ public final void rule__RealTypeScope__Group__0() throws RecognitionException { // $ANTLR start "rule__RealTypeScope__Group__0__Impl" - // InternalApplicationConfiguration.g:5984:1: rule__RealTypeScope__Group__0__Impl : ( '#' ) ; + // InternalApplicationConfiguration.g:5990:1: rule__RealTypeScope__Group__0__Impl : ( '#' ) ; public final void rule__RealTypeScope__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:5988:1: ( ( '#' ) ) - // InternalApplicationConfiguration.g:5989:1: ( '#' ) + // InternalApplicationConfiguration.g:5994:1: ( ( '#' ) ) + // InternalApplicationConfiguration.g:5995:1: ( '#' ) { - // InternalApplicationConfiguration.g:5989:1: ( '#' ) - // InternalApplicationConfiguration.g:5990:2: '#' + // InternalApplicationConfiguration.g:5995:1: ( '#' ) + // InternalApplicationConfiguration.g:5996:2: '#' { before(grammarAccess.getRealTypeScopeAccess().getNumberSignKeyword_0()); - match(input,38,FOLLOW_2); + match(input,39,FOLLOW_2); after(grammarAccess.getRealTypeScopeAccess().getNumberSignKeyword_0()); } @@ -18895,14 +18922,14 @@ public final void rule__RealTypeScope__Group__0__Impl() throws RecognitionExcept // $ANTLR start "rule__RealTypeScope__Group__1" - // InternalApplicationConfiguration.g:5999:1: rule__RealTypeScope__Group__1 : rule__RealTypeScope__Group__1__Impl rule__RealTypeScope__Group__2 ; + // InternalApplicationConfiguration.g:6005:1: rule__RealTypeScope__Group__1 : rule__RealTypeScope__Group__1__Impl rule__RealTypeScope__Group__2 ; public final void rule__RealTypeScope__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6003:1: ( rule__RealTypeScope__Group__1__Impl rule__RealTypeScope__Group__2 ) - // InternalApplicationConfiguration.g:6004:2: rule__RealTypeScope__Group__1__Impl rule__RealTypeScope__Group__2 + // InternalApplicationConfiguration.g:6009:1: ( rule__RealTypeScope__Group__1__Impl rule__RealTypeScope__Group__2 ) + // InternalApplicationConfiguration.g:6010:2: rule__RealTypeScope__Group__1__Impl rule__RealTypeScope__Group__2 { pushFollow(FOLLOW_29); rule__RealTypeScope__Group__1__Impl(); @@ -18933,21 +18960,21 @@ public final void rule__RealTypeScope__Group__1() throws RecognitionException { // $ANTLR start "rule__RealTypeScope__Group__1__Impl" - // InternalApplicationConfiguration.g:6011:1: rule__RealTypeScope__Group__1__Impl : ( ( rule__RealTypeScope__TypeAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:6017:1: rule__RealTypeScope__Group__1__Impl : ( ( rule__RealTypeScope__TypeAssignment_1 ) ) ; public final void rule__RealTypeScope__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6015:1: ( ( ( rule__RealTypeScope__TypeAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:6016:1: ( ( rule__RealTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:6021:1: ( ( ( rule__RealTypeScope__TypeAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:6022:1: ( ( rule__RealTypeScope__TypeAssignment_1 ) ) { - // InternalApplicationConfiguration.g:6016:1: ( ( rule__RealTypeScope__TypeAssignment_1 ) ) - // InternalApplicationConfiguration.g:6017:2: ( rule__RealTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:6022:1: ( ( rule__RealTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:6023:2: ( rule__RealTypeScope__TypeAssignment_1 ) { before(grammarAccess.getRealTypeScopeAccess().getTypeAssignment_1()); - // InternalApplicationConfiguration.g:6018:2: ( rule__RealTypeScope__TypeAssignment_1 ) - // InternalApplicationConfiguration.g:6018:3: rule__RealTypeScope__TypeAssignment_1 + // InternalApplicationConfiguration.g:6024:2: ( rule__RealTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:6024:3: rule__RealTypeScope__TypeAssignment_1 { pushFollow(FOLLOW_2); rule__RealTypeScope__TypeAssignment_1(); @@ -18980,14 +19007,14 @@ public final void rule__RealTypeScope__Group__1__Impl() throws RecognitionExcept // $ANTLR start "rule__RealTypeScope__Group__2" - // InternalApplicationConfiguration.g:6026:1: rule__RealTypeScope__Group__2 : rule__RealTypeScope__Group__2__Impl rule__RealTypeScope__Group__3 ; + // InternalApplicationConfiguration.g:6032:1: rule__RealTypeScope__Group__2 : rule__RealTypeScope__Group__2__Impl rule__RealTypeScope__Group__3 ; public final void rule__RealTypeScope__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6030:1: ( rule__RealTypeScope__Group__2__Impl rule__RealTypeScope__Group__3 ) - // InternalApplicationConfiguration.g:6031:2: rule__RealTypeScope__Group__2__Impl rule__RealTypeScope__Group__3 + // InternalApplicationConfiguration.g:6036:1: ( rule__RealTypeScope__Group__2__Impl rule__RealTypeScope__Group__3 ) + // InternalApplicationConfiguration.g:6037:2: rule__RealTypeScope__Group__2__Impl rule__RealTypeScope__Group__3 { pushFollow(FOLLOW_33); rule__RealTypeScope__Group__2__Impl(); @@ -19018,21 +19045,21 @@ public final void rule__RealTypeScope__Group__2() throws RecognitionException { // $ANTLR start "rule__RealTypeScope__Group__2__Impl" - // InternalApplicationConfiguration.g:6038:1: rule__RealTypeScope__Group__2__Impl : ( ( rule__RealTypeScope__Alternatives_2 ) ) ; + // InternalApplicationConfiguration.g:6044:1: rule__RealTypeScope__Group__2__Impl : ( ( rule__RealTypeScope__Alternatives_2 ) ) ; public final void rule__RealTypeScope__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6042:1: ( ( ( rule__RealTypeScope__Alternatives_2 ) ) ) - // InternalApplicationConfiguration.g:6043:1: ( ( rule__RealTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:6048:1: ( ( ( rule__RealTypeScope__Alternatives_2 ) ) ) + // InternalApplicationConfiguration.g:6049:1: ( ( rule__RealTypeScope__Alternatives_2 ) ) { - // InternalApplicationConfiguration.g:6043:1: ( ( rule__RealTypeScope__Alternatives_2 ) ) - // InternalApplicationConfiguration.g:6044:2: ( rule__RealTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:6049:1: ( ( rule__RealTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:6050:2: ( rule__RealTypeScope__Alternatives_2 ) { before(grammarAccess.getRealTypeScopeAccess().getAlternatives_2()); - // InternalApplicationConfiguration.g:6045:2: ( rule__RealTypeScope__Alternatives_2 ) - // InternalApplicationConfiguration.g:6045:3: rule__RealTypeScope__Alternatives_2 + // InternalApplicationConfiguration.g:6051:2: ( rule__RealTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:6051:3: rule__RealTypeScope__Alternatives_2 { pushFollow(FOLLOW_2); rule__RealTypeScope__Alternatives_2(); @@ -19065,14 +19092,14 @@ public final void rule__RealTypeScope__Group__2__Impl() throws RecognitionExcept // $ANTLR start "rule__RealTypeScope__Group__3" - // InternalApplicationConfiguration.g:6053:1: rule__RealTypeScope__Group__3 : rule__RealTypeScope__Group__3__Impl ; + // InternalApplicationConfiguration.g:6059:1: rule__RealTypeScope__Group__3 : rule__RealTypeScope__Group__3__Impl ; public final void rule__RealTypeScope__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6057:1: ( rule__RealTypeScope__Group__3__Impl ) - // InternalApplicationConfiguration.g:6058:2: rule__RealTypeScope__Group__3__Impl + // InternalApplicationConfiguration.g:6063:1: ( rule__RealTypeScope__Group__3__Impl ) + // InternalApplicationConfiguration.g:6064:2: rule__RealTypeScope__Group__3__Impl { pushFollow(FOLLOW_2); rule__RealTypeScope__Group__3__Impl(); @@ -19098,21 +19125,21 @@ public final void rule__RealTypeScope__Group__3() throws RecognitionException { // $ANTLR start "rule__RealTypeScope__Group__3__Impl" - // InternalApplicationConfiguration.g:6064:1: rule__RealTypeScope__Group__3__Impl : ( ( rule__RealTypeScope__Alternatives_3 ) ) ; + // InternalApplicationConfiguration.g:6070:1: rule__RealTypeScope__Group__3__Impl : ( ( rule__RealTypeScope__Alternatives_3 ) ) ; public final void rule__RealTypeScope__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6068:1: ( ( ( rule__RealTypeScope__Alternatives_3 ) ) ) - // InternalApplicationConfiguration.g:6069:1: ( ( rule__RealTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:6074:1: ( ( ( rule__RealTypeScope__Alternatives_3 ) ) ) + // InternalApplicationConfiguration.g:6075:1: ( ( rule__RealTypeScope__Alternatives_3 ) ) { - // InternalApplicationConfiguration.g:6069:1: ( ( rule__RealTypeScope__Alternatives_3 ) ) - // InternalApplicationConfiguration.g:6070:2: ( rule__RealTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:6075:1: ( ( rule__RealTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:6076:2: ( rule__RealTypeScope__Alternatives_3 ) { before(grammarAccess.getRealTypeScopeAccess().getAlternatives_3()); - // InternalApplicationConfiguration.g:6071:2: ( rule__RealTypeScope__Alternatives_3 ) - // InternalApplicationConfiguration.g:6071:3: rule__RealTypeScope__Alternatives_3 + // InternalApplicationConfiguration.g:6077:2: ( rule__RealTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:6077:3: rule__RealTypeScope__Alternatives_3 { pushFollow(FOLLOW_2); rule__RealTypeScope__Alternatives_3(); @@ -19145,14 +19172,14 @@ public final void rule__RealTypeScope__Group__3__Impl() throws RecognitionExcept // $ANTLR start "rule__StringTypeScope__Group__0" - // InternalApplicationConfiguration.g:6080:1: rule__StringTypeScope__Group__0 : rule__StringTypeScope__Group__0__Impl rule__StringTypeScope__Group__1 ; + // InternalApplicationConfiguration.g:6086:1: rule__StringTypeScope__Group__0 : rule__StringTypeScope__Group__0__Impl rule__StringTypeScope__Group__1 ; public final void rule__StringTypeScope__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6084:1: ( rule__StringTypeScope__Group__0__Impl rule__StringTypeScope__Group__1 ) - // InternalApplicationConfiguration.g:6085:2: rule__StringTypeScope__Group__0__Impl rule__StringTypeScope__Group__1 + // InternalApplicationConfiguration.g:6090:1: ( rule__StringTypeScope__Group__0__Impl rule__StringTypeScope__Group__1 ) + // InternalApplicationConfiguration.g:6091:2: rule__StringTypeScope__Group__0__Impl rule__StringTypeScope__Group__1 { pushFollow(FOLLOW_35); rule__StringTypeScope__Group__0__Impl(); @@ -19183,20 +19210,20 @@ public final void rule__StringTypeScope__Group__0() throws RecognitionException // $ANTLR start "rule__StringTypeScope__Group__0__Impl" - // InternalApplicationConfiguration.g:6092:1: rule__StringTypeScope__Group__0__Impl : ( '#' ) ; + // InternalApplicationConfiguration.g:6098:1: rule__StringTypeScope__Group__0__Impl : ( '#' ) ; public final void rule__StringTypeScope__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6096:1: ( ( '#' ) ) - // InternalApplicationConfiguration.g:6097:1: ( '#' ) + // InternalApplicationConfiguration.g:6102:1: ( ( '#' ) ) + // InternalApplicationConfiguration.g:6103:1: ( '#' ) { - // InternalApplicationConfiguration.g:6097:1: ( '#' ) - // InternalApplicationConfiguration.g:6098:2: '#' + // InternalApplicationConfiguration.g:6103:1: ( '#' ) + // InternalApplicationConfiguration.g:6104:2: '#' { before(grammarAccess.getStringTypeScopeAccess().getNumberSignKeyword_0()); - match(input,38,FOLLOW_2); + match(input,39,FOLLOW_2); after(grammarAccess.getStringTypeScopeAccess().getNumberSignKeyword_0()); } @@ -19220,14 +19247,14 @@ public final void rule__StringTypeScope__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__StringTypeScope__Group__1" - // InternalApplicationConfiguration.g:6107:1: rule__StringTypeScope__Group__1 : rule__StringTypeScope__Group__1__Impl rule__StringTypeScope__Group__2 ; + // InternalApplicationConfiguration.g:6113:1: rule__StringTypeScope__Group__1 : rule__StringTypeScope__Group__1__Impl rule__StringTypeScope__Group__2 ; public final void rule__StringTypeScope__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6111:1: ( rule__StringTypeScope__Group__1__Impl rule__StringTypeScope__Group__2 ) - // InternalApplicationConfiguration.g:6112:2: rule__StringTypeScope__Group__1__Impl rule__StringTypeScope__Group__2 + // InternalApplicationConfiguration.g:6117:1: ( rule__StringTypeScope__Group__1__Impl rule__StringTypeScope__Group__2 ) + // InternalApplicationConfiguration.g:6118:2: rule__StringTypeScope__Group__1__Impl rule__StringTypeScope__Group__2 { pushFollow(FOLLOW_29); rule__StringTypeScope__Group__1__Impl(); @@ -19258,21 +19285,21 @@ public final void rule__StringTypeScope__Group__1() throws RecognitionException // $ANTLR start "rule__StringTypeScope__Group__1__Impl" - // InternalApplicationConfiguration.g:6119:1: rule__StringTypeScope__Group__1__Impl : ( ( rule__StringTypeScope__TypeAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:6125:1: rule__StringTypeScope__Group__1__Impl : ( ( rule__StringTypeScope__TypeAssignment_1 ) ) ; public final void rule__StringTypeScope__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6123:1: ( ( ( rule__StringTypeScope__TypeAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:6124:1: ( ( rule__StringTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:6129:1: ( ( ( rule__StringTypeScope__TypeAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:6130:1: ( ( rule__StringTypeScope__TypeAssignment_1 ) ) { - // InternalApplicationConfiguration.g:6124:1: ( ( rule__StringTypeScope__TypeAssignment_1 ) ) - // InternalApplicationConfiguration.g:6125:2: ( rule__StringTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:6130:1: ( ( rule__StringTypeScope__TypeAssignment_1 ) ) + // InternalApplicationConfiguration.g:6131:2: ( rule__StringTypeScope__TypeAssignment_1 ) { before(grammarAccess.getStringTypeScopeAccess().getTypeAssignment_1()); - // InternalApplicationConfiguration.g:6126:2: ( rule__StringTypeScope__TypeAssignment_1 ) - // InternalApplicationConfiguration.g:6126:3: rule__StringTypeScope__TypeAssignment_1 + // InternalApplicationConfiguration.g:6132:2: ( rule__StringTypeScope__TypeAssignment_1 ) + // InternalApplicationConfiguration.g:6132:3: rule__StringTypeScope__TypeAssignment_1 { pushFollow(FOLLOW_2); rule__StringTypeScope__TypeAssignment_1(); @@ -19305,14 +19332,14 @@ public final void rule__StringTypeScope__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__StringTypeScope__Group__2" - // InternalApplicationConfiguration.g:6134:1: rule__StringTypeScope__Group__2 : rule__StringTypeScope__Group__2__Impl rule__StringTypeScope__Group__3 ; + // InternalApplicationConfiguration.g:6140:1: rule__StringTypeScope__Group__2 : rule__StringTypeScope__Group__2__Impl rule__StringTypeScope__Group__3 ; public final void rule__StringTypeScope__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6138:1: ( rule__StringTypeScope__Group__2__Impl rule__StringTypeScope__Group__3 ) - // InternalApplicationConfiguration.g:6139:2: rule__StringTypeScope__Group__2__Impl rule__StringTypeScope__Group__3 + // InternalApplicationConfiguration.g:6144:1: ( rule__StringTypeScope__Group__2__Impl rule__StringTypeScope__Group__3 ) + // InternalApplicationConfiguration.g:6145:2: rule__StringTypeScope__Group__2__Impl rule__StringTypeScope__Group__3 { pushFollow(FOLLOW_33); rule__StringTypeScope__Group__2__Impl(); @@ -19343,21 +19370,21 @@ public final void rule__StringTypeScope__Group__2() throws RecognitionException // $ANTLR start "rule__StringTypeScope__Group__2__Impl" - // InternalApplicationConfiguration.g:6146:1: rule__StringTypeScope__Group__2__Impl : ( ( rule__StringTypeScope__Alternatives_2 ) ) ; + // InternalApplicationConfiguration.g:6152:1: rule__StringTypeScope__Group__2__Impl : ( ( rule__StringTypeScope__Alternatives_2 ) ) ; public final void rule__StringTypeScope__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6150:1: ( ( ( rule__StringTypeScope__Alternatives_2 ) ) ) - // InternalApplicationConfiguration.g:6151:1: ( ( rule__StringTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:6156:1: ( ( ( rule__StringTypeScope__Alternatives_2 ) ) ) + // InternalApplicationConfiguration.g:6157:1: ( ( rule__StringTypeScope__Alternatives_2 ) ) { - // InternalApplicationConfiguration.g:6151:1: ( ( rule__StringTypeScope__Alternatives_2 ) ) - // InternalApplicationConfiguration.g:6152:2: ( rule__StringTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:6157:1: ( ( rule__StringTypeScope__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:6158:2: ( rule__StringTypeScope__Alternatives_2 ) { before(grammarAccess.getStringTypeScopeAccess().getAlternatives_2()); - // InternalApplicationConfiguration.g:6153:2: ( rule__StringTypeScope__Alternatives_2 ) - // InternalApplicationConfiguration.g:6153:3: rule__StringTypeScope__Alternatives_2 + // InternalApplicationConfiguration.g:6159:2: ( rule__StringTypeScope__Alternatives_2 ) + // InternalApplicationConfiguration.g:6159:3: rule__StringTypeScope__Alternatives_2 { pushFollow(FOLLOW_2); rule__StringTypeScope__Alternatives_2(); @@ -19390,14 +19417,14 @@ public final void rule__StringTypeScope__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__StringTypeScope__Group__3" - // InternalApplicationConfiguration.g:6161:1: rule__StringTypeScope__Group__3 : rule__StringTypeScope__Group__3__Impl ; + // InternalApplicationConfiguration.g:6167:1: rule__StringTypeScope__Group__3 : rule__StringTypeScope__Group__3__Impl ; public final void rule__StringTypeScope__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6165:1: ( rule__StringTypeScope__Group__3__Impl ) - // InternalApplicationConfiguration.g:6166:2: rule__StringTypeScope__Group__3__Impl + // InternalApplicationConfiguration.g:6171:1: ( rule__StringTypeScope__Group__3__Impl ) + // InternalApplicationConfiguration.g:6172:2: rule__StringTypeScope__Group__3__Impl { pushFollow(FOLLOW_2); rule__StringTypeScope__Group__3__Impl(); @@ -19423,21 +19450,21 @@ public final void rule__StringTypeScope__Group__3() throws RecognitionException // $ANTLR start "rule__StringTypeScope__Group__3__Impl" - // InternalApplicationConfiguration.g:6172:1: rule__StringTypeScope__Group__3__Impl : ( ( rule__StringTypeScope__Alternatives_3 ) ) ; + // InternalApplicationConfiguration.g:6178:1: rule__StringTypeScope__Group__3__Impl : ( ( rule__StringTypeScope__Alternatives_3 ) ) ; public final void rule__StringTypeScope__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6176:1: ( ( ( rule__StringTypeScope__Alternatives_3 ) ) ) - // InternalApplicationConfiguration.g:6177:1: ( ( rule__StringTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:6182:1: ( ( ( rule__StringTypeScope__Alternatives_3 ) ) ) + // InternalApplicationConfiguration.g:6183:1: ( ( rule__StringTypeScope__Alternatives_3 ) ) { - // InternalApplicationConfiguration.g:6177:1: ( ( rule__StringTypeScope__Alternatives_3 ) ) - // InternalApplicationConfiguration.g:6178:2: ( rule__StringTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:6183:1: ( ( rule__StringTypeScope__Alternatives_3 ) ) + // InternalApplicationConfiguration.g:6184:2: ( rule__StringTypeScope__Alternatives_3 ) { before(grammarAccess.getStringTypeScopeAccess().getAlternatives_3()); - // InternalApplicationConfiguration.g:6179:2: ( rule__StringTypeScope__Alternatives_3 ) - // InternalApplicationConfiguration.g:6179:3: rule__StringTypeScope__Alternatives_3 + // InternalApplicationConfiguration.g:6185:2: ( rule__StringTypeScope__Alternatives_3 ) + // InternalApplicationConfiguration.g:6185:3: rule__StringTypeScope__Alternatives_3 { pushFollow(FOLLOW_2); rule__StringTypeScope__Alternatives_3(); @@ -19470,14 +19497,14 @@ public final void rule__StringTypeScope__Group__3__Impl() throws RecognitionExce // $ANTLR start "rule__ClassReference__Group__0" - // InternalApplicationConfiguration.g:6188:1: rule__ClassReference__Group__0 : rule__ClassReference__Group__0__Impl rule__ClassReference__Group__1 ; + // InternalApplicationConfiguration.g:6194:1: rule__ClassReference__Group__0 : rule__ClassReference__Group__0__Impl rule__ClassReference__Group__1 ; public final void rule__ClassReference__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6192:1: ( rule__ClassReference__Group__0__Impl rule__ClassReference__Group__1 ) - // InternalApplicationConfiguration.g:6193:2: rule__ClassReference__Group__0__Impl rule__ClassReference__Group__1 + // InternalApplicationConfiguration.g:6198:1: ( rule__ClassReference__Group__0__Impl rule__ClassReference__Group__1 ) + // InternalApplicationConfiguration.g:6199:2: rule__ClassReference__Group__0__Impl rule__ClassReference__Group__1 { pushFollow(FOLLOW_8); rule__ClassReference__Group__0__Impl(); @@ -19508,20 +19535,20 @@ public final void rule__ClassReference__Group__0() throws RecognitionException { // $ANTLR start "rule__ClassReference__Group__0__Impl" - // InternalApplicationConfiguration.g:6200:1: rule__ClassReference__Group__0__Impl : ( '<' ) ; + // InternalApplicationConfiguration.g:6206:1: rule__ClassReference__Group__0__Impl : ( '<' ) ; public final void rule__ClassReference__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6204:1: ( ( '<' ) ) - // InternalApplicationConfiguration.g:6205:1: ( '<' ) + // InternalApplicationConfiguration.g:6210:1: ( ( '<' ) ) + // InternalApplicationConfiguration.g:6211:1: ( '<' ) { - // InternalApplicationConfiguration.g:6205:1: ( '<' ) - // InternalApplicationConfiguration.g:6206:2: '<' + // InternalApplicationConfiguration.g:6211:1: ( '<' ) + // InternalApplicationConfiguration.g:6212:2: '<' { before(grammarAccess.getClassReferenceAccess().getLessThanSignKeyword_0()); - match(input,39,FOLLOW_2); + match(input,40,FOLLOW_2); after(grammarAccess.getClassReferenceAccess().getLessThanSignKeyword_0()); } @@ -19545,14 +19572,14 @@ public final void rule__ClassReference__Group__0__Impl() throws RecognitionExcep // $ANTLR start "rule__ClassReference__Group__1" - // InternalApplicationConfiguration.g:6215:1: rule__ClassReference__Group__1 : rule__ClassReference__Group__1__Impl rule__ClassReference__Group__2 ; + // InternalApplicationConfiguration.g:6221:1: rule__ClassReference__Group__1 : rule__ClassReference__Group__1__Impl rule__ClassReference__Group__2 ; public final void rule__ClassReference__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6219:1: ( rule__ClassReference__Group__1__Impl rule__ClassReference__Group__2 ) - // InternalApplicationConfiguration.g:6220:2: rule__ClassReference__Group__1__Impl rule__ClassReference__Group__2 + // InternalApplicationConfiguration.g:6225:1: ( rule__ClassReference__Group__1__Impl rule__ClassReference__Group__2 ) + // InternalApplicationConfiguration.g:6226:2: rule__ClassReference__Group__1__Impl rule__ClassReference__Group__2 { pushFollow(FOLLOW_36); rule__ClassReference__Group__1__Impl(); @@ -19583,21 +19610,21 @@ public final void rule__ClassReference__Group__1() throws RecognitionException { // $ANTLR start "rule__ClassReference__Group__1__Impl" - // InternalApplicationConfiguration.g:6227:1: rule__ClassReference__Group__1__Impl : ( ( rule__ClassReference__ElementAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:6233:1: rule__ClassReference__Group__1__Impl : ( ( rule__ClassReference__ElementAssignment_1 ) ) ; public final void rule__ClassReference__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6231:1: ( ( ( rule__ClassReference__ElementAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:6232:1: ( ( rule__ClassReference__ElementAssignment_1 ) ) + // InternalApplicationConfiguration.g:6237:1: ( ( ( rule__ClassReference__ElementAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:6238:1: ( ( rule__ClassReference__ElementAssignment_1 ) ) { - // InternalApplicationConfiguration.g:6232:1: ( ( rule__ClassReference__ElementAssignment_1 ) ) - // InternalApplicationConfiguration.g:6233:2: ( rule__ClassReference__ElementAssignment_1 ) + // InternalApplicationConfiguration.g:6238:1: ( ( rule__ClassReference__ElementAssignment_1 ) ) + // InternalApplicationConfiguration.g:6239:2: ( rule__ClassReference__ElementAssignment_1 ) { before(grammarAccess.getClassReferenceAccess().getElementAssignment_1()); - // InternalApplicationConfiguration.g:6234:2: ( rule__ClassReference__ElementAssignment_1 ) - // InternalApplicationConfiguration.g:6234:3: rule__ClassReference__ElementAssignment_1 + // InternalApplicationConfiguration.g:6240:2: ( rule__ClassReference__ElementAssignment_1 ) + // InternalApplicationConfiguration.g:6240:3: rule__ClassReference__ElementAssignment_1 { pushFollow(FOLLOW_2); rule__ClassReference__ElementAssignment_1(); @@ -19630,14 +19657,14 @@ public final void rule__ClassReference__Group__1__Impl() throws RecognitionExcep // $ANTLR start "rule__ClassReference__Group__2" - // InternalApplicationConfiguration.g:6242:1: rule__ClassReference__Group__2 : rule__ClassReference__Group__2__Impl ; + // InternalApplicationConfiguration.g:6248:1: rule__ClassReference__Group__2 : rule__ClassReference__Group__2__Impl ; public final void rule__ClassReference__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6246:1: ( rule__ClassReference__Group__2__Impl ) - // InternalApplicationConfiguration.g:6247:2: rule__ClassReference__Group__2__Impl + // InternalApplicationConfiguration.g:6252:1: ( rule__ClassReference__Group__2__Impl ) + // InternalApplicationConfiguration.g:6253:2: rule__ClassReference__Group__2__Impl { pushFollow(FOLLOW_2); rule__ClassReference__Group__2__Impl(); @@ -19663,20 +19690,20 @@ public final void rule__ClassReference__Group__2() throws RecognitionException { // $ANTLR start "rule__ClassReference__Group__2__Impl" - // InternalApplicationConfiguration.g:6253:1: rule__ClassReference__Group__2__Impl : ( '>' ) ; + // InternalApplicationConfiguration.g:6259:1: rule__ClassReference__Group__2__Impl : ( '>' ) ; public final void rule__ClassReference__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6257:1: ( ( '>' ) ) - // InternalApplicationConfiguration.g:6258:1: ( '>' ) + // InternalApplicationConfiguration.g:6263:1: ( ( '>' ) ) + // InternalApplicationConfiguration.g:6264:1: ( '>' ) { - // InternalApplicationConfiguration.g:6258:1: ( '>' ) - // InternalApplicationConfiguration.g:6259:2: '>' + // InternalApplicationConfiguration.g:6264:1: ( '>' ) + // InternalApplicationConfiguration.g:6265:2: '>' { before(grammarAccess.getClassReferenceAccess().getGreaterThanSignKeyword_2()); - match(input,40,FOLLOW_2); + match(input,41,FOLLOW_2); after(grammarAccess.getClassReferenceAccess().getGreaterThanSignKeyword_2()); } @@ -19700,14 +19727,14 @@ public final void rule__ClassReference__Group__2__Impl() throws RecognitionExcep // $ANTLR start "rule__ObjectReference__Group__0" - // InternalApplicationConfiguration.g:6269:1: rule__ObjectReference__Group__0 : rule__ObjectReference__Group__0__Impl rule__ObjectReference__Group__1 ; + // InternalApplicationConfiguration.g:6275:1: rule__ObjectReference__Group__0 : rule__ObjectReference__Group__0__Impl rule__ObjectReference__Group__1 ; public final void rule__ObjectReference__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6273:1: ( rule__ObjectReference__Group__0__Impl rule__ObjectReference__Group__1 ) - // InternalApplicationConfiguration.g:6274:2: rule__ObjectReference__Group__0__Impl rule__ObjectReference__Group__1 + // InternalApplicationConfiguration.g:6279:1: ( rule__ObjectReference__Group__0__Impl rule__ObjectReference__Group__1 ) + // InternalApplicationConfiguration.g:6280:2: rule__ObjectReference__Group__0__Impl rule__ObjectReference__Group__1 { pushFollow(FOLLOW_31); rule__ObjectReference__Group__0__Impl(); @@ -19738,21 +19765,21 @@ public final void rule__ObjectReference__Group__0() throws RecognitionException // $ANTLR start "rule__ObjectReference__Group__0__Impl" - // InternalApplicationConfiguration.g:6281:1: rule__ObjectReference__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:6287:1: rule__ObjectReference__Group__0__Impl : ( () ) ; public final void rule__ObjectReference__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6285:1: ( ( () ) ) - // InternalApplicationConfiguration.g:6286:1: ( () ) + // InternalApplicationConfiguration.g:6291:1: ( ( () ) ) + // InternalApplicationConfiguration.g:6292:1: ( () ) { - // InternalApplicationConfiguration.g:6286:1: ( () ) - // InternalApplicationConfiguration.g:6287:2: () + // InternalApplicationConfiguration.g:6292:1: ( () ) + // InternalApplicationConfiguration.g:6293:2: () { before(grammarAccess.getObjectReferenceAccess().getObjectReferenceAction_0()); - // InternalApplicationConfiguration.g:6288:2: () - // InternalApplicationConfiguration.g:6288:3: + // InternalApplicationConfiguration.g:6294:2: () + // InternalApplicationConfiguration.g:6294:3: { } @@ -19775,14 +19802,14 @@ public final void rule__ObjectReference__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__ObjectReference__Group__1" - // InternalApplicationConfiguration.g:6296:1: rule__ObjectReference__Group__1 : rule__ObjectReference__Group__1__Impl ; + // InternalApplicationConfiguration.g:6302:1: rule__ObjectReference__Group__1 : rule__ObjectReference__Group__1__Impl ; public final void rule__ObjectReference__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6300:1: ( rule__ObjectReference__Group__1__Impl ) - // InternalApplicationConfiguration.g:6301:2: rule__ObjectReference__Group__1__Impl + // InternalApplicationConfiguration.g:6306:1: ( rule__ObjectReference__Group__1__Impl ) + // InternalApplicationConfiguration.g:6307:2: rule__ObjectReference__Group__1__Impl { pushFollow(FOLLOW_2); rule__ObjectReference__Group__1__Impl(); @@ -19808,20 +19835,20 @@ public final void rule__ObjectReference__Group__1() throws RecognitionException // $ANTLR start "rule__ObjectReference__Group__1__Impl" - // InternalApplicationConfiguration.g:6307:1: rule__ObjectReference__Group__1__Impl : ( 'node' ) ; + // InternalApplicationConfiguration.g:6313:1: rule__ObjectReference__Group__1__Impl : ( 'node' ) ; public final void rule__ObjectReference__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6311:1: ( ( 'node' ) ) - // InternalApplicationConfiguration.g:6312:1: ( 'node' ) + // InternalApplicationConfiguration.g:6317:1: ( ( 'node' ) ) + // InternalApplicationConfiguration.g:6318:1: ( 'node' ) { - // InternalApplicationConfiguration.g:6312:1: ( 'node' ) - // InternalApplicationConfiguration.g:6313:2: 'node' + // InternalApplicationConfiguration.g:6318:1: ( 'node' ) + // InternalApplicationConfiguration.g:6319:2: 'node' { before(grammarAccess.getObjectReferenceAccess().getNodeKeyword_1()); - match(input,41,FOLLOW_2); + match(input,42,FOLLOW_2); after(grammarAccess.getObjectReferenceAccess().getNodeKeyword_1()); } @@ -19845,14 +19872,14 @@ public final void rule__ObjectReference__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__IntegerReference__Group__0" - // InternalApplicationConfiguration.g:6323:1: rule__IntegerReference__Group__0 : rule__IntegerReference__Group__0__Impl rule__IntegerReference__Group__1 ; + // InternalApplicationConfiguration.g:6329:1: rule__IntegerReference__Group__0 : rule__IntegerReference__Group__0__Impl rule__IntegerReference__Group__1 ; public final void rule__IntegerReference__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6327:1: ( rule__IntegerReference__Group__0__Impl rule__IntegerReference__Group__1 ) - // InternalApplicationConfiguration.g:6328:2: rule__IntegerReference__Group__0__Impl rule__IntegerReference__Group__1 + // InternalApplicationConfiguration.g:6333:1: ( rule__IntegerReference__Group__0__Impl rule__IntegerReference__Group__1 ) + // InternalApplicationConfiguration.g:6334:2: rule__IntegerReference__Group__0__Impl rule__IntegerReference__Group__1 { pushFollow(FOLLOW_32); rule__IntegerReference__Group__0__Impl(); @@ -19883,21 +19910,21 @@ public final void rule__IntegerReference__Group__0() throws RecognitionException // $ANTLR start "rule__IntegerReference__Group__0__Impl" - // InternalApplicationConfiguration.g:6335:1: rule__IntegerReference__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:6341:1: rule__IntegerReference__Group__0__Impl : ( () ) ; public final void rule__IntegerReference__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6339:1: ( ( () ) ) - // InternalApplicationConfiguration.g:6340:1: ( () ) + // InternalApplicationConfiguration.g:6345:1: ( ( () ) ) + // InternalApplicationConfiguration.g:6346:1: ( () ) { - // InternalApplicationConfiguration.g:6340:1: ( () ) - // InternalApplicationConfiguration.g:6341:2: () + // InternalApplicationConfiguration.g:6346:1: ( () ) + // InternalApplicationConfiguration.g:6347:2: () { before(grammarAccess.getIntegerReferenceAccess().getIntegerScopeAction_0()); - // InternalApplicationConfiguration.g:6342:2: () - // InternalApplicationConfiguration.g:6342:3: + // InternalApplicationConfiguration.g:6348:2: () + // InternalApplicationConfiguration.g:6348:3: { } @@ -19920,14 +19947,14 @@ public final void rule__IntegerReference__Group__0__Impl() throws RecognitionExc // $ANTLR start "rule__IntegerReference__Group__1" - // InternalApplicationConfiguration.g:6350:1: rule__IntegerReference__Group__1 : rule__IntegerReference__Group__1__Impl ; + // InternalApplicationConfiguration.g:6356:1: rule__IntegerReference__Group__1 : rule__IntegerReference__Group__1__Impl ; public final void rule__IntegerReference__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6354:1: ( rule__IntegerReference__Group__1__Impl ) - // InternalApplicationConfiguration.g:6355:2: rule__IntegerReference__Group__1__Impl + // InternalApplicationConfiguration.g:6360:1: ( rule__IntegerReference__Group__1__Impl ) + // InternalApplicationConfiguration.g:6361:2: rule__IntegerReference__Group__1__Impl { pushFollow(FOLLOW_2); rule__IntegerReference__Group__1__Impl(); @@ -19953,20 +19980,20 @@ public final void rule__IntegerReference__Group__1() throws RecognitionException // $ANTLR start "rule__IntegerReference__Group__1__Impl" - // InternalApplicationConfiguration.g:6361:1: rule__IntegerReference__Group__1__Impl : ( 'int' ) ; + // InternalApplicationConfiguration.g:6367:1: rule__IntegerReference__Group__1__Impl : ( 'int' ) ; public final void rule__IntegerReference__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6365:1: ( ( 'int' ) ) - // InternalApplicationConfiguration.g:6366:1: ( 'int' ) + // InternalApplicationConfiguration.g:6371:1: ( ( 'int' ) ) + // InternalApplicationConfiguration.g:6372:1: ( 'int' ) { - // InternalApplicationConfiguration.g:6366:1: ( 'int' ) - // InternalApplicationConfiguration.g:6367:2: 'int' + // InternalApplicationConfiguration.g:6372:1: ( 'int' ) + // InternalApplicationConfiguration.g:6373:2: 'int' { before(grammarAccess.getIntegerReferenceAccess().getIntKeyword_1()); - match(input,42,FOLLOW_2); + match(input,43,FOLLOW_2); after(grammarAccess.getIntegerReferenceAccess().getIntKeyword_1()); } @@ -19990,14 +20017,14 @@ public final void rule__IntegerReference__Group__1__Impl() throws RecognitionExc // $ANTLR start "rule__RealReference__Group__0" - // InternalApplicationConfiguration.g:6377:1: rule__RealReference__Group__0 : rule__RealReference__Group__0__Impl rule__RealReference__Group__1 ; + // InternalApplicationConfiguration.g:6383:1: rule__RealReference__Group__0 : rule__RealReference__Group__0__Impl rule__RealReference__Group__1 ; public final void rule__RealReference__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6381:1: ( rule__RealReference__Group__0__Impl rule__RealReference__Group__1 ) - // InternalApplicationConfiguration.g:6382:2: rule__RealReference__Group__0__Impl rule__RealReference__Group__1 + // InternalApplicationConfiguration.g:6387:1: ( rule__RealReference__Group__0__Impl rule__RealReference__Group__1 ) + // InternalApplicationConfiguration.g:6388:2: rule__RealReference__Group__0__Impl rule__RealReference__Group__1 { pushFollow(FOLLOW_34); rule__RealReference__Group__0__Impl(); @@ -20028,21 +20055,21 @@ public final void rule__RealReference__Group__0() throws RecognitionException { // $ANTLR start "rule__RealReference__Group__0__Impl" - // InternalApplicationConfiguration.g:6389:1: rule__RealReference__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:6395:1: rule__RealReference__Group__0__Impl : ( () ) ; public final void rule__RealReference__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6393:1: ( ( () ) ) - // InternalApplicationConfiguration.g:6394:1: ( () ) + // InternalApplicationConfiguration.g:6399:1: ( ( () ) ) + // InternalApplicationConfiguration.g:6400:1: ( () ) { - // InternalApplicationConfiguration.g:6394:1: ( () ) - // InternalApplicationConfiguration.g:6395:2: () + // InternalApplicationConfiguration.g:6400:1: ( () ) + // InternalApplicationConfiguration.g:6401:2: () { before(grammarAccess.getRealReferenceAccess().getRealScopeAction_0()); - // InternalApplicationConfiguration.g:6396:2: () - // InternalApplicationConfiguration.g:6396:3: + // InternalApplicationConfiguration.g:6402:2: () + // InternalApplicationConfiguration.g:6402:3: { } @@ -20065,14 +20092,14 @@ public final void rule__RealReference__Group__0__Impl() throws RecognitionExcept // $ANTLR start "rule__RealReference__Group__1" - // InternalApplicationConfiguration.g:6404:1: rule__RealReference__Group__1 : rule__RealReference__Group__1__Impl ; + // InternalApplicationConfiguration.g:6410:1: rule__RealReference__Group__1 : rule__RealReference__Group__1__Impl ; public final void rule__RealReference__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6408:1: ( rule__RealReference__Group__1__Impl ) - // InternalApplicationConfiguration.g:6409:2: rule__RealReference__Group__1__Impl + // InternalApplicationConfiguration.g:6414:1: ( rule__RealReference__Group__1__Impl ) + // InternalApplicationConfiguration.g:6415:2: rule__RealReference__Group__1__Impl { pushFollow(FOLLOW_2); rule__RealReference__Group__1__Impl(); @@ -20098,20 +20125,20 @@ public final void rule__RealReference__Group__1() throws RecognitionException { // $ANTLR start "rule__RealReference__Group__1__Impl" - // InternalApplicationConfiguration.g:6415:1: rule__RealReference__Group__1__Impl : ( 'real' ) ; + // InternalApplicationConfiguration.g:6421:1: rule__RealReference__Group__1__Impl : ( 'real' ) ; public final void rule__RealReference__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6419:1: ( ( 'real' ) ) - // InternalApplicationConfiguration.g:6420:1: ( 'real' ) + // InternalApplicationConfiguration.g:6425:1: ( ( 'real' ) ) + // InternalApplicationConfiguration.g:6426:1: ( 'real' ) { - // InternalApplicationConfiguration.g:6420:1: ( 'real' ) - // InternalApplicationConfiguration.g:6421:2: 'real' + // InternalApplicationConfiguration.g:6426:1: ( 'real' ) + // InternalApplicationConfiguration.g:6427:2: 'real' { before(grammarAccess.getRealReferenceAccess().getRealKeyword_1()); - match(input,43,FOLLOW_2); + match(input,44,FOLLOW_2); after(grammarAccess.getRealReferenceAccess().getRealKeyword_1()); } @@ -20135,14 +20162,14 @@ public final void rule__RealReference__Group__1__Impl() throws RecognitionExcept // $ANTLR start "rule__StringReference__Group__0" - // InternalApplicationConfiguration.g:6431:1: rule__StringReference__Group__0 : rule__StringReference__Group__0__Impl rule__StringReference__Group__1 ; + // InternalApplicationConfiguration.g:6437:1: rule__StringReference__Group__0 : rule__StringReference__Group__0__Impl rule__StringReference__Group__1 ; public final void rule__StringReference__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6435:1: ( rule__StringReference__Group__0__Impl rule__StringReference__Group__1 ) - // InternalApplicationConfiguration.g:6436:2: rule__StringReference__Group__0__Impl rule__StringReference__Group__1 + // InternalApplicationConfiguration.g:6441:1: ( rule__StringReference__Group__0__Impl rule__StringReference__Group__1 ) + // InternalApplicationConfiguration.g:6442:2: rule__StringReference__Group__0__Impl rule__StringReference__Group__1 { pushFollow(FOLLOW_35); rule__StringReference__Group__0__Impl(); @@ -20173,21 +20200,21 @@ public final void rule__StringReference__Group__0() throws RecognitionException // $ANTLR start "rule__StringReference__Group__0__Impl" - // InternalApplicationConfiguration.g:6443:1: rule__StringReference__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:6449:1: rule__StringReference__Group__0__Impl : ( () ) ; public final void rule__StringReference__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6447:1: ( ( () ) ) - // InternalApplicationConfiguration.g:6448:1: ( () ) + // InternalApplicationConfiguration.g:6453:1: ( ( () ) ) + // InternalApplicationConfiguration.g:6454:1: ( () ) { - // InternalApplicationConfiguration.g:6448:1: ( () ) - // InternalApplicationConfiguration.g:6449:2: () + // InternalApplicationConfiguration.g:6454:1: ( () ) + // InternalApplicationConfiguration.g:6455:2: () { before(grammarAccess.getStringReferenceAccess().getStringScopeAction_0()); - // InternalApplicationConfiguration.g:6450:2: () - // InternalApplicationConfiguration.g:6450:3: + // InternalApplicationConfiguration.g:6456:2: () + // InternalApplicationConfiguration.g:6456:3: { } @@ -20210,14 +20237,14 @@ public final void rule__StringReference__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__StringReference__Group__1" - // InternalApplicationConfiguration.g:6458:1: rule__StringReference__Group__1 : rule__StringReference__Group__1__Impl ; + // InternalApplicationConfiguration.g:6464:1: rule__StringReference__Group__1 : rule__StringReference__Group__1__Impl ; public final void rule__StringReference__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6462:1: ( rule__StringReference__Group__1__Impl ) - // InternalApplicationConfiguration.g:6463:2: rule__StringReference__Group__1__Impl + // InternalApplicationConfiguration.g:6468:1: ( rule__StringReference__Group__1__Impl ) + // InternalApplicationConfiguration.g:6469:2: rule__StringReference__Group__1__Impl { pushFollow(FOLLOW_2); rule__StringReference__Group__1__Impl(); @@ -20243,20 +20270,20 @@ public final void rule__StringReference__Group__1() throws RecognitionException // $ANTLR start "rule__StringReference__Group__1__Impl" - // InternalApplicationConfiguration.g:6469:1: rule__StringReference__Group__1__Impl : ( 'string' ) ; + // InternalApplicationConfiguration.g:6475:1: rule__StringReference__Group__1__Impl : ( 'string' ) ; public final void rule__StringReference__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6473:1: ( ( 'string' ) ) - // InternalApplicationConfiguration.g:6474:1: ( 'string' ) + // InternalApplicationConfiguration.g:6479:1: ( ( 'string' ) ) + // InternalApplicationConfiguration.g:6480:1: ( 'string' ) { - // InternalApplicationConfiguration.g:6474:1: ( 'string' ) - // InternalApplicationConfiguration.g:6475:2: 'string' + // InternalApplicationConfiguration.g:6480:1: ( 'string' ) + // InternalApplicationConfiguration.g:6481:2: 'string' { before(grammarAccess.getStringReferenceAccess().getStringKeyword_1()); - match(input,44,FOLLOW_2); + match(input,45,FOLLOW_2); after(grammarAccess.getStringReferenceAccess().getStringKeyword_1()); } @@ -20280,14 +20307,14 @@ public final void rule__StringReference__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__IntervallNumber__Group__0" - // InternalApplicationConfiguration.g:6485:1: rule__IntervallNumber__Group__0 : rule__IntervallNumber__Group__0__Impl rule__IntervallNumber__Group__1 ; + // InternalApplicationConfiguration.g:6491:1: rule__IntervallNumber__Group__0 : rule__IntervallNumber__Group__0__Impl rule__IntervallNumber__Group__1 ; public final void rule__IntervallNumber__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6489:1: ( rule__IntervallNumber__Group__0__Impl rule__IntervallNumber__Group__1 ) - // InternalApplicationConfiguration.g:6490:2: rule__IntervallNumber__Group__0__Impl rule__IntervallNumber__Group__1 + // InternalApplicationConfiguration.g:6495:1: ( rule__IntervallNumber__Group__0__Impl rule__IntervallNumber__Group__1 ) + // InternalApplicationConfiguration.g:6496:2: rule__IntervallNumber__Group__0__Impl rule__IntervallNumber__Group__1 { pushFollow(FOLLOW_37); rule__IntervallNumber__Group__0__Impl(); @@ -20318,21 +20345,21 @@ public final void rule__IntervallNumber__Group__0() throws RecognitionException // $ANTLR start "rule__IntervallNumber__Group__0__Impl" - // InternalApplicationConfiguration.g:6497:1: rule__IntervallNumber__Group__0__Impl : ( ( rule__IntervallNumber__MinAssignment_0 ) ) ; + // InternalApplicationConfiguration.g:6503:1: rule__IntervallNumber__Group__0__Impl : ( ( rule__IntervallNumber__MinAssignment_0 ) ) ; public final void rule__IntervallNumber__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6501:1: ( ( ( rule__IntervallNumber__MinAssignment_0 ) ) ) - // InternalApplicationConfiguration.g:6502:1: ( ( rule__IntervallNumber__MinAssignment_0 ) ) + // InternalApplicationConfiguration.g:6507:1: ( ( ( rule__IntervallNumber__MinAssignment_0 ) ) ) + // InternalApplicationConfiguration.g:6508:1: ( ( rule__IntervallNumber__MinAssignment_0 ) ) { - // InternalApplicationConfiguration.g:6502:1: ( ( rule__IntervallNumber__MinAssignment_0 ) ) - // InternalApplicationConfiguration.g:6503:2: ( rule__IntervallNumber__MinAssignment_0 ) + // InternalApplicationConfiguration.g:6508:1: ( ( rule__IntervallNumber__MinAssignment_0 ) ) + // InternalApplicationConfiguration.g:6509:2: ( rule__IntervallNumber__MinAssignment_0 ) { before(grammarAccess.getIntervallNumberAccess().getMinAssignment_0()); - // InternalApplicationConfiguration.g:6504:2: ( rule__IntervallNumber__MinAssignment_0 ) - // InternalApplicationConfiguration.g:6504:3: rule__IntervallNumber__MinAssignment_0 + // InternalApplicationConfiguration.g:6510:2: ( rule__IntervallNumber__MinAssignment_0 ) + // InternalApplicationConfiguration.g:6510:3: rule__IntervallNumber__MinAssignment_0 { pushFollow(FOLLOW_2); rule__IntervallNumber__MinAssignment_0(); @@ -20365,14 +20392,14 @@ public final void rule__IntervallNumber__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__IntervallNumber__Group__1" - // InternalApplicationConfiguration.g:6512:1: rule__IntervallNumber__Group__1 : rule__IntervallNumber__Group__1__Impl rule__IntervallNumber__Group__2 ; + // InternalApplicationConfiguration.g:6518:1: rule__IntervallNumber__Group__1 : rule__IntervallNumber__Group__1__Impl rule__IntervallNumber__Group__2 ; public final void rule__IntervallNumber__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6516:1: ( rule__IntervallNumber__Group__1__Impl rule__IntervallNumber__Group__2 ) - // InternalApplicationConfiguration.g:6517:2: rule__IntervallNumber__Group__1__Impl rule__IntervallNumber__Group__2 + // InternalApplicationConfiguration.g:6522:1: ( rule__IntervallNumber__Group__1__Impl rule__IntervallNumber__Group__2 ) + // InternalApplicationConfiguration.g:6523:2: rule__IntervallNumber__Group__1__Impl rule__IntervallNumber__Group__2 { pushFollow(FOLLOW_30); rule__IntervallNumber__Group__1__Impl(); @@ -20403,20 +20430,20 @@ public final void rule__IntervallNumber__Group__1() throws RecognitionException // $ANTLR start "rule__IntervallNumber__Group__1__Impl" - // InternalApplicationConfiguration.g:6524:1: rule__IntervallNumber__Group__1__Impl : ( '..' ) ; + // InternalApplicationConfiguration.g:6530:1: rule__IntervallNumber__Group__1__Impl : ( '..' ) ; public final void rule__IntervallNumber__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6528:1: ( ( '..' ) ) - // InternalApplicationConfiguration.g:6529:1: ( '..' ) + // InternalApplicationConfiguration.g:6534:1: ( ( '..' ) ) + // InternalApplicationConfiguration.g:6535:1: ( '..' ) { - // InternalApplicationConfiguration.g:6529:1: ( '..' ) - // InternalApplicationConfiguration.g:6530:2: '..' + // InternalApplicationConfiguration.g:6535:1: ( '..' ) + // InternalApplicationConfiguration.g:6536:2: '..' { before(grammarAccess.getIntervallNumberAccess().getFullStopFullStopKeyword_1()); - match(input,45,FOLLOW_2); + match(input,46,FOLLOW_2); after(grammarAccess.getIntervallNumberAccess().getFullStopFullStopKeyword_1()); } @@ -20440,14 +20467,14 @@ public final void rule__IntervallNumber__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__IntervallNumber__Group__2" - // InternalApplicationConfiguration.g:6539:1: rule__IntervallNumber__Group__2 : rule__IntervallNumber__Group__2__Impl ; + // InternalApplicationConfiguration.g:6545:1: rule__IntervallNumber__Group__2 : rule__IntervallNumber__Group__2__Impl ; public final void rule__IntervallNumber__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6543:1: ( rule__IntervallNumber__Group__2__Impl ) - // InternalApplicationConfiguration.g:6544:2: rule__IntervallNumber__Group__2__Impl + // InternalApplicationConfiguration.g:6549:1: ( rule__IntervallNumber__Group__2__Impl ) + // InternalApplicationConfiguration.g:6550:2: rule__IntervallNumber__Group__2__Impl { pushFollow(FOLLOW_2); rule__IntervallNumber__Group__2__Impl(); @@ -20473,21 +20500,21 @@ public final void rule__IntervallNumber__Group__2() throws RecognitionException // $ANTLR start "rule__IntervallNumber__Group__2__Impl" - // InternalApplicationConfiguration.g:6550:1: rule__IntervallNumber__Group__2__Impl : ( ( rule__IntervallNumber__Alternatives_2 ) ) ; + // InternalApplicationConfiguration.g:6556:1: rule__IntervallNumber__Group__2__Impl : ( ( rule__IntervallNumber__Alternatives_2 ) ) ; public final void rule__IntervallNumber__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6554:1: ( ( ( rule__IntervallNumber__Alternatives_2 ) ) ) - // InternalApplicationConfiguration.g:6555:1: ( ( rule__IntervallNumber__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:6560:1: ( ( ( rule__IntervallNumber__Alternatives_2 ) ) ) + // InternalApplicationConfiguration.g:6561:1: ( ( rule__IntervallNumber__Alternatives_2 ) ) { - // InternalApplicationConfiguration.g:6555:1: ( ( rule__IntervallNumber__Alternatives_2 ) ) - // InternalApplicationConfiguration.g:6556:2: ( rule__IntervallNumber__Alternatives_2 ) + // InternalApplicationConfiguration.g:6561:1: ( ( rule__IntervallNumber__Alternatives_2 ) ) + // InternalApplicationConfiguration.g:6562:2: ( rule__IntervallNumber__Alternatives_2 ) { before(grammarAccess.getIntervallNumberAccess().getAlternatives_2()); - // InternalApplicationConfiguration.g:6557:2: ( rule__IntervallNumber__Alternatives_2 ) - // InternalApplicationConfiguration.g:6557:3: rule__IntervallNumber__Alternatives_2 + // InternalApplicationConfiguration.g:6563:2: ( rule__IntervallNumber__Alternatives_2 ) + // InternalApplicationConfiguration.g:6563:3: rule__IntervallNumber__Alternatives_2 { pushFollow(FOLLOW_2); rule__IntervallNumber__Alternatives_2(); @@ -20520,14 +20547,14 @@ public final void rule__IntervallNumber__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__IntEnumberation__Group__0" - // InternalApplicationConfiguration.g:6566:1: rule__IntEnumberation__Group__0 : rule__IntEnumberation__Group__0__Impl rule__IntEnumberation__Group__1 ; + // InternalApplicationConfiguration.g:6572:1: rule__IntEnumberation__Group__0 : rule__IntEnumberation__Group__0__Impl rule__IntEnumberation__Group__1 ; public final void rule__IntEnumberation__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6570:1: ( rule__IntEnumberation__Group__0__Impl rule__IntEnumberation__Group__1 ) - // InternalApplicationConfiguration.g:6571:2: rule__IntEnumberation__Group__0__Impl rule__IntEnumberation__Group__1 + // InternalApplicationConfiguration.g:6576:1: ( rule__IntEnumberation__Group__0__Impl rule__IntEnumberation__Group__1 ) + // InternalApplicationConfiguration.g:6577:2: rule__IntEnumberation__Group__0__Impl rule__IntEnumberation__Group__1 { pushFollow(FOLLOW_33); rule__IntEnumberation__Group__0__Impl(); @@ -20558,21 +20585,21 @@ public final void rule__IntEnumberation__Group__0() throws RecognitionException // $ANTLR start "rule__IntEnumberation__Group__0__Impl" - // InternalApplicationConfiguration.g:6578:1: rule__IntEnumberation__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:6584:1: rule__IntEnumberation__Group__0__Impl : ( () ) ; public final void rule__IntEnumberation__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6582:1: ( ( () ) ) - // InternalApplicationConfiguration.g:6583:1: ( () ) + // InternalApplicationConfiguration.g:6588:1: ( ( () ) ) + // InternalApplicationConfiguration.g:6589:1: ( () ) { - // InternalApplicationConfiguration.g:6583:1: ( () ) - // InternalApplicationConfiguration.g:6584:2: () + // InternalApplicationConfiguration.g:6589:1: ( () ) + // InternalApplicationConfiguration.g:6590:2: () { before(grammarAccess.getIntEnumberationAccess().getIntEnumberationAction_0()); - // InternalApplicationConfiguration.g:6585:2: () - // InternalApplicationConfiguration.g:6585:3: + // InternalApplicationConfiguration.g:6591:2: () + // InternalApplicationConfiguration.g:6591:3: { } @@ -20595,14 +20622,14 @@ public final void rule__IntEnumberation__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__IntEnumberation__Group__1" - // InternalApplicationConfiguration.g:6593:1: rule__IntEnumberation__Group__1 : rule__IntEnumberation__Group__1__Impl rule__IntEnumberation__Group__2 ; + // InternalApplicationConfiguration.g:6599:1: rule__IntEnumberation__Group__1 : rule__IntEnumberation__Group__1__Impl rule__IntEnumberation__Group__2 ; public final void rule__IntEnumberation__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6597:1: ( rule__IntEnumberation__Group__1__Impl rule__IntEnumberation__Group__2 ) - // InternalApplicationConfiguration.g:6598:2: rule__IntEnumberation__Group__1__Impl rule__IntEnumberation__Group__2 + // InternalApplicationConfiguration.g:6603:1: ( rule__IntEnumberation__Group__1__Impl rule__IntEnumberation__Group__2 ) + // InternalApplicationConfiguration.g:6604:2: rule__IntEnumberation__Group__1__Impl rule__IntEnumberation__Group__2 { pushFollow(FOLLOW_38); rule__IntEnumberation__Group__1__Impl(); @@ -20633,20 +20660,20 @@ public final void rule__IntEnumberation__Group__1() throws RecognitionException // $ANTLR start "rule__IntEnumberation__Group__1__Impl" - // InternalApplicationConfiguration.g:6605:1: rule__IntEnumberation__Group__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:6611:1: rule__IntEnumberation__Group__1__Impl : ( '{' ) ; public final void rule__IntEnumberation__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6609:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:6610:1: ( '{' ) + // InternalApplicationConfiguration.g:6615:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:6616:1: ( '{' ) { - // InternalApplicationConfiguration.g:6610:1: ( '{' ) - // InternalApplicationConfiguration.g:6611:2: '{' + // InternalApplicationConfiguration.g:6616:1: ( '{' ) + // InternalApplicationConfiguration.g:6617:2: '{' { before(grammarAccess.getIntEnumberationAccess().getLeftCurlyBracketKeyword_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getIntEnumberationAccess().getLeftCurlyBracketKeyword_1()); } @@ -20670,14 +20697,14 @@ public final void rule__IntEnumberation__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__IntEnumberation__Group__2" - // InternalApplicationConfiguration.g:6620:1: rule__IntEnumberation__Group__2 : rule__IntEnumberation__Group__2__Impl rule__IntEnumberation__Group__3 ; + // InternalApplicationConfiguration.g:6626:1: rule__IntEnumberation__Group__2 : rule__IntEnumberation__Group__2__Impl rule__IntEnumberation__Group__3 ; public final void rule__IntEnumberation__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6624:1: ( rule__IntEnumberation__Group__2__Impl rule__IntEnumberation__Group__3 ) - // InternalApplicationConfiguration.g:6625:2: rule__IntEnumberation__Group__2__Impl rule__IntEnumberation__Group__3 + // InternalApplicationConfiguration.g:6630:1: ( rule__IntEnumberation__Group__2__Impl rule__IntEnumberation__Group__3 ) + // InternalApplicationConfiguration.g:6631:2: rule__IntEnumberation__Group__2__Impl rule__IntEnumberation__Group__3 { pushFollow(FOLLOW_38); rule__IntEnumberation__Group__2__Impl(); @@ -20708,29 +20735,29 @@ public final void rule__IntEnumberation__Group__2() throws RecognitionException // $ANTLR start "rule__IntEnumberation__Group__2__Impl" - // InternalApplicationConfiguration.g:6632:1: rule__IntEnumberation__Group__2__Impl : ( ( rule__IntEnumberation__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:6638:1: rule__IntEnumberation__Group__2__Impl : ( ( rule__IntEnumberation__Group_2__0 )? ) ; public final void rule__IntEnumberation__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6636:1: ( ( ( rule__IntEnumberation__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:6637:1: ( ( rule__IntEnumberation__Group_2__0 )? ) + // InternalApplicationConfiguration.g:6642:1: ( ( ( rule__IntEnumberation__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:6643:1: ( ( rule__IntEnumberation__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:6637:1: ( ( rule__IntEnumberation__Group_2__0 )? ) - // InternalApplicationConfiguration.g:6638:2: ( rule__IntEnumberation__Group_2__0 )? + // InternalApplicationConfiguration.g:6643:1: ( ( rule__IntEnumberation__Group_2__0 )? ) + // InternalApplicationConfiguration.g:6644:2: ( rule__IntEnumberation__Group_2__0 )? { before(grammarAccess.getIntEnumberationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:6639:2: ( rule__IntEnumberation__Group_2__0 )? + // InternalApplicationConfiguration.g:6645:2: ( rule__IntEnumberation__Group_2__0 )? int alt50=2; int LA50_0 = input.LA(1); - if ( (LA50_0==RULE_INT||LA50_0==18) ) { + if ( (LA50_0==RULE_INT||LA50_0==19) ) { alt50=1; } switch (alt50) { case 1 : - // InternalApplicationConfiguration.g:6639:3: rule__IntEnumberation__Group_2__0 + // InternalApplicationConfiguration.g:6645:3: rule__IntEnumberation__Group_2__0 { pushFollow(FOLLOW_2); rule__IntEnumberation__Group_2__0(); @@ -20766,14 +20793,14 @@ public final void rule__IntEnumberation__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__IntEnumberation__Group__3" - // InternalApplicationConfiguration.g:6647:1: rule__IntEnumberation__Group__3 : rule__IntEnumberation__Group__3__Impl ; + // InternalApplicationConfiguration.g:6653:1: rule__IntEnumberation__Group__3 : rule__IntEnumberation__Group__3__Impl ; public final void rule__IntEnumberation__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6651:1: ( rule__IntEnumberation__Group__3__Impl ) - // InternalApplicationConfiguration.g:6652:2: rule__IntEnumberation__Group__3__Impl + // InternalApplicationConfiguration.g:6657:1: ( rule__IntEnumberation__Group__3__Impl ) + // InternalApplicationConfiguration.g:6658:2: rule__IntEnumberation__Group__3__Impl { pushFollow(FOLLOW_2); rule__IntEnumberation__Group__3__Impl(); @@ -20799,20 +20826,20 @@ public final void rule__IntEnumberation__Group__3() throws RecognitionException // $ANTLR start "rule__IntEnumberation__Group__3__Impl" - // InternalApplicationConfiguration.g:6658:1: rule__IntEnumberation__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:6664:1: rule__IntEnumberation__Group__3__Impl : ( '}' ) ; public final void rule__IntEnumberation__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6662:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:6663:1: ( '}' ) + // InternalApplicationConfiguration.g:6668:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:6669:1: ( '}' ) { - // InternalApplicationConfiguration.g:6663:1: ( '}' ) - // InternalApplicationConfiguration.g:6664:2: '}' + // InternalApplicationConfiguration.g:6669:1: ( '}' ) + // InternalApplicationConfiguration.g:6670:2: '}' { before(grammarAccess.getIntEnumberationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getIntEnumberationAccess().getRightCurlyBracketKeyword_3()); } @@ -20836,14 +20863,14 @@ public final void rule__IntEnumberation__Group__3__Impl() throws RecognitionExce // $ANTLR start "rule__IntEnumberation__Group_2__0" - // InternalApplicationConfiguration.g:6674:1: rule__IntEnumberation__Group_2__0 : rule__IntEnumberation__Group_2__0__Impl rule__IntEnumberation__Group_2__1 ; + // InternalApplicationConfiguration.g:6680:1: rule__IntEnumberation__Group_2__0 : rule__IntEnumberation__Group_2__0__Impl rule__IntEnumberation__Group_2__1 ; public final void rule__IntEnumberation__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6678:1: ( rule__IntEnumberation__Group_2__0__Impl rule__IntEnumberation__Group_2__1 ) - // InternalApplicationConfiguration.g:6679:2: rule__IntEnumberation__Group_2__0__Impl rule__IntEnumberation__Group_2__1 + // InternalApplicationConfiguration.g:6684:1: ( rule__IntEnumberation__Group_2__0__Impl rule__IntEnumberation__Group_2__1 ) + // InternalApplicationConfiguration.g:6685:2: rule__IntEnumberation__Group_2__0__Impl rule__IntEnumberation__Group_2__1 { pushFollow(FOLLOW_23); rule__IntEnumberation__Group_2__0__Impl(); @@ -20874,21 +20901,21 @@ public final void rule__IntEnumberation__Group_2__0() throws RecognitionExceptio // $ANTLR start "rule__IntEnumberation__Group_2__0__Impl" - // InternalApplicationConfiguration.g:6686:1: rule__IntEnumberation__Group_2__0__Impl : ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) ; + // InternalApplicationConfiguration.g:6692:1: rule__IntEnumberation__Group_2__0__Impl : ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) ; public final void rule__IntEnumberation__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6690:1: ( ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) ) - // InternalApplicationConfiguration.g:6691:1: ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:6696:1: ( ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) ) + // InternalApplicationConfiguration.g:6697:1: ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) { - // InternalApplicationConfiguration.g:6691:1: ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) - // InternalApplicationConfiguration.g:6692:2: ( rule__IntEnumberation__EntryAssignment_2_0 ) + // InternalApplicationConfiguration.g:6697:1: ( ( rule__IntEnumberation__EntryAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:6698:2: ( rule__IntEnumberation__EntryAssignment_2_0 ) { before(grammarAccess.getIntEnumberationAccess().getEntryAssignment_2_0()); - // InternalApplicationConfiguration.g:6693:2: ( rule__IntEnumberation__EntryAssignment_2_0 ) - // InternalApplicationConfiguration.g:6693:3: rule__IntEnumberation__EntryAssignment_2_0 + // InternalApplicationConfiguration.g:6699:2: ( rule__IntEnumberation__EntryAssignment_2_0 ) + // InternalApplicationConfiguration.g:6699:3: rule__IntEnumberation__EntryAssignment_2_0 { pushFollow(FOLLOW_2); rule__IntEnumberation__EntryAssignment_2_0(); @@ -20921,14 +20948,14 @@ public final void rule__IntEnumberation__Group_2__0__Impl() throws RecognitionEx // $ANTLR start "rule__IntEnumberation__Group_2__1" - // InternalApplicationConfiguration.g:6701:1: rule__IntEnumberation__Group_2__1 : rule__IntEnumberation__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:6707:1: rule__IntEnumberation__Group_2__1 : rule__IntEnumberation__Group_2__1__Impl ; public final void rule__IntEnumberation__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6705:1: ( rule__IntEnumberation__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:6706:2: rule__IntEnumberation__Group_2__1__Impl + // InternalApplicationConfiguration.g:6711:1: ( rule__IntEnumberation__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:6712:2: rule__IntEnumberation__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__IntEnumberation__Group_2__1__Impl(); @@ -20954,33 +20981,33 @@ public final void rule__IntEnumberation__Group_2__1() throws RecognitionExceptio // $ANTLR start "rule__IntEnumberation__Group_2__1__Impl" - // InternalApplicationConfiguration.g:6712:1: rule__IntEnumberation__Group_2__1__Impl : ( ( rule__IntEnumberation__Group_2_1__0 )* ) ; + // InternalApplicationConfiguration.g:6718:1: rule__IntEnumberation__Group_2__1__Impl : ( ( rule__IntEnumberation__Group_2_1__0 )* ) ; public final void rule__IntEnumberation__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6716:1: ( ( ( rule__IntEnumberation__Group_2_1__0 )* ) ) - // InternalApplicationConfiguration.g:6717:1: ( ( rule__IntEnumberation__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:6722:1: ( ( ( rule__IntEnumberation__Group_2_1__0 )* ) ) + // InternalApplicationConfiguration.g:6723:1: ( ( rule__IntEnumberation__Group_2_1__0 )* ) { - // InternalApplicationConfiguration.g:6717:1: ( ( rule__IntEnumberation__Group_2_1__0 )* ) - // InternalApplicationConfiguration.g:6718:2: ( rule__IntEnumberation__Group_2_1__0 )* + // InternalApplicationConfiguration.g:6723:1: ( ( rule__IntEnumberation__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:6724:2: ( rule__IntEnumberation__Group_2_1__0 )* { before(grammarAccess.getIntEnumberationAccess().getGroup_2_1()); - // InternalApplicationConfiguration.g:6719:2: ( rule__IntEnumberation__Group_2_1__0 )* + // InternalApplicationConfiguration.g:6725:2: ( rule__IntEnumberation__Group_2_1__0 )* loop51: do { int alt51=2; int LA51_0 = input.LA(1); - if ( (LA51_0==26) ) { + if ( (LA51_0==27) ) { alt51=1; } switch (alt51) { case 1 : - // InternalApplicationConfiguration.g:6719:3: rule__IntEnumberation__Group_2_1__0 + // InternalApplicationConfiguration.g:6725:3: rule__IntEnumberation__Group_2_1__0 { pushFollow(FOLLOW_16); rule__IntEnumberation__Group_2_1__0(); @@ -21019,14 +21046,14 @@ public final void rule__IntEnumberation__Group_2__1__Impl() throws RecognitionEx // $ANTLR start "rule__IntEnumberation__Group_2_1__0" - // InternalApplicationConfiguration.g:6728:1: rule__IntEnumberation__Group_2_1__0 : rule__IntEnumberation__Group_2_1__0__Impl rule__IntEnumberation__Group_2_1__1 ; + // InternalApplicationConfiguration.g:6734:1: rule__IntEnumberation__Group_2_1__0 : rule__IntEnumberation__Group_2_1__0__Impl rule__IntEnumberation__Group_2_1__1 ; public final void rule__IntEnumberation__Group_2_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6732:1: ( rule__IntEnumberation__Group_2_1__0__Impl rule__IntEnumberation__Group_2_1__1 ) - // InternalApplicationConfiguration.g:6733:2: rule__IntEnumberation__Group_2_1__0__Impl rule__IntEnumberation__Group_2_1__1 + // InternalApplicationConfiguration.g:6738:1: ( rule__IntEnumberation__Group_2_1__0__Impl rule__IntEnumberation__Group_2_1__1 ) + // InternalApplicationConfiguration.g:6739:2: rule__IntEnumberation__Group_2_1__0__Impl rule__IntEnumberation__Group_2_1__1 { pushFollow(FOLLOW_39); rule__IntEnumberation__Group_2_1__0__Impl(); @@ -21057,20 +21084,20 @@ public final void rule__IntEnumberation__Group_2_1__0() throws RecognitionExcept // $ANTLR start "rule__IntEnumberation__Group_2_1__0__Impl" - // InternalApplicationConfiguration.g:6740:1: rule__IntEnumberation__Group_2_1__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:6746:1: rule__IntEnumberation__Group_2_1__0__Impl : ( ',' ) ; public final void rule__IntEnumberation__Group_2_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6744:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:6745:1: ( ',' ) + // InternalApplicationConfiguration.g:6750:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:6751:1: ( ',' ) { - // InternalApplicationConfiguration.g:6745:1: ( ',' ) - // InternalApplicationConfiguration.g:6746:2: ',' + // InternalApplicationConfiguration.g:6751:1: ( ',' ) + // InternalApplicationConfiguration.g:6752:2: ',' { before(grammarAccess.getIntEnumberationAccess().getCommaKeyword_2_1_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getIntEnumberationAccess().getCommaKeyword_2_1_0()); } @@ -21094,14 +21121,14 @@ public final void rule__IntEnumberation__Group_2_1__0__Impl() throws Recognition // $ANTLR start "rule__IntEnumberation__Group_2_1__1" - // InternalApplicationConfiguration.g:6755:1: rule__IntEnumberation__Group_2_1__1 : rule__IntEnumberation__Group_2_1__1__Impl ; + // InternalApplicationConfiguration.g:6761:1: rule__IntEnumberation__Group_2_1__1 : rule__IntEnumberation__Group_2_1__1__Impl ; public final void rule__IntEnumberation__Group_2_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6759:1: ( rule__IntEnumberation__Group_2_1__1__Impl ) - // InternalApplicationConfiguration.g:6760:2: rule__IntEnumberation__Group_2_1__1__Impl + // InternalApplicationConfiguration.g:6765:1: ( rule__IntEnumberation__Group_2_1__1__Impl ) + // InternalApplicationConfiguration.g:6766:2: rule__IntEnumberation__Group_2_1__1__Impl { pushFollow(FOLLOW_2); rule__IntEnumberation__Group_2_1__1__Impl(); @@ -21127,21 +21154,21 @@ public final void rule__IntEnumberation__Group_2_1__1() throws RecognitionExcept // $ANTLR start "rule__IntEnumberation__Group_2_1__1__Impl" - // InternalApplicationConfiguration.g:6766:1: rule__IntEnumberation__Group_2_1__1__Impl : ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) ; + // InternalApplicationConfiguration.g:6772:1: rule__IntEnumberation__Group_2_1__1__Impl : ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) ; public final void rule__IntEnumberation__Group_2_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6770:1: ( ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) ) - // InternalApplicationConfiguration.g:6771:1: ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:6776:1: ( ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) ) + // InternalApplicationConfiguration.g:6777:1: ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) { - // InternalApplicationConfiguration.g:6771:1: ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) - // InternalApplicationConfiguration.g:6772:2: ( rule__IntEnumberation__EntryAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:6777:1: ( ( rule__IntEnumberation__EntryAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:6778:2: ( rule__IntEnumberation__EntryAssignment_2_1_1 ) { before(grammarAccess.getIntEnumberationAccess().getEntryAssignment_2_1_1()); - // InternalApplicationConfiguration.g:6773:2: ( rule__IntEnumberation__EntryAssignment_2_1_1 ) - // InternalApplicationConfiguration.g:6773:3: rule__IntEnumberation__EntryAssignment_2_1_1 + // InternalApplicationConfiguration.g:6779:2: ( rule__IntEnumberation__EntryAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:6779:3: rule__IntEnumberation__EntryAssignment_2_1_1 { pushFollow(FOLLOW_2); rule__IntEnumberation__EntryAssignment_2_1_1(); @@ -21174,14 +21201,14 @@ public final void rule__IntEnumberation__Group_2_1__1__Impl() throws Recognition // $ANTLR start "rule__RealEnumeration__Group__0" - // InternalApplicationConfiguration.g:6782:1: rule__RealEnumeration__Group__0 : rule__RealEnumeration__Group__0__Impl rule__RealEnumeration__Group__1 ; + // InternalApplicationConfiguration.g:6788:1: rule__RealEnumeration__Group__0 : rule__RealEnumeration__Group__0__Impl rule__RealEnumeration__Group__1 ; public final void rule__RealEnumeration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6786:1: ( rule__RealEnumeration__Group__0__Impl rule__RealEnumeration__Group__1 ) - // InternalApplicationConfiguration.g:6787:2: rule__RealEnumeration__Group__0__Impl rule__RealEnumeration__Group__1 + // InternalApplicationConfiguration.g:6792:1: ( rule__RealEnumeration__Group__0__Impl rule__RealEnumeration__Group__1 ) + // InternalApplicationConfiguration.g:6793:2: rule__RealEnumeration__Group__0__Impl rule__RealEnumeration__Group__1 { pushFollow(FOLLOW_33); rule__RealEnumeration__Group__0__Impl(); @@ -21212,21 +21239,21 @@ public final void rule__RealEnumeration__Group__0() throws RecognitionException // $ANTLR start "rule__RealEnumeration__Group__0__Impl" - // InternalApplicationConfiguration.g:6794:1: rule__RealEnumeration__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:6800:1: rule__RealEnumeration__Group__0__Impl : ( () ) ; public final void rule__RealEnumeration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6798:1: ( ( () ) ) - // InternalApplicationConfiguration.g:6799:1: ( () ) + // InternalApplicationConfiguration.g:6804:1: ( ( () ) ) + // InternalApplicationConfiguration.g:6805:1: ( () ) { - // InternalApplicationConfiguration.g:6799:1: ( () ) - // InternalApplicationConfiguration.g:6800:2: () + // InternalApplicationConfiguration.g:6805:1: ( () ) + // InternalApplicationConfiguration.g:6806:2: () { before(grammarAccess.getRealEnumerationAccess().getRealEnumerationAction_0()); - // InternalApplicationConfiguration.g:6801:2: () - // InternalApplicationConfiguration.g:6801:3: + // InternalApplicationConfiguration.g:6807:2: () + // InternalApplicationConfiguration.g:6807:3: { } @@ -21249,14 +21276,14 @@ public final void rule__RealEnumeration__Group__0__Impl() throws RecognitionExce // $ANTLR start "rule__RealEnumeration__Group__1" - // InternalApplicationConfiguration.g:6809:1: rule__RealEnumeration__Group__1 : rule__RealEnumeration__Group__1__Impl rule__RealEnumeration__Group__2 ; + // InternalApplicationConfiguration.g:6815:1: rule__RealEnumeration__Group__1 : rule__RealEnumeration__Group__1__Impl rule__RealEnumeration__Group__2 ; public final void rule__RealEnumeration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6813:1: ( rule__RealEnumeration__Group__1__Impl rule__RealEnumeration__Group__2 ) - // InternalApplicationConfiguration.g:6814:2: rule__RealEnumeration__Group__1__Impl rule__RealEnumeration__Group__2 + // InternalApplicationConfiguration.g:6819:1: ( rule__RealEnumeration__Group__1__Impl rule__RealEnumeration__Group__2 ) + // InternalApplicationConfiguration.g:6820:2: rule__RealEnumeration__Group__1__Impl rule__RealEnumeration__Group__2 { pushFollow(FOLLOW_38); rule__RealEnumeration__Group__1__Impl(); @@ -21287,20 +21314,20 @@ public final void rule__RealEnumeration__Group__1() throws RecognitionException // $ANTLR start "rule__RealEnumeration__Group__1__Impl" - // InternalApplicationConfiguration.g:6821:1: rule__RealEnumeration__Group__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:6827:1: rule__RealEnumeration__Group__1__Impl : ( '{' ) ; public final void rule__RealEnumeration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6825:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:6826:1: ( '{' ) + // InternalApplicationConfiguration.g:6831:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:6832:1: ( '{' ) { - // InternalApplicationConfiguration.g:6826:1: ( '{' ) - // InternalApplicationConfiguration.g:6827:2: '{' + // InternalApplicationConfiguration.g:6832:1: ( '{' ) + // InternalApplicationConfiguration.g:6833:2: '{' { before(grammarAccess.getRealEnumerationAccess().getLeftCurlyBracketKeyword_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getRealEnumerationAccess().getLeftCurlyBracketKeyword_1()); } @@ -21324,14 +21351,14 @@ public final void rule__RealEnumeration__Group__1__Impl() throws RecognitionExce // $ANTLR start "rule__RealEnumeration__Group__2" - // InternalApplicationConfiguration.g:6836:1: rule__RealEnumeration__Group__2 : rule__RealEnumeration__Group__2__Impl rule__RealEnumeration__Group__3 ; + // InternalApplicationConfiguration.g:6842:1: rule__RealEnumeration__Group__2 : rule__RealEnumeration__Group__2__Impl rule__RealEnumeration__Group__3 ; public final void rule__RealEnumeration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6840:1: ( rule__RealEnumeration__Group__2__Impl rule__RealEnumeration__Group__3 ) - // InternalApplicationConfiguration.g:6841:2: rule__RealEnumeration__Group__2__Impl rule__RealEnumeration__Group__3 + // InternalApplicationConfiguration.g:6846:1: ( rule__RealEnumeration__Group__2__Impl rule__RealEnumeration__Group__3 ) + // InternalApplicationConfiguration.g:6847:2: rule__RealEnumeration__Group__2__Impl rule__RealEnumeration__Group__3 { pushFollow(FOLLOW_38); rule__RealEnumeration__Group__2__Impl(); @@ -21362,29 +21389,29 @@ public final void rule__RealEnumeration__Group__2() throws RecognitionException // $ANTLR start "rule__RealEnumeration__Group__2__Impl" - // InternalApplicationConfiguration.g:6848:1: rule__RealEnumeration__Group__2__Impl : ( ( rule__RealEnumeration__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:6854:1: rule__RealEnumeration__Group__2__Impl : ( ( rule__RealEnumeration__Group_2__0 )? ) ; public final void rule__RealEnumeration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6852:1: ( ( ( rule__RealEnumeration__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:6853:1: ( ( rule__RealEnumeration__Group_2__0 )? ) + // InternalApplicationConfiguration.g:6858:1: ( ( ( rule__RealEnumeration__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:6859:1: ( ( rule__RealEnumeration__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:6853:1: ( ( rule__RealEnumeration__Group_2__0 )? ) - // InternalApplicationConfiguration.g:6854:2: ( rule__RealEnumeration__Group_2__0 )? + // InternalApplicationConfiguration.g:6859:1: ( ( rule__RealEnumeration__Group_2__0 )? ) + // InternalApplicationConfiguration.g:6860:2: ( rule__RealEnumeration__Group_2__0 )? { before(grammarAccess.getRealEnumerationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:6855:2: ( rule__RealEnumeration__Group_2__0 )? + // InternalApplicationConfiguration.g:6861:2: ( rule__RealEnumeration__Group_2__0 )? int alt52=2; int LA52_0 = input.LA(1); - if ( (LA52_0==RULE_INT||LA52_0==18) ) { + if ( (LA52_0==RULE_INT||LA52_0==19) ) { alt52=1; } switch (alt52) { case 1 : - // InternalApplicationConfiguration.g:6855:3: rule__RealEnumeration__Group_2__0 + // InternalApplicationConfiguration.g:6861:3: rule__RealEnumeration__Group_2__0 { pushFollow(FOLLOW_2); rule__RealEnumeration__Group_2__0(); @@ -21420,14 +21447,14 @@ public final void rule__RealEnumeration__Group__2__Impl() throws RecognitionExce // $ANTLR start "rule__RealEnumeration__Group__3" - // InternalApplicationConfiguration.g:6863:1: rule__RealEnumeration__Group__3 : rule__RealEnumeration__Group__3__Impl ; + // InternalApplicationConfiguration.g:6869:1: rule__RealEnumeration__Group__3 : rule__RealEnumeration__Group__3__Impl ; public final void rule__RealEnumeration__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6867:1: ( rule__RealEnumeration__Group__3__Impl ) - // InternalApplicationConfiguration.g:6868:2: rule__RealEnumeration__Group__3__Impl + // InternalApplicationConfiguration.g:6873:1: ( rule__RealEnumeration__Group__3__Impl ) + // InternalApplicationConfiguration.g:6874:2: rule__RealEnumeration__Group__3__Impl { pushFollow(FOLLOW_2); rule__RealEnumeration__Group__3__Impl(); @@ -21453,20 +21480,20 @@ public final void rule__RealEnumeration__Group__3() throws RecognitionException // $ANTLR start "rule__RealEnumeration__Group__3__Impl" - // InternalApplicationConfiguration.g:6874:1: rule__RealEnumeration__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:6880:1: rule__RealEnumeration__Group__3__Impl : ( '}' ) ; public final void rule__RealEnumeration__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6878:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:6879:1: ( '}' ) + // InternalApplicationConfiguration.g:6884:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:6885:1: ( '}' ) { - // InternalApplicationConfiguration.g:6879:1: ( '}' ) - // InternalApplicationConfiguration.g:6880:2: '}' + // InternalApplicationConfiguration.g:6885:1: ( '}' ) + // InternalApplicationConfiguration.g:6886:2: '}' { before(grammarAccess.getRealEnumerationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getRealEnumerationAccess().getRightCurlyBracketKeyword_3()); } @@ -21490,14 +21517,14 @@ public final void rule__RealEnumeration__Group__3__Impl() throws RecognitionExce // $ANTLR start "rule__RealEnumeration__Group_2__0" - // InternalApplicationConfiguration.g:6890:1: rule__RealEnumeration__Group_2__0 : rule__RealEnumeration__Group_2__0__Impl rule__RealEnumeration__Group_2__1 ; + // InternalApplicationConfiguration.g:6896:1: rule__RealEnumeration__Group_2__0 : rule__RealEnumeration__Group_2__0__Impl rule__RealEnumeration__Group_2__1 ; public final void rule__RealEnumeration__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6894:1: ( rule__RealEnumeration__Group_2__0__Impl rule__RealEnumeration__Group_2__1 ) - // InternalApplicationConfiguration.g:6895:2: rule__RealEnumeration__Group_2__0__Impl rule__RealEnumeration__Group_2__1 + // InternalApplicationConfiguration.g:6900:1: ( rule__RealEnumeration__Group_2__0__Impl rule__RealEnumeration__Group_2__1 ) + // InternalApplicationConfiguration.g:6901:2: rule__RealEnumeration__Group_2__0__Impl rule__RealEnumeration__Group_2__1 { pushFollow(FOLLOW_23); rule__RealEnumeration__Group_2__0__Impl(); @@ -21528,21 +21555,21 @@ public final void rule__RealEnumeration__Group_2__0() throws RecognitionExceptio // $ANTLR start "rule__RealEnumeration__Group_2__0__Impl" - // InternalApplicationConfiguration.g:6902:1: rule__RealEnumeration__Group_2__0__Impl : ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) ; + // InternalApplicationConfiguration.g:6908:1: rule__RealEnumeration__Group_2__0__Impl : ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) ; public final void rule__RealEnumeration__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6906:1: ( ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) ) - // InternalApplicationConfiguration.g:6907:1: ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:6912:1: ( ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) ) + // InternalApplicationConfiguration.g:6913:1: ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) { - // InternalApplicationConfiguration.g:6907:1: ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) - // InternalApplicationConfiguration.g:6908:2: ( rule__RealEnumeration__EntryAssignment_2_0 ) + // InternalApplicationConfiguration.g:6913:1: ( ( rule__RealEnumeration__EntryAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:6914:2: ( rule__RealEnumeration__EntryAssignment_2_0 ) { before(grammarAccess.getRealEnumerationAccess().getEntryAssignment_2_0()); - // InternalApplicationConfiguration.g:6909:2: ( rule__RealEnumeration__EntryAssignment_2_0 ) - // InternalApplicationConfiguration.g:6909:3: rule__RealEnumeration__EntryAssignment_2_0 + // InternalApplicationConfiguration.g:6915:2: ( rule__RealEnumeration__EntryAssignment_2_0 ) + // InternalApplicationConfiguration.g:6915:3: rule__RealEnumeration__EntryAssignment_2_0 { pushFollow(FOLLOW_2); rule__RealEnumeration__EntryAssignment_2_0(); @@ -21575,14 +21602,14 @@ public final void rule__RealEnumeration__Group_2__0__Impl() throws RecognitionEx // $ANTLR start "rule__RealEnumeration__Group_2__1" - // InternalApplicationConfiguration.g:6917:1: rule__RealEnumeration__Group_2__1 : rule__RealEnumeration__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:6923:1: rule__RealEnumeration__Group_2__1 : rule__RealEnumeration__Group_2__1__Impl ; public final void rule__RealEnumeration__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6921:1: ( rule__RealEnumeration__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:6922:2: rule__RealEnumeration__Group_2__1__Impl + // InternalApplicationConfiguration.g:6927:1: ( rule__RealEnumeration__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:6928:2: rule__RealEnumeration__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__RealEnumeration__Group_2__1__Impl(); @@ -21608,33 +21635,33 @@ public final void rule__RealEnumeration__Group_2__1() throws RecognitionExceptio // $ANTLR start "rule__RealEnumeration__Group_2__1__Impl" - // InternalApplicationConfiguration.g:6928:1: rule__RealEnumeration__Group_2__1__Impl : ( ( rule__RealEnumeration__Group_2_1__0 )* ) ; + // InternalApplicationConfiguration.g:6934:1: rule__RealEnumeration__Group_2__1__Impl : ( ( rule__RealEnumeration__Group_2_1__0 )* ) ; public final void rule__RealEnumeration__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6932:1: ( ( ( rule__RealEnumeration__Group_2_1__0 )* ) ) - // InternalApplicationConfiguration.g:6933:1: ( ( rule__RealEnumeration__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:6938:1: ( ( ( rule__RealEnumeration__Group_2_1__0 )* ) ) + // InternalApplicationConfiguration.g:6939:1: ( ( rule__RealEnumeration__Group_2_1__0 )* ) { - // InternalApplicationConfiguration.g:6933:1: ( ( rule__RealEnumeration__Group_2_1__0 )* ) - // InternalApplicationConfiguration.g:6934:2: ( rule__RealEnumeration__Group_2_1__0 )* + // InternalApplicationConfiguration.g:6939:1: ( ( rule__RealEnumeration__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:6940:2: ( rule__RealEnumeration__Group_2_1__0 )* { before(grammarAccess.getRealEnumerationAccess().getGroup_2_1()); - // InternalApplicationConfiguration.g:6935:2: ( rule__RealEnumeration__Group_2_1__0 )* + // InternalApplicationConfiguration.g:6941:2: ( rule__RealEnumeration__Group_2_1__0 )* loop53: do { int alt53=2; int LA53_0 = input.LA(1); - if ( (LA53_0==26) ) { + if ( (LA53_0==27) ) { alt53=1; } switch (alt53) { case 1 : - // InternalApplicationConfiguration.g:6935:3: rule__RealEnumeration__Group_2_1__0 + // InternalApplicationConfiguration.g:6941:3: rule__RealEnumeration__Group_2_1__0 { pushFollow(FOLLOW_16); rule__RealEnumeration__Group_2_1__0(); @@ -21673,14 +21700,14 @@ public final void rule__RealEnumeration__Group_2__1__Impl() throws RecognitionEx // $ANTLR start "rule__RealEnumeration__Group_2_1__0" - // InternalApplicationConfiguration.g:6944:1: rule__RealEnumeration__Group_2_1__0 : rule__RealEnumeration__Group_2_1__0__Impl rule__RealEnumeration__Group_2_1__1 ; + // InternalApplicationConfiguration.g:6950:1: rule__RealEnumeration__Group_2_1__0 : rule__RealEnumeration__Group_2_1__0__Impl rule__RealEnumeration__Group_2_1__1 ; public final void rule__RealEnumeration__Group_2_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6948:1: ( rule__RealEnumeration__Group_2_1__0__Impl rule__RealEnumeration__Group_2_1__1 ) - // InternalApplicationConfiguration.g:6949:2: rule__RealEnumeration__Group_2_1__0__Impl rule__RealEnumeration__Group_2_1__1 + // InternalApplicationConfiguration.g:6954:1: ( rule__RealEnumeration__Group_2_1__0__Impl rule__RealEnumeration__Group_2_1__1 ) + // InternalApplicationConfiguration.g:6955:2: rule__RealEnumeration__Group_2_1__0__Impl rule__RealEnumeration__Group_2_1__1 { pushFollow(FOLLOW_39); rule__RealEnumeration__Group_2_1__0__Impl(); @@ -21711,20 +21738,20 @@ public final void rule__RealEnumeration__Group_2_1__0() throws RecognitionExcept // $ANTLR start "rule__RealEnumeration__Group_2_1__0__Impl" - // InternalApplicationConfiguration.g:6956:1: rule__RealEnumeration__Group_2_1__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:6962:1: rule__RealEnumeration__Group_2_1__0__Impl : ( ',' ) ; public final void rule__RealEnumeration__Group_2_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6960:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:6961:1: ( ',' ) + // InternalApplicationConfiguration.g:6966:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:6967:1: ( ',' ) { - // InternalApplicationConfiguration.g:6961:1: ( ',' ) - // InternalApplicationConfiguration.g:6962:2: ',' + // InternalApplicationConfiguration.g:6967:1: ( ',' ) + // InternalApplicationConfiguration.g:6968:2: ',' { before(grammarAccess.getRealEnumerationAccess().getCommaKeyword_2_1_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getRealEnumerationAccess().getCommaKeyword_2_1_0()); } @@ -21748,14 +21775,14 @@ public final void rule__RealEnumeration__Group_2_1__0__Impl() throws Recognition // $ANTLR start "rule__RealEnumeration__Group_2_1__1" - // InternalApplicationConfiguration.g:6971:1: rule__RealEnumeration__Group_2_1__1 : rule__RealEnumeration__Group_2_1__1__Impl ; + // InternalApplicationConfiguration.g:6977:1: rule__RealEnumeration__Group_2_1__1 : rule__RealEnumeration__Group_2_1__1__Impl ; public final void rule__RealEnumeration__Group_2_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6975:1: ( rule__RealEnumeration__Group_2_1__1__Impl ) - // InternalApplicationConfiguration.g:6976:2: rule__RealEnumeration__Group_2_1__1__Impl + // InternalApplicationConfiguration.g:6981:1: ( rule__RealEnumeration__Group_2_1__1__Impl ) + // InternalApplicationConfiguration.g:6982:2: rule__RealEnumeration__Group_2_1__1__Impl { pushFollow(FOLLOW_2); rule__RealEnumeration__Group_2_1__1__Impl(); @@ -21781,21 +21808,21 @@ public final void rule__RealEnumeration__Group_2_1__1() throws RecognitionExcept // $ANTLR start "rule__RealEnumeration__Group_2_1__1__Impl" - // InternalApplicationConfiguration.g:6982:1: rule__RealEnumeration__Group_2_1__1__Impl : ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) ; + // InternalApplicationConfiguration.g:6988:1: rule__RealEnumeration__Group_2_1__1__Impl : ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) ; public final void rule__RealEnumeration__Group_2_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:6986:1: ( ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) ) - // InternalApplicationConfiguration.g:6987:1: ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:6992:1: ( ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) ) + // InternalApplicationConfiguration.g:6993:1: ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) { - // InternalApplicationConfiguration.g:6987:1: ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) - // InternalApplicationConfiguration.g:6988:2: ( rule__RealEnumeration__EntryAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:6993:1: ( ( rule__RealEnumeration__EntryAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:6994:2: ( rule__RealEnumeration__EntryAssignment_2_1_1 ) { before(grammarAccess.getRealEnumerationAccess().getEntryAssignment_2_1_1()); - // InternalApplicationConfiguration.g:6989:2: ( rule__RealEnumeration__EntryAssignment_2_1_1 ) - // InternalApplicationConfiguration.g:6989:3: rule__RealEnumeration__EntryAssignment_2_1_1 + // InternalApplicationConfiguration.g:6995:2: ( rule__RealEnumeration__EntryAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:6995:3: rule__RealEnumeration__EntryAssignment_2_1_1 { pushFollow(FOLLOW_2); rule__RealEnumeration__EntryAssignment_2_1_1(); @@ -21828,14 +21855,14 @@ public final void rule__RealEnumeration__Group_2_1__1__Impl() throws Recognition // $ANTLR start "rule__StringEnumeration__Group__0" - // InternalApplicationConfiguration.g:6998:1: rule__StringEnumeration__Group__0 : rule__StringEnumeration__Group__0__Impl rule__StringEnumeration__Group__1 ; + // InternalApplicationConfiguration.g:7004:1: rule__StringEnumeration__Group__0 : rule__StringEnumeration__Group__0__Impl rule__StringEnumeration__Group__1 ; public final void rule__StringEnumeration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7002:1: ( rule__StringEnumeration__Group__0__Impl rule__StringEnumeration__Group__1 ) - // InternalApplicationConfiguration.g:7003:2: rule__StringEnumeration__Group__0__Impl rule__StringEnumeration__Group__1 + // InternalApplicationConfiguration.g:7008:1: ( rule__StringEnumeration__Group__0__Impl rule__StringEnumeration__Group__1 ) + // InternalApplicationConfiguration.g:7009:2: rule__StringEnumeration__Group__0__Impl rule__StringEnumeration__Group__1 { pushFollow(FOLLOW_33); rule__StringEnumeration__Group__0__Impl(); @@ -21866,21 +21893,21 @@ public final void rule__StringEnumeration__Group__0() throws RecognitionExceptio // $ANTLR start "rule__StringEnumeration__Group__0__Impl" - // InternalApplicationConfiguration.g:7010:1: rule__StringEnumeration__Group__0__Impl : ( () ) ; + // InternalApplicationConfiguration.g:7016:1: rule__StringEnumeration__Group__0__Impl : ( () ) ; public final void rule__StringEnumeration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7014:1: ( ( () ) ) - // InternalApplicationConfiguration.g:7015:1: ( () ) + // InternalApplicationConfiguration.g:7020:1: ( ( () ) ) + // InternalApplicationConfiguration.g:7021:1: ( () ) { - // InternalApplicationConfiguration.g:7015:1: ( () ) - // InternalApplicationConfiguration.g:7016:2: () + // InternalApplicationConfiguration.g:7021:1: ( () ) + // InternalApplicationConfiguration.g:7022:2: () { before(grammarAccess.getStringEnumerationAccess().getStringEnumerationAction_0()); - // InternalApplicationConfiguration.g:7017:2: () - // InternalApplicationConfiguration.g:7017:3: + // InternalApplicationConfiguration.g:7023:2: () + // InternalApplicationConfiguration.g:7023:3: { } @@ -21903,14 +21930,14 @@ public final void rule__StringEnumeration__Group__0__Impl() throws RecognitionEx // $ANTLR start "rule__StringEnumeration__Group__1" - // InternalApplicationConfiguration.g:7025:1: rule__StringEnumeration__Group__1 : rule__StringEnumeration__Group__1__Impl rule__StringEnumeration__Group__2 ; + // InternalApplicationConfiguration.g:7031:1: rule__StringEnumeration__Group__1 : rule__StringEnumeration__Group__1__Impl rule__StringEnumeration__Group__2 ; public final void rule__StringEnumeration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7029:1: ( rule__StringEnumeration__Group__1__Impl rule__StringEnumeration__Group__2 ) - // InternalApplicationConfiguration.g:7030:2: rule__StringEnumeration__Group__1__Impl rule__StringEnumeration__Group__2 + // InternalApplicationConfiguration.g:7035:1: ( rule__StringEnumeration__Group__1__Impl rule__StringEnumeration__Group__2 ) + // InternalApplicationConfiguration.g:7036:2: rule__StringEnumeration__Group__1__Impl rule__StringEnumeration__Group__2 { pushFollow(FOLLOW_40); rule__StringEnumeration__Group__1__Impl(); @@ -21941,20 +21968,20 @@ public final void rule__StringEnumeration__Group__1() throws RecognitionExceptio // $ANTLR start "rule__StringEnumeration__Group__1__Impl" - // InternalApplicationConfiguration.g:7037:1: rule__StringEnumeration__Group__1__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:7043:1: rule__StringEnumeration__Group__1__Impl : ( '{' ) ; public final void rule__StringEnumeration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7041:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:7042:1: ( '{' ) + // InternalApplicationConfiguration.g:7047:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:7048:1: ( '{' ) { - // InternalApplicationConfiguration.g:7042:1: ( '{' ) - // InternalApplicationConfiguration.g:7043:2: '{' + // InternalApplicationConfiguration.g:7048:1: ( '{' ) + // InternalApplicationConfiguration.g:7049:2: '{' { before(grammarAccess.getStringEnumerationAccess().getLeftCurlyBracketKeyword_1()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getStringEnumerationAccess().getLeftCurlyBracketKeyword_1()); } @@ -21978,14 +22005,14 @@ public final void rule__StringEnumeration__Group__1__Impl() throws RecognitionEx // $ANTLR start "rule__StringEnumeration__Group__2" - // InternalApplicationConfiguration.g:7052:1: rule__StringEnumeration__Group__2 : rule__StringEnumeration__Group__2__Impl rule__StringEnumeration__Group__3 ; + // InternalApplicationConfiguration.g:7058:1: rule__StringEnumeration__Group__2 : rule__StringEnumeration__Group__2__Impl rule__StringEnumeration__Group__3 ; public final void rule__StringEnumeration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7056:1: ( rule__StringEnumeration__Group__2__Impl rule__StringEnumeration__Group__3 ) - // InternalApplicationConfiguration.g:7057:2: rule__StringEnumeration__Group__2__Impl rule__StringEnumeration__Group__3 + // InternalApplicationConfiguration.g:7062:1: ( rule__StringEnumeration__Group__2__Impl rule__StringEnumeration__Group__3 ) + // InternalApplicationConfiguration.g:7063:2: rule__StringEnumeration__Group__2__Impl rule__StringEnumeration__Group__3 { pushFollow(FOLLOW_40); rule__StringEnumeration__Group__2__Impl(); @@ -22016,20 +22043,20 @@ public final void rule__StringEnumeration__Group__2() throws RecognitionExceptio // $ANTLR start "rule__StringEnumeration__Group__2__Impl" - // InternalApplicationConfiguration.g:7064:1: rule__StringEnumeration__Group__2__Impl : ( ( rule__StringEnumeration__Group_2__0 )? ) ; + // InternalApplicationConfiguration.g:7070:1: rule__StringEnumeration__Group__2__Impl : ( ( rule__StringEnumeration__Group_2__0 )? ) ; public final void rule__StringEnumeration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7068:1: ( ( ( rule__StringEnumeration__Group_2__0 )? ) ) - // InternalApplicationConfiguration.g:7069:1: ( ( rule__StringEnumeration__Group_2__0 )? ) + // InternalApplicationConfiguration.g:7074:1: ( ( ( rule__StringEnumeration__Group_2__0 )? ) ) + // InternalApplicationConfiguration.g:7075:1: ( ( rule__StringEnumeration__Group_2__0 )? ) { - // InternalApplicationConfiguration.g:7069:1: ( ( rule__StringEnumeration__Group_2__0 )? ) - // InternalApplicationConfiguration.g:7070:2: ( rule__StringEnumeration__Group_2__0 )? + // InternalApplicationConfiguration.g:7075:1: ( ( rule__StringEnumeration__Group_2__0 )? ) + // InternalApplicationConfiguration.g:7076:2: ( rule__StringEnumeration__Group_2__0 )? { before(grammarAccess.getStringEnumerationAccess().getGroup_2()); - // InternalApplicationConfiguration.g:7071:2: ( rule__StringEnumeration__Group_2__0 )? + // InternalApplicationConfiguration.g:7077:2: ( rule__StringEnumeration__Group_2__0 )? int alt54=2; int LA54_0 = input.LA(1); @@ -22038,7 +22065,7 @@ public final void rule__StringEnumeration__Group__2__Impl() throws RecognitionEx } switch (alt54) { case 1 : - // InternalApplicationConfiguration.g:7071:3: rule__StringEnumeration__Group_2__0 + // InternalApplicationConfiguration.g:7077:3: rule__StringEnumeration__Group_2__0 { pushFollow(FOLLOW_2); rule__StringEnumeration__Group_2__0(); @@ -22074,14 +22101,14 @@ public final void rule__StringEnumeration__Group__2__Impl() throws RecognitionEx // $ANTLR start "rule__StringEnumeration__Group__3" - // InternalApplicationConfiguration.g:7079:1: rule__StringEnumeration__Group__3 : rule__StringEnumeration__Group__3__Impl ; + // InternalApplicationConfiguration.g:7085:1: rule__StringEnumeration__Group__3 : rule__StringEnumeration__Group__3__Impl ; public final void rule__StringEnumeration__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7083:1: ( rule__StringEnumeration__Group__3__Impl ) - // InternalApplicationConfiguration.g:7084:2: rule__StringEnumeration__Group__3__Impl + // InternalApplicationConfiguration.g:7089:1: ( rule__StringEnumeration__Group__3__Impl ) + // InternalApplicationConfiguration.g:7090:2: rule__StringEnumeration__Group__3__Impl { pushFollow(FOLLOW_2); rule__StringEnumeration__Group__3__Impl(); @@ -22107,20 +22134,20 @@ public final void rule__StringEnumeration__Group__3() throws RecognitionExceptio // $ANTLR start "rule__StringEnumeration__Group__3__Impl" - // InternalApplicationConfiguration.g:7090:1: rule__StringEnumeration__Group__3__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:7096:1: rule__StringEnumeration__Group__3__Impl : ( '}' ) ; public final void rule__StringEnumeration__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7094:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:7095:1: ( '}' ) + // InternalApplicationConfiguration.g:7100:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:7101:1: ( '}' ) { - // InternalApplicationConfiguration.g:7095:1: ( '}' ) - // InternalApplicationConfiguration.g:7096:2: '}' + // InternalApplicationConfiguration.g:7101:1: ( '}' ) + // InternalApplicationConfiguration.g:7102:2: '}' { before(grammarAccess.getStringEnumerationAccess().getRightCurlyBracketKeyword_3()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getStringEnumerationAccess().getRightCurlyBracketKeyword_3()); } @@ -22144,14 +22171,14 @@ public final void rule__StringEnumeration__Group__3__Impl() throws RecognitionEx // $ANTLR start "rule__StringEnumeration__Group_2__0" - // InternalApplicationConfiguration.g:7106:1: rule__StringEnumeration__Group_2__0 : rule__StringEnumeration__Group_2__0__Impl rule__StringEnumeration__Group_2__1 ; + // InternalApplicationConfiguration.g:7112:1: rule__StringEnumeration__Group_2__0 : rule__StringEnumeration__Group_2__0__Impl rule__StringEnumeration__Group_2__1 ; public final void rule__StringEnumeration__Group_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7110:1: ( rule__StringEnumeration__Group_2__0__Impl rule__StringEnumeration__Group_2__1 ) - // InternalApplicationConfiguration.g:7111:2: rule__StringEnumeration__Group_2__0__Impl rule__StringEnumeration__Group_2__1 + // InternalApplicationConfiguration.g:7116:1: ( rule__StringEnumeration__Group_2__0__Impl rule__StringEnumeration__Group_2__1 ) + // InternalApplicationConfiguration.g:7117:2: rule__StringEnumeration__Group_2__0__Impl rule__StringEnumeration__Group_2__1 { pushFollow(FOLLOW_23); rule__StringEnumeration__Group_2__0__Impl(); @@ -22182,21 +22209,21 @@ public final void rule__StringEnumeration__Group_2__0() throws RecognitionExcept // $ANTLR start "rule__StringEnumeration__Group_2__0__Impl" - // InternalApplicationConfiguration.g:7118:1: rule__StringEnumeration__Group_2__0__Impl : ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) ; + // InternalApplicationConfiguration.g:7124:1: rule__StringEnumeration__Group_2__0__Impl : ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) ; public final void rule__StringEnumeration__Group_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7122:1: ( ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) ) - // InternalApplicationConfiguration.g:7123:1: ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:7128:1: ( ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) ) + // InternalApplicationConfiguration.g:7129:1: ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) { - // InternalApplicationConfiguration.g:7123:1: ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) - // InternalApplicationConfiguration.g:7124:2: ( rule__StringEnumeration__EntryAssignment_2_0 ) + // InternalApplicationConfiguration.g:7129:1: ( ( rule__StringEnumeration__EntryAssignment_2_0 ) ) + // InternalApplicationConfiguration.g:7130:2: ( rule__StringEnumeration__EntryAssignment_2_0 ) { before(grammarAccess.getStringEnumerationAccess().getEntryAssignment_2_0()); - // InternalApplicationConfiguration.g:7125:2: ( rule__StringEnumeration__EntryAssignment_2_0 ) - // InternalApplicationConfiguration.g:7125:3: rule__StringEnumeration__EntryAssignment_2_0 + // InternalApplicationConfiguration.g:7131:2: ( rule__StringEnumeration__EntryAssignment_2_0 ) + // InternalApplicationConfiguration.g:7131:3: rule__StringEnumeration__EntryAssignment_2_0 { pushFollow(FOLLOW_2); rule__StringEnumeration__EntryAssignment_2_0(); @@ -22229,14 +22256,14 @@ public final void rule__StringEnumeration__Group_2__0__Impl() throws Recognition // $ANTLR start "rule__StringEnumeration__Group_2__1" - // InternalApplicationConfiguration.g:7133:1: rule__StringEnumeration__Group_2__1 : rule__StringEnumeration__Group_2__1__Impl ; + // InternalApplicationConfiguration.g:7139:1: rule__StringEnumeration__Group_2__1 : rule__StringEnumeration__Group_2__1__Impl ; public final void rule__StringEnumeration__Group_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7137:1: ( rule__StringEnumeration__Group_2__1__Impl ) - // InternalApplicationConfiguration.g:7138:2: rule__StringEnumeration__Group_2__1__Impl + // InternalApplicationConfiguration.g:7143:1: ( rule__StringEnumeration__Group_2__1__Impl ) + // InternalApplicationConfiguration.g:7144:2: rule__StringEnumeration__Group_2__1__Impl { pushFollow(FOLLOW_2); rule__StringEnumeration__Group_2__1__Impl(); @@ -22262,33 +22289,33 @@ public final void rule__StringEnumeration__Group_2__1() throws RecognitionExcept // $ANTLR start "rule__StringEnumeration__Group_2__1__Impl" - // InternalApplicationConfiguration.g:7144:1: rule__StringEnumeration__Group_2__1__Impl : ( ( rule__StringEnumeration__Group_2_1__0 )* ) ; + // InternalApplicationConfiguration.g:7150:1: rule__StringEnumeration__Group_2__1__Impl : ( ( rule__StringEnumeration__Group_2_1__0 )* ) ; public final void rule__StringEnumeration__Group_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7148:1: ( ( ( rule__StringEnumeration__Group_2_1__0 )* ) ) - // InternalApplicationConfiguration.g:7149:1: ( ( rule__StringEnumeration__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:7154:1: ( ( ( rule__StringEnumeration__Group_2_1__0 )* ) ) + // InternalApplicationConfiguration.g:7155:1: ( ( rule__StringEnumeration__Group_2_1__0 )* ) { - // InternalApplicationConfiguration.g:7149:1: ( ( rule__StringEnumeration__Group_2_1__0 )* ) - // InternalApplicationConfiguration.g:7150:2: ( rule__StringEnumeration__Group_2_1__0 )* + // InternalApplicationConfiguration.g:7155:1: ( ( rule__StringEnumeration__Group_2_1__0 )* ) + // InternalApplicationConfiguration.g:7156:2: ( rule__StringEnumeration__Group_2_1__0 )* { before(grammarAccess.getStringEnumerationAccess().getGroup_2_1()); - // InternalApplicationConfiguration.g:7151:2: ( rule__StringEnumeration__Group_2_1__0 )* + // InternalApplicationConfiguration.g:7157:2: ( rule__StringEnumeration__Group_2_1__0 )* loop55: do { int alt55=2; int LA55_0 = input.LA(1); - if ( (LA55_0==26) ) { + if ( (LA55_0==27) ) { alt55=1; } switch (alt55) { case 1 : - // InternalApplicationConfiguration.g:7151:3: rule__StringEnumeration__Group_2_1__0 + // InternalApplicationConfiguration.g:7157:3: rule__StringEnumeration__Group_2_1__0 { pushFollow(FOLLOW_16); rule__StringEnumeration__Group_2_1__0(); @@ -22327,14 +22354,14 @@ public final void rule__StringEnumeration__Group_2__1__Impl() throws Recognition // $ANTLR start "rule__StringEnumeration__Group_2_1__0" - // InternalApplicationConfiguration.g:7160:1: rule__StringEnumeration__Group_2_1__0 : rule__StringEnumeration__Group_2_1__0__Impl rule__StringEnumeration__Group_2_1__1 ; + // InternalApplicationConfiguration.g:7166:1: rule__StringEnumeration__Group_2_1__0 : rule__StringEnumeration__Group_2_1__0__Impl rule__StringEnumeration__Group_2_1__1 ; public final void rule__StringEnumeration__Group_2_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7164:1: ( rule__StringEnumeration__Group_2_1__0__Impl rule__StringEnumeration__Group_2_1__1 ) - // InternalApplicationConfiguration.g:7165:2: rule__StringEnumeration__Group_2_1__0__Impl rule__StringEnumeration__Group_2_1__1 + // InternalApplicationConfiguration.g:7170:1: ( rule__StringEnumeration__Group_2_1__0__Impl rule__StringEnumeration__Group_2_1__1 ) + // InternalApplicationConfiguration.g:7171:2: rule__StringEnumeration__Group_2_1__0__Impl rule__StringEnumeration__Group_2_1__1 { pushFollow(FOLLOW_11); rule__StringEnumeration__Group_2_1__0__Impl(); @@ -22365,20 +22392,20 @@ public final void rule__StringEnumeration__Group_2_1__0() throws RecognitionExce // $ANTLR start "rule__StringEnumeration__Group_2_1__0__Impl" - // InternalApplicationConfiguration.g:7172:1: rule__StringEnumeration__Group_2_1__0__Impl : ( ',' ) ; + // InternalApplicationConfiguration.g:7178:1: rule__StringEnumeration__Group_2_1__0__Impl : ( ',' ) ; public final void rule__StringEnumeration__Group_2_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7176:1: ( ( ',' ) ) - // InternalApplicationConfiguration.g:7177:1: ( ',' ) + // InternalApplicationConfiguration.g:7182:1: ( ( ',' ) ) + // InternalApplicationConfiguration.g:7183:1: ( ',' ) { - // InternalApplicationConfiguration.g:7177:1: ( ',' ) - // InternalApplicationConfiguration.g:7178:2: ',' + // InternalApplicationConfiguration.g:7183:1: ( ',' ) + // InternalApplicationConfiguration.g:7184:2: ',' { before(grammarAccess.getStringEnumerationAccess().getCommaKeyword_2_1_0()); - match(input,26,FOLLOW_2); + match(input,27,FOLLOW_2); after(grammarAccess.getStringEnumerationAccess().getCommaKeyword_2_1_0()); } @@ -22402,14 +22429,14 @@ public final void rule__StringEnumeration__Group_2_1__0__Impl() throws Recogniti // $ANTLR start "rule__StringEnumeration__Group_2_1__1" - // InternalApplicationConfiguration.g:7187:1: rule__StringEnumeration__Group_2_1__1 : rule__StringEnumeration__Group_2_1__1__Impl ; + // InternalApplicationConfiguration.g:7193:1: rule__StringEnumeration__Group_2_1__1 : rule__StringEnumeration__Group_2_1__1__Impl ; public final void rule__StringEnumeration__Group_2_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7191:1: ( rule__StringEnumeration__Group_2_1__1__Impl ) - // InternalApplicationConfiguration.g:7192:2: rule__StringEnumeration__Group_2_1__1__Impl + // InternalApplicationConfiguration.g:7197:1: ( rule__StringEnumeration__Group_2_1__1__Impl ) + // InternalApplicationConfiguration.g:7198:2: rule__StringEnumeration__Group_2_1__1__Impl { pushFollow(FOLLOW_2); rule__StringEnumeration__Group_2_1__1__Impl(); @@ -22435,21 +22462,21 @@ public final void rule__StringEnumeration__Group_2_1__1() throws RecognitionExce // $ANTLR start "rule__StringEnumeration__Group_2_1__1__Impl" - // InternalApplicationConfiguration.g:7198:1: rule__StringEnumeration__Group_2_1__1__Impl : ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) ; + // InternalApplicationConfiguration.g:7204:1: rule__StringEnumeration__Group_2_1__1__Impl : ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) ; public final void rule__StringEnumeration__Group_2_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7202:1: ( ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) ) - // InternalApplicationConfiguration.g:7203:1: ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:7208:1: ( ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) ) + // InternalApplicationConfiguration.g:7209:1: ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) { - // InternalApplicationConfiguration.g:7203:1: ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) - // InternalApplicationConfiguration.g:7204:2: ( rule__StringEnumeration__EntryAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:7209:1: ( ( rule__StringEnumeration__EntryAssignment_2_1_1 ) ) + // InternalApplicationConfiguration.g:7210:2: ( rule__StringEnumeration__EntryAssignment_2_1_1 ) { before(grammarAccess.getStringEnumerationAccess().getEntryAssignment_2_1_1()); - // InternalApplicationConfiguration.g:7205:2: ( rule__StringEnumeration__EntryAssignment_2_1_1 ) - // InternalApplicationConfiguration.g:7205:3: rule__StringEnumeration__EntryAssignment_2_1_1 + // InternalApplicationConfiguration.g:7211:2: ( rule__StringEnumeration__EntryAssignment_2_1_1 ) + // InternalApplicationConfiguration.g:7211:3: rule__StringEnumeration__EntryAssignment_2_1_1 { pushFollow(FOLLOW_2); rule__StringEnumeration__EntryAssignment_2_1_1(); @@ -22482,14 +22509,14 @@ public final void rule__StringEnumeration__Group_2_1__1__Impl() throws Recogniti // $ANTLR start "rule__ScopeDeclaration__Group__0" - // InternalApplicationConfiguration.g:7214:1: rule__ScopeDeclaration__Group__0 : rule__ScopeDeclaration__Group__0__Impl rule__ScopeDeclaration__Group__1 ; + // InternalApplicationConfiguration.g:7220:1: rule__ScopeDeclaration__Group__0 : rule__ScopeDeclaration__Group__0__Impl rule__ScopeDeclaration__Group__1 ; public final void rule__ScopeDeclaration__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7218:1: ( rule__ScopeDeclaration__Group__0__Impl rule__ScopeDeclaration__Group__1 ) - // InternalApplicationConfiguration.g:7219:2: rule__ScopeDeclaration__Group__0__Impl rule__ScopeDeclaration__Group__1 + // InternalApplicationConfiguration.g:7224:1: ( rule__ScopeDeclaration__Group__0__Impl rule__ScopeDeclaration__Group__1 ) + // InternalApplicationConfiguration.g:7225:2: rule__ScopeDeclaration__Group__0__Impl rule__ScopeDeclaration__Group__1 { pushFollow(FOLLOW_8); rule__ScopeDeclaration__Group__0__Impl(); @@ -22520,20 +22547,20 @@ public final void rule__ScopeDeclaration__Group__0() throws RecognitionException // $ANTLR start "rule__ScopeDeclaration__Group__0__Impl" - // InternalApplicationConfiguration.g:7226:1: rule__ScopeDeclaration__Group__0__Impl : ( 'scope' ) ; + // InternalApplicationConfiguration.g:7232:1: rule__ScopeDeclaration__Group__0__Impl : ( 'scope' ) ; public final void rule__ScopeDeclaration__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7230:1: ( ( 'scope' ) ) - // InternalApplicationConfiguration.g:7231:1: ( 'scope' ) + // InternalApplicationConfiguration.g:7236:1: ( ( 'scope' ) ) + // InternalApplicationConfiguration.g:7237:1: ( 'scope' ) { - // InternalApplicationConfiguration.g:7231:1: ( 'scope' ) - // InternalApplicationConfiguration.g:7232:2: 'scope' + // InternalApplicationConfiguration.g:7237:1: ( 'scope' ) + // InternalApplicationConfiguration.g:7238:2: 'scope' { before(grammarAccess.getScopeDeclarationAccess().getScopeKeyword_0()); - match(input,46,FOLLOW_2); + match(input,47,FOLLOW_2); after(grammarAccess.getScopeDeclarationAccess().getScopeKeyword_0()); } @@ -22557,14 +22584,14 @@ public final void rule__ScopeDeclaration__Group__0__Impl() throws RecognitionExc // $ANTLR start "rule__ScopeDeclaration__Group__1" - // InternalApplicationConfiguration.g:7241:1: rule__ScopeDeclaration__Group__1 : rule__ScopeDeclaration__Group__1__Impl rule__ScopeDeclaration__Group__2 ; + // InternalApplicationConfiguration.g:7247:1: rule__ScopeDeclaration__Group__1 : rule__ScopeDeclaration__Group__1__Impl rule__ScopeDeclaration__Group__2 ; public final void rule__ScopeDeclaration__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7245:1: ( rule__ScopeDeclaration__Group__1__Impl rule__ScopeDeclaration__Group__2 ) - // InternalApplicationConfiguration.g:7246:2: rule__ScopeDeclaration__Group__1__Impl rule__ScopeDeclaration__Group__2 + // InternalApplicationConfiguration.g:7251:1: ( rule__ScopeDeclaration__Group__1__Impl rule__ScopeDeclaration__Group__2 ) + // InternalApplicationConfiguration.g:7252:2: rule__ScopeDeclaration__Group__1__Impl rule__ScopeDeclaration__Group__2 { pushFollow(FOLLOW_18); rule__ScopeDeclaration__Group__1__Impl(); @@ -22595,21 +22622,21 @@ public final void rule__ScopeDeclaration__Group__1() throws RecognitionException // $ANTLR start "rule__ScopeDeclaration__Group__1__Impl" - // InternalApplicationConfiguration.g:7253:1: rule__ScopeDeclaration__Group__1__Impl : ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) ; + // InternalApplicationConfiguration.g:7259:1: rule__ScopeDeclaration__Group__1__Impl : ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) ; public final void rule__ScopeDeclaration__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7257:1: ( ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) ) - // InternalApplicationConfiguration.g:7258:1: ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:7263:1: ( ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) ) + // InternalApplicationConfiguration.g:7264:1: ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) { - // InternalApplicationConfiguration.g:7258:1: ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) - // InternalApplicationConfiguration.g:7259:2: ( rule__ScopeDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:7264:1: ( ( rule__ScopeDeclaration__NameAssignment_1 ) ) + // InternalApplicationConfiguration.g:7265:2: ( rule__ScopeDeclaration__NameAssignment_1 ) { before(grammarAccess.getScopeDeclarationAccess().getNameAssignment_1()); - // InternalApplicationConfiguration.g:7260:2: ( rule__ScopeDeclaration__NameAssignment_1 ) - // InternalApplicationConfiguration.g:7260:3: rule__ScopeDeclaration__NameAssignment_1 + // InternalApplicationConfiguration.g:7266:2: ( rule__ScopeDeclaration__NameAssignment_1 ) + // InternalApplicationConfiguration.g:7266:3: rule__ScopeDeclaration__NameAssignment_1 { pushFollow(FOLLOW_2); rule__ScopeDeclaration__NameAssignment_1(); @@ -22642,14 +22669,14 @@ public final void rule__ScopeDeclaration__Group__1__Impl() throws RecognitionExc // $ANTLR start "rule__ScopeDeclaration__Group__2" - // InternalApplicationConfiguration.g:7268:1: rule__ScopeDeclaration__Group__2 : rule__ScopeDeclaration__Group__2__Impl ; + // InternalApplicationConfiguration.g:7274:1: rule__ScopeDeclaration__Group__2 : rule__ScopeDeclaration__Group__2__Impl ; public final void rule__ScopeDeclaration__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7272:1: ( rule__ScopeDeclaration__Group__2__Impl ) - // InternalApplicationConfiguration.g:7273:2: rule__ScopeDeclaration__Group__2__Impl + // InternalApplicationConfiguration.g:7278:1: ( rule__ScopeDeclaration__Group__2__Impl ) + // InternalApplicationConfiguration.g:7279:2: rule__ScopeDeclaration__Group__2__Impl { pushFollow(FOLLOW_2); rule__ScopeDeclaration__Group__2__Impl(); @@ -22675,21 +22702,21 @@ public final void rule__ScopeDeclaration__Group__2() throws RecognitionException // $ANTLR start "rule__ScopeDeclaration__Group__2__Impl" - // InternalApplicationConfiguration.g:7279:1: rule__ScopeDeclaration__Group__2__Impl : ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) ; + // InternalApplicationConfiguration.g:7285:1: rule__ScopeDeclaration__Group__2__Impl : ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) ; public final void rule__ScopeDeclaration__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7283:1: ( ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) ) - // InternalApplicationConfiguration.g:7284:1: ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:7289:1: ( ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) ) + // InternalApplicationConfiguration.g:7290:1: ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) { - // InternalApplicationConfiguration.g:7284:1: ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) - // InternalApplicationConfiguration.g:7285:2: ( rule__ScopeDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:7290:1: ( ( rule__ScopeDeclaration__SpecificationAssignment_2 ) ) + // InternalApplicationConfiguration.g:7291:2: ( rule__ScopeDeclaration__SpecificationAssignment_2 ) { before(grammarAccess.getScopeDeclarationAccess().getSpecificationAssignment_2()); - // InternalApplicationConfiguration.g:7286:2: ( rule__ScopeDeclaration__SpecificationAssignment_2 ) - // InternalApplicationConfiguration.g:7286:3: rule__ScopeDeclaration__SpecificationAssignment_2 + // InternalApplicationConfiguration.g:7292:2: ( rule__ScopeDeclaration__SpecificationAssignment_2 ) + // InternalApplicationConfiguration.g:7292:3: rule__ScopeDeclaration__SpecificationAssignment_2 { pushFollow(FOLLOW_2); rule__ScopeDeclaration__SpecificationAssignment_2(); @@ -22722,14 +22749,14 @@ public final void rule__ScopeDeclaration__Group__2__Impl() throws RecognitionExc // $ANTLR start "rule__GenerationTask__Group__0" - // InternalApplicationConfiguration.g:7295:1: rule__GenerationTask__Group__0 : rule__GenerationTask__Group__0__Impl rule__GenerationTask__Group__1 ; + // InternalApplicationConfiguration.g:7301:1: rule__GenerationTask__Group__0 : rule__GenerationTask__Group__0__Impl rule__GenerationTask__Group__1 ; public final void rule__GenerationTask__Group__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7299:1: ( rule__GenerationTask__Group__0__Impl rule__GenerationTask__Group__1 ) - // InternalApplicationConfiguration.g:7300:2: rule__GenerationTask__Group__0__Impl rule__GenerationTask__Group__1 + // InternalApplicationConfiguration.g:7305:1: ( rule__GenerationTask__Group__0__Impl rule__GenerationTask__Group__1 ) + // InternalApplicationConfiguration.g:7306:2: rule__GenerationTask__Group__0__Impl rule__GenerationTask__Group__1 { pushFollow(FOLLOW_18); rule__GenerationTask__Group__0__Impl(); @@ -22760,20 +22787,20 @@ public final void rule__GenerationTask__Group__0() throws RecognitionException { // $ANTLR start "rule__GenerationTask__Group__0__Impl" - // InternalApplicationConfiguration.g:7307:1: rule__GenerationTask__Group__0__Impl : ( 'generate' ) ; + // InternalApplicationConfiguration.g:7313:1: rule__GenerationTask__Group__0__Impl : ( 'generate' ) ; public final void rule__GenerationTask__Group__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7311:1: ( ( 'generate' ) ) - // InternalApplicationConfiguration.g:7312:1: ( 'generate' ) + // InternalApplicationConfiguration.g:7317:1: ( ( 'generate' ) ) + // InternalApplicationConfiguration.g:7318:1: ( 'generate' ) { - // InternalApplicationConfiguration.g:7312:1: ( 'generate' ) - // InternalApplicationConfiguration.g:7313:2: 'generate' + // InternalApplicationConfiguration.g:7318:1: ( 'generate' ) + // InternalApplicationConfiguration.g:7319:2: 'generate' { before(grammarAccess.getGenerationTaskAccess().getGenerateKeyword_0()); - match(input,47,FOLLOW_2); + match(input,48,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getGenerateKeyword_0()); } @@ -22797,14 +22824,14 @@ public final void rule__GenerationTask__Group__0__Impl() throws RecognitionExcep // $ANTLR start "rule__GenerationTask__Group__1" - // InternalApplicationConfiguration.g:7322:1: rule__GenerationTask__Group__1 : rule__GenerationTask__Group__1__Impl rule__GenerationTask__Group__2 ; + // InternalApplicationConfiguration.g:7328:1: rule__GenerationTask__Group__1 : rule__GenerationTask__Group__1__Impl rule__GenerationTask__Group__2 ; public final void rule__GenerationTask__Group__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7326:1: ( rule__GenerationTask__Group__1__Impl rule__GenerationTask__Group__2 ) - // InternalApplicationConfiguration.g:7327:2: rule__GenerationTask__Group__1__Impl rule__GenerationTask__Group__2 + // InternalApplicationConfiguration.g:7332:1: ( rule__GenerationTask__Group__1__Impl rule__GenerationTask__Group__2 ) + // InternalApplicationConfiguration.g:7333:2: rule__GenerationTask__Group__1__Impl rule__GenerationTask__Group__2 { pushFollow(FOLLOW_18); rule__GenerationTask__Group__1__Impl(); @@ -22835,21 +22862,21 @@ public final void rule__GenerationTask__Group__1() throws RecognitionException { // $ANTLR start "rule__GenerationTask__Group__1__Impl" - // InternalApplicationConfiguration.g:7334:1: rule__GenerationTask__Group__1__Impl : ( () ) ; + // InternalApplicationConfiguration.g:7340:1: rule__GenerationTask__Group__1__Impl : ( () ) ; public final void rule__GenerationTask__Group__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7338:1: ( ( () ) ) - // InternalApplicationConfiguration.g:7339:1: ( () ) + // InternalApplicationConfiguration.g:7344:1: ( ( () ) ) + // InternalApplicationConfiguration.g:7345:1: ( () ) { - // InternalApplicationConfiguration.g:7339:1: ( () ) - // InternalApplicationConfiguration.g:7340:2: () + // InternalApplicationConfiguration.g:7345:1: ( () ) + // InternalApplicationConfiguration.g:7346:2: () { before(grammarAccess.getGenerationTaskAccess().getGenerationTaskAction_1()); - // InternalApplicationConfiguration.g:7341:2: () - // InternalApplicationConfiguration.g:7341:3: + // InternalApplicationConfiguration.g:7347:2: () + // InternalApplicationConfiguration.g:7347:3: { } @@ -22872,14 +22899,14 @@ public final void rule__GenerationTask__Group__1__Impl() throws RecognitionExcep // $ANTLR start "rule__GenerationTask__Group__2" - // InternalApplicationConfiguration.g:7349:1: rule__GenerationTask__Group__2 : rule__GenerationTask__Group__2__Impl rule__GenerationTask__Group__3 ; + // InternalApplicationConfiguration.g:7355:1: rule__GenerationTask__Group__2 : rule__GenerationTask__Group__2__Impl rule__GenerationTask__Group__3 ; public final void rule__GenerationTask__Group__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7353:1: ( rule__GenerationTask__Group__2__Impl rule__GenerationTask__Group__3 ) - // InternalApplicationConfiguration.g:7354:2: rule__GenerationTask__Group__2__Impl rule__GenerationTask__Group__3 + // InternalApplicationConfiguration.g:7359:1: ( rule__GenerationTask__Group__2__Impl rule__GenerationTask__Group__3 ) + // InternalApplicationConfiguration.g:7360:2: rule__GenerationTask__Group__2__Impl rule__GenerationTask__Group__3 { pushFollow(FOLLOW_41); rule__GenerationTask__Group__2__Impl(); @@ -22910,20 +22937,20 @@ public final void rule__GenerationTask__Group__2() throws RecognitionException { // $ANTLR start "rule__GenerationTask__Group__2__Impl" - // InternalApplicationConfiguration.g:7361:1: rule__GenerationTask__Group__2__Impl : ( '{' ) ; + // InternalApplicationConfiguration.g:7367:1: rule__GenerationTask__Group__2__Impl : ( '{' ) ; public final void rule__GenerationTask__Group__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7365:1: ( ( '{' ) ) - // InternalApplicationConfiguration.g:7366:1: ( '{' ) + // InternalApplicationConfiguration.g:7371:1: ( ( '{' ) ) + // InternalApplicationConfiguration.g:7372:1: ( '{' ) { - // InternalApplicationConfiguration.g:7366:1: ( '{' ) - // InternalApplicationConfiguration.g:7367:2: '{' + // InternalApplicationConfiguration.g:7372:1: ( '{' ) + // InternalApplicationConfiguration.g:7373:2: '{' { before(grammarAccess.getGenerationTaskAccess().getLeftCurlyBracketKeyword_2()); - match(input,24,FOLLOW_2); + match(input,25,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getLeftCurlyBracketKeyword_2()); } @@ -22947,14 +22974,14 @@ public final void rule__GenerationTask__Group__2__Impl() throws RecognitionExcep // $ANTLR start "rule__GenerationTask__Group__3" - // InternalApplicationConfiguration.g:7376:1: rule__GenerationTask__Group__3 : rule__GenerationTask__Group__3__Impl rule__GenerationTask__Group__4 ; + // InternalApplicationConfiguration.g:7382:1: rule__GenerationTask__Group__3 : rule__GenerationTask__Group__3__Impl rule__GenerationTask__Group__4 ; public final void rule__GenerationTask__Group__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7380:1: ( rule__GenerationTask__Group__3__Impl rule__GenerationTask__Group__4 ) - // InternalApplicationConfiguration.g:7381:2: rule__GenerationTask__Group__3__Impl rule__GenerationTask__Group__4 + // InternalApplicationConfiguration.g:7386:1: ( rule__GenerationTask__Group__3__Impl rule__GenerationTask__Group__4 ) + // InternalApplicationConfiguration.g:7387:2: rule__GenerationTask__Group__3__Impl rule__GenerationTask__Group__4 { pushFollow(FOLLOW_42); rule__GenerationTask__Group__3__Impl(); @@ -22985,21 +23012,21 @@ public final void rule__GenerationTask__Group__3() throws RecognitionException { // $ANTLR start "rule__GenerationTask__Group__3__Impl" - // InternalApplicationConfiguration.g:7388:1: rule__GenerationTask__Group__3__Impl : ( ( rule__GenerationTask__UnorderedGroup_3 ) ) ; + // InternalApplicationConfiguration.g:7394:1: rule__GenerationTask__Group__3__Impl : ( ( rule__GenerationTask__UnorderedGroup_3 ) ) ; public final void rule__GenerationTask__Group__3__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7392:1: ( ( ( rule__GenerationTask__UnorderedGroup_3 ) ) ) - // InternalApplicationConfiguration.g:7393:1: ( ( rule__GenerationTask__UnorderedGroup_3 ) ) + // InternalApplicationConfiguration.g:7398:1: ( ( ( rule__GenerationTask__UnorderedGroup_3 ) ) ) + // InternalApplicationConfiguration.g:7399:1: ( ( rule__GenerationTask__UnorderedGroup_3 ) ) { - // InternalApplicationConfiguration.g:7393:1: ( ( rule__GenerationTask__UnorderedGroup_3 ) ) - // InternalApplicationConfiguration.g:7394:2: ( rule__GenerationTask__UnorderedGroup_3 ) + // InternalApplicationConfiguration.g:7399:1: ( ( rule__GenerationTask__UnorderedGroup_3 ) ) + // InternalApplicationConfiguration.g:7400:2: ( rule__GenerationTask__UnorderedGroup_3 ) { before(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3()); - // InternalApplicationConfiguration.g:7395:2: ( rule__GenerationTask__UnorderedGroup_3 ) - // InternalApplicationConfiguration.g:7395:3: rule__GenerationTask__UnorderedGroup_3 + // InternalApplicationConfiguration.g:7401:2: ( rule__GenerationTask__UnorderedGroup_3 ) + // InternalApplicationConfiguration.g:7401:3: rule__GenerationTask__UnorderedGroup_3 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3(); @@ -23032,14 +23059,14 @@ public final void rule__GenerationTask__Group__3__Impl() throws RecognitionExcep // $ANTLR start "rule__GenerationTask__Group__4" - // InternalApplicationConfiguration.g:7403:1: rule__GenerationTask__Group__4 : rule__GenerationTask__Group__4__Impl ; + // InternalApplicationConfiguration.g:7409:1: rule__GenerationTask__Group__4 : rule__GenerationTask__Group__4__Impl ; public final void rule__GenerationTask__Group__4() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7407:1: ( rule__GenerationTask__Group__4__Impl ) - // InternalApplicationConfiguration.g:7408:2: rule__GenerationTask__Group__4__Impl + // InternalApplicationConfiguration.g:7413:1: ( rule__GenerationTask__Group__4__Impl ) + // InternalApplicationConfiguration.g:7414:2: rule__GenerationTask__Group__4__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group__4__Impl(); @@ -23065,20 +23092,20 @@ public final void rule__GenerationTask__Group__4() throws RecognitionException { // $ANTLR start "rule__GenerationTask__Group__4__Impl" - // InternalApplicationConfiguration.g:7414:1: rule__GenerationTask__Group__4__Impl : ( '}' ) ; + // InternalApplicationConfiguration.g:7420:1: rule__GenerationTask__Group__4__Impl : ( '}' ) ; public final void rule__GenerationTask__Group__4__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7418:1: ( ( '}' ) ) - // InternalApplicationConfiguration.g:7419:1: ( '}' ) + // InternalApplicationConfiguration.g:7424:1: ( ( '}' ) ) + // InternalApplicationConfiguration.g:7425:1: ( '}' ) { - // InternalApplicationConfiguration.g:7419:1: ( '}' ) - // InternalApplicationConfiguration.g:7420:2: '}' + // InternalApplicationConfiguration.g:7425:1: ( '}' ) + // InternalApplicationConfiguration.g:7426:2: '}' { before(grammarAccess.getGenerationTaskAccess().getRightCurlyBracketKeyword_4()); - match(input,25,FOLLOW_2); + match(input,26,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getRightCurlyBracketKeyword_4()); } @@ -23102,14 +23129,14 @@ public final void rule__GenerationTask__Group__4__Impl() throws RecognitionExcep // $ANTLR start "rule__GenerationTask__Group_3_0__0" - // InternalApplicationConfiguration.g:7430:1: rule__GenerationTask__Group_3_0__0 : rule__GenerationTask__Group_3_0__0__Impl rule__GenerationTask__Group_3_0__1 ; + // InternalApplicationConfiguration.g:7436:1: rule__GenerationTask__Group_3_0__0 : rule__GenerationTask__Group_3_0__0__Impl rule__GenerationTask__Group_3_0__1 ; public final void rule__GenerationTask__Group_3_0__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7434:1: ( rule__GenerationTask__Group_3_0__0__Impl rule__GenerationTask__Group_3_0__1 ) - // InternalApplicationConfiguration.g:7435:2: rule__GenerationTask__Group_3_0__0__Impl rule__GenerationTask__Group_3_0__1 + // InternalApplicationConfiguration.g:7440:1: ( rule__GenerationTask__Group_3_0__0__Impl rule__GenerationTask__Group_3_0__1 ) + // InternalApplicationConfiguration.g:7441:2: rule__GenerationTask__Group_3_0__0__Impl rule__GenerationTask__Group_3_0__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_0__0__Impl(); @@ -23140,20 +23167,20 @@ public final void rule__GenerationTask__Group_3_0__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_0__0__Impl" - // InternalApplicationConfiguration.g:7442:1: rule__GenerationTask__Group_3_0__0__Impl : ( 'metamodel' ) ; + // InternalApplicationConfiguration.g:7448:1: rule__GenerationTask__Group_3_0__0__Impl : ( 'metamodel' ) ; public final void rule__GenerationTask__Group_3_0__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7446:1: ( ( 'metamodel' ) ) - // InternalApplicationConfiguration.g:7447:1: ( 'metamodel' ) + // InternalApplicationConfiguration.g:7452:1: ( ( 'metamodel' ) ) + // InternalApplicationConfiguration.g:7453:1: ( 'metamodel' ) { - // InternalApplicationConfiguration.g:7447:1: ( 'metamodel' ) - // InternalApplicationConfiguration.g:7448:2: 'metamodel' + // InternalApplicationConfiguration.g:7453:1: ( 'metamodel' ) + // InternalApplicationConfiguration.g:7454:2: 'metamodel' { before(grammarAccess.getGenerationTaskAccess().getMetamodelKeyword_3_0_0()); - match(input,30,FOLLOW_2); + match(input,31,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getMetamodelKeyword_3_0_0()); } @@ -23177,14 +23204,14 @@ public final void rule__GenerationTask__Group_3_0__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_0__1" - // InternalApplicationConfiguration.g:7457:1: rule__GenerationTask__Group_3_0__1 : rule__GenerationTask__Group_3_0__1__Impl rule__GenerationTask__Group_3_0__2 ; + // InternalApplicationConfiguration.g:7463:1: rule__GenerationTask__Group_3_0__1 : rule__GenerationTask__Group_3_0__1__Impl rule__GenerationTask__Group_3_0__2 ; public final void rule__GenerationTask__Group_3_0__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7461:1: ( rule__GenerationTask__Group_3_0__1__Impl rule__GenerationTask__Group_3_0__2 ) - // InternalApplicationConfiguration.g:7462:2: rule__GenerationTask__Group_3_0__1__Impl rule__GenerationTask__Group_3_0__2 + // InternalApplicationConfiguration.g:7467:1: ( rule__GenerationTask__Group_3_0__1__Impl rule__GenerationTask__Group_3_0__2 ) + // InternalApplicationConfiguration.g:7468:2: rule__GenerationTask__Group_3_0__1__Impl rule__GenerationTask__Group_3_0__2 { pushFollow(FOLLOW_43); rule__GenerationTask__Group_3_0__1__Impl(); @@ -23215,20 +23242,20 @@ public final void rule__GenerationTask__Group_3_0__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_0__1__Impl" - // InternalApplicationConfiguration.g:7469:1: rule__GenerationTask__Group_3_0__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7475:1: rule__GenerationTask__Group_3_0__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_0__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7473:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7474:1: ( '=' ) + // InternalApplicationConfiguration.g:7479:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7480:1: ( '=' ) { - // InternalApplicationConfiguration.g:7474:1: ( '=' ) - // InternalApplicationConfiguration.g:7475:2: '=' + // InternalApplicationConfiguration.g:7480:1: ( '=' ) + // InternalApplicationConfiguration.g:7481:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_0_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_0_1()); } @@ -23252,14 +23279,14 @@ public final void rule__GenerationTask__Group_3_0__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_0__2" - // InternalApplicationConfiguration.g:7484:1: rule__GenerationTask__Group_3_0__2 : rule__GenerationTask__Group_3_0__2__Impl ; + // InternalApplicationConfiguration.g:7490:1: rule__GenerationTask__Group_3_0__2 : rule__GenerationTask__Group_3_0__2__Impl ; public final void rule__GenerationTask__Group_3_0__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7488:1: ( rule__GenerationTask__Group_3_0__2__Impl ) - // InternalApplicationConfiguration.g:7489:2: rule__GenerationTask__Group_3_0__2__Impl + // InternalApplicationConfiguration.g:7494:1: ( rule__GenerationTask__Group_3_0__2__Impl ) + // InternalApplicationConfiguration.g:7495:2: rule__GenerationTask__Group_3_0__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_0__2__Impl(); @@ -23285,21 +23312,21 @@ public final void rule__GenerationTask__Group_3_0__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_0__2__Impl" - // InternalApplicationConfiguration.g:7495:1: rule__GenerationTask__Group_3_0__2__Impl : ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) ; + // InternalApplicationConfiguration.g:7501:1: rule__GenerationTask__Group_3_0__2__Impl : ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) ; public final void rule__GenerationTask__Group_3_0__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7499:1: ( ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) ) - // InternalApplicationConfiguration.g:7500:1: ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) + // InternalApplicationConfiguration.g:7505:1: ( ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) ) + // InternalApplicationConfiguration.g:7506:1: ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) { - // InternalApplicationConfiguration.g:7500:1: ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) - // InternalApplicationConfiguration.g:7501:2: ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) + // InternalApplicationConfiguration.g:7506:1: ( ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) ) + // InternalApplicationConfiguration.g:7507:2: ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) { before(grammarAccess.getGenerationTaskAccess().getMetamodelAssignment_3_0_2()); - // InternalApplicationConfiguration.g:7502:2: ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) - // InternalApplicationConfiguration.g:7502:3: rule__GenerationTask__MetamodelAssignment_3_0_2 + // InternalApplicationConfiguration.g:7508:2: ( rule__GenerationTask__MetamodelAssignment_3_0_2 ) + // InternalApplicationConfiguration.g:7508:3: rule__GenerationTask__MetamodelAssignment_3_0_2 { pushFollow(FOLLOW_2); rule__GenerationTask__MetamodelAssignment_3_0_2(); @@ -23332,14 +23359,14 @@ public final void rule__GenerationTask__Group_3_0__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_1__0" - // InternalApplicationConfiguration.g:7511:1: rule__GenerationTask__Group_3_1__0 : rule__GenerationTask__Group_3_1__0__Impl rule__GenerationTask__Group_3_1__1 ; + // InternalApplicationConfiguration.g:7517:1: rule__GenerationTask__Group_3_1__0 : rule__GenerationTask__Group_3_1__0__Impl rule__GenerationTask__Group_3_1__1 ; public final void rule__GenerationTask__Group_3_1__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7515:1: ( rule__GenerationTask__Group_3_1__0__Impl rule__GenerationTask__Group_3_1__1 ) - // InternalApplicationConfiguration.g:7516:2: rule__GenerationTask__Group_3_1__0__Impl rule__GenerationTask__Group_3_1__1 + // InternalApplicationConfiguration.g:7521:1: ( rule__GenerationTask__Group_3_1__0__Impl rule__GenerationTask__Group_3_1__1 ) + // InternalApplicationConfiguration.g:7522:2: rule__GenerationTask__Group_3_1__0__Impl rule__GenerationTask__Group_3_1__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_1__0__Impl(); @@ -23370,20 +23397,20 @@ public final void rule__GenerationTask__Group_3_1__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_1__0__Impl" - // InternalApplicationConfiguration.g:7523:1: rule__GenerationTask__Group_3_1__0__Impl : ( 'partial-model' ) ; + // InternalApplicationConfiguration.g:7529:1: rule__GenerationTask__Group_3_1__0__Impl : ( 'partial-model' ) ; public final void rule__GenerationTask__Group_3_1__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7527:1: ( ( 'partial-model' ) ) - // InternalApplicationConfiguration.g:7528:1: ( 'partial-model' ) + // InternalApplicationConfiguration.g:7533:1: ( ( 'partial-model' ) ) + // InternalApplicationConfiguration.g:7534:1: ( 'partial-model' ) { - // InternalApplicationConfiguration.g:7528:1: ( 'partial-model' ) - // InternalApplicationConfiguration.g:7529:2: 'partial-model' + // InternalApplicationConfiguration.g:7534:1: ( 'partial-model' ) + // InternalApplicationConfiguration.g:7535:2: 'partial-model' { before(grammarAccess.getGenerationTaskAccess().getPartialModelKeyword_3_1_0()); - match(input,48,FOLLOW_2); + match(input,49,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getPartialModelKeyword_3_1_0()); } @@ -23407,14 +23434,14 @@ public final void rule__GenerationTask__Group_3_1__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_1__1" - // InternalApplicationConfiguration.g:7538:1: rule__GenerationTask__Group_3_1__1 : rule__GenerationTask__Group_3_1__1__Impl rule__GenerationTask__Group_3_1__2 ; + // InternalApplicationConfiguration.g:7544:1: rule__GenerationTask__Group_3_1__1 : rule__GenerationTask__Group_3_1__1__Impl rule__GenerationTask__Group_3_1__2 ; public final void rule__GenerationTask__Group_3_1__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7542:1: ( rule__GenerationTask__Group_3_1__1__Impl rule__GenerationTask__Group_3_1__2 ) - // InternalApplicationConfiguration.g:7543:2: rule__GenerationTask__Group_3_1__1__Impl rule__GenerationTask__Group_3_1__2 + // InternalApplicationConfiguration.g:7548:1: ( rule__GenerationTask__Group_3_1__1__Impl rule__GenerationTask__Group_3_1__2 ) + // InternalApplicationConfiguration.g:7549:2: rule__GenerationTask__Group_3_1__1__Impl rule__GenerationTask__Group_3_1__2 { pushFollow(FOLLOW_43); rule__GenerationTask__Group_3_1__1__Impl(); @@ -23445,20 +23472,20 @@ public final void rule__GenerationTask__Group_3_1__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_1__1__Impl" - // InternalApplicationConfiguration.g:7550:1: rule__GenerationTask__Group_3_1__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7556:1: rule__GenerationTask__Group_3_1__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_1__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7554:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7555:1: ( '=' ) + // InternalApplicationConfiguration.g:7560:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7561:1: ( '=' ) { - // InternalApplicationConfiguration.g:7555:1: ( '=' ) - // InternalApplicationConfiguration.g:7556:2: '=' + // InternalApplicationConfiguration.g:7561:1: ( '=' ) + // InternalApplicationConfiguration.g:7562:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_1_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_1_1()); } @@ -23482,14 +23509,14 @@ public final void rule__GenerationTask__Group_3_1__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_1__2" - // InternalApplicationConfiguration.g:7565:1: rule__GenerationTask__Group_3_1__2 : rule__GenerationTask__Group_3_1__2__Impl ; + // InternalApplicationConfiguration.g:7571:1: rule__GenerationTask__Group_3_1__2 : rule__GenerationTask__Group_3_1__2__Impl ; public final void rule__GenerationTask__Group_3_1__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7569:1: ( rule__GenerationTask__Group_3_1__2__Impl ) - // InternalApplicationConfiguration.g:7570:2: rule__GenerationTask__Group_3_1__2__Impl + // InternalApplicationConfiguration.g:7575:1: ( rule__GenerationTask__Group_3_1__2__Impl ) + // InternalApplicationConfiguration.g:7576:2: rule__GenerationTask__Group_3_1__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_1__2__Impl(); @@ -23515,21 +23542,21 @@ public final void rule__GenerationTask__Group_3_1__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_1__2__Impl" - // InternalApplicationConfiguration.g:7576:1: rule__GenerationTask__Group_3_1__2__Impl : ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) ; + // InternalApplicationConfiguration.g:7582:1: rule__GenerationTask__Group_3_1__2__Impl : ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) ; public final void rule__GenerationTask__Group_3_1__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7580:1: ( ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) ) - // InternalApplicationConfiguration.g:7581:1: ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) + // InternalApplicationConfiguration.g:7586:1: ( ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) ) + // InternalApplicationConfiguration.g:7587:1: ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) { - // InternalApplicationConfiguration.g:7581:1: ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) - // InternalApplicationConfiguration.g:7582:2: ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) + // InternalApplicationConfiguration.g:7587:1: ( ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) ) + // InternalApplicationConfiguration.g:7588:2: ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) { before(grammarAccess.getGenerationTaskAccess().getPartialModelAssignment_3_1_2()); - // InternalApplicationConfiguration.g:7583:2: ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) - // InternalApplicationConfiguration.g:7583:3: rule__GenerationTask__PartialModelAssignment_3_1_2 + // InternalApplicationConfiguration.g:7589:2: ( rule__GenerationTask__PartialModelAssignment_3_1_2 ) + // InternalApplicationConfiguration.g:7589:3: rule__GenerationTask__PartialModelAssignment_3_1_2 { pushFollow(FOLLOW_2); rule__GenerationTask__PartialModelAssignment_3_1_2(); @@ -23562,14 +23589,14 @@ public final void rule__GenerationTask__Group_3_1__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_2__0" - // InternalApplicationConfiguration.g:7592:1: rule__GenerationTask__Group_3_2__0 : rule__GenerationTask__Group_3_2__0__Impl rule__GenerationTask__Group_3_2__1 ; + // InternalApplicationConfiguration.g:7598:1: rule__GenerationTask__Group_3_2__0 : rule__GenerationTask__Group_3_2__0__Impl rule__GenerationTask__Group_3_2__1 ; public final void rule__GenerationTask__Group_3_2__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7596:1: ( rule__GenerationTask__Group_3_2__0__Impl rule__GenerationTask__Group_3_2__1 ) - // InternalApplicationConfiguration.g:7597:2: rule__GenerationTask__Group_3_2__0__Impl rule__GenerationTask__Group_3_2__1 + // InternalApplicationConfiguration.g:7602:1: ( rule__GenerationTask__Group_3_2__0__Impl rule__GenerationTask__Group_3_2__1 ) + // InternalApplicationConfiguration.g:7603:2: rule__GenerationTask__Group_3_2__0__Impl rule__GenerationTask__Group_3_2__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_2__0__Impl(); @@ -23600,20 +23627,20 @@ public final void rule__GenerationTask__Group_3_2__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_2__0__Impl" - // InternalApplicationConfiguration.g:7604:1: rule__GenerationTask__Group_3_2__0__Impl : ( 'constraints' ) ; + // InternalApplicationConfiguration.g:7610:1: rule__GenerationTask__Group_3_2__0__Impl : ( 'constraints' ) ; public final void rule__GenerationTask__Group_3_2__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7608:1: ( ( 'constraints' ) ) - // InternalApplicationConfiguration.g:7609:1: ( 'constraints' ) + // InternalApplicationConfiguration.g:7614:1: ( ( 'constraints' ) ) + // InternalApplicationConfiguration.g:7615:1: ( 'constraints' ) { - // InternalApplicationConfiguration.g:7609:1: ( 'constraints' ) - // InternalApplicationConfiguration.g:7610:2: 'constraints' + // InternalApplicationConfiguration.g:7615:1: ( 'constraints' ) + // InternalApplicationConfiguration.g:7616:2: 'constraints' { before(grammarAccess.getGenerationTaskAccess().getConstraintsKeyword_3_2_0()); - match(input,33,FOLLOW_2); + match(input,34,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getConstraintsKeyword_3_2_0()); } @@ -23637,14 +23664,14 @@ public final void rule__GenerationTask__Group_3_2__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_2__1" - // InternalApplicationConfiguration.g:7619:1: rule__GenerationTask__Group_3_2__1 : rule__GenerationTask__Group_3_2__1__Impl rule__GenerationTask__Group_3_2__2 ; + // InternalApplicationConfiguration.g:7625:1: rule__GenerationTask__Group_3_2__1 : rule__GenerationTask__Group_3_2__1__Impl rule__GenerationTask__Group_3_2__2 ; public final void rule__GenerationTask__Group_3_2__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7623:1: ( rule__GenerationTask__Group_3_2__1__Impl rule__GenerationTask__Group_3_2__2 ) - // InternalApplicationConfiguration.g:7624:2: rule__GenerationTask__Group_3_2__1__Impl rule__GenerationTask__Group_3_2__2 + // InternalApplicationConfiguration.g:7629:1: ( rule__GenerationTask__Group_3_2__1__Impl rule__GenerationTask__Group_3_2__2 ) + // InternalApplicationConfiguration.g:7630:2: rule__GenerationTask__Group_3_2__1__Impl rule__GenerationTask__Group_3_2__2 { pushFollow(FOLLOW_43); rule__GenerationTask__Group_3_2__1__Impl(); @@ -23675,20 +23702,20 @@ public final void rule__GenerationTask__Group_3_2__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_2__1__Impl" - // InternalApplicationConfiguration.g:7631:1: rule__GenerationTask__Group_3_2__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7637:1: rule__GenerationTask__Group_3_2__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_2__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7635:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7636:1: ( '=' ) + // InternalApplicationConfiguration.g:7641:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7642:1: ( '=' ) { - // InternalApplicationConfiguration.g:7636:1: ( '=' ) - // InternalApplicationConfiguration.g:7637:2: '=' + // InternalApplicationConfiguration.g:7642:1: ( '=' ) + // InternalApplicationConfiguration.g:7643:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_2_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_2_1()); } @@ -23712,14 +23739,14 @@ public final void rule__GenerationTask__Group_3_2__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_2__2" - // InternalApplicationConfiguration.g:7646:1: rule__GenerationTask__Group_3_2__2 : rule__GenerationTask__Group_3_2__2__Impl ; + // InternalApplicationConfiguration.g:7652:1: rule__GenerationTask__Group_3_2__2 : rule__GenerationTask__Group_3_2__2__Impl ; public final void rule__GenerationTask__Group_3_2__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7650:1: ( rule__GenerationTask__Group_3_2__2__Impl ) - // InternalApplicationConfiguration.g:7651:2: rule__GenerationTask__Group_3_2__2__Impl + // InternalApplicationConfiguration.g:7656:1: ( rule__GenerationTask__Group_3_2__2__Impl ) + // InternalApplicationConfiguration.g:7657:2: rule__GenerationTask__Group_3_2__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_2__2__Impl(); @@ -23745,21 +23772,21 @@ public final void rule__GenerationTask__Group_3_2__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_2__2__Impl" - // InternalApplicationConfiguration.g:7657:1: rule__GenerationTask__Group_3_2__2__Impl : ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) ; + // InternalApplicationConfiguration.g:7663:1: rule__GenerationTask__Group_3_2__2__Impl : ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) ; public final void rule__GenerationTask__Group_3_2__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7661:1: ( ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) ) - // InternalApplicationConfiguration.g:7662:1: ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) + // InternalApplicationConfiguration.g:7667:1: ( ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) ) + // InternalApplicationConfiguration.g:7668:1: ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) { - // InternalApplicationConfiguration.g:7662:1: ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) - // InternalApplicationConfiguration.g:7663:2: ( rule__GenerationTask__PatternsAssignment_3_2_2 ) + // InternalApplicationConfiguration.g:7668:1: ( ( rule__GenerationTask__PatternsAssignment_3_2_2 ) ) + // InternalApplicationConfiguration.g:7669:2: ( rule__GenerationTask__PatternsAssignment_3_2_2 ) { before(grammarAccess.getGenerationTaskAccess().getPatternsAssignment_3_2_2()); - // InternalApplicationConfiguration.g:7664:2: ( rule__GenerationTask__PatternsAssignment_3_2_2 ) - // InternalApplicationConfiguration.g:7664:3: rule__GenerationTask__PatternsAssignment_3_2_2 + // InternalApplicationConfiguration.g:7670:2: ( rule__GenerationTask__PatternsAssignment_3_2_2 ) + // InternalApplicationConfiguration.g:7670:3: rule__GenerationTask__PatternsAssignment_3_2_2 { pushFollow(FOLLOW_2); rule__GenerationTask__PatternsAssignment_3_2_2(); @@ -23792,14 +23819,14 @@ public final void rule__GenerationTask__Group_3_2__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_3__0" - // InternalApplicationConfiguration.g:7673:1: rule__GenerationTask__Group_3_3__0 : rule__GenerationTask__Group_3_3__0__Impl rule__GenerationTask__Group_3_3__1 ; + // InternalApplicationConfiguration.g:7679:1: rule__GenerationTask__Group_3_3__0 : rule__GenerationTask__Group_3_3__0__Impl rule__GenerationTask__Group_3_3__1 ; public final void rule__GenerationTask__Group_3_3__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7677:1: ( rule__GenerationTask__Group_3_3__0__Impl rule__GenerationTask__Group_3_3__1 ) - // InternalApplicationConfiguration.g:7678:2: rule__GenerationTask__Group_3_3__0__Impl rule__GenerationTask__Group_3_3__1 + // InternalApplicationConfiguration.g:7683:1: ( rule__GenerationTask__Group_3_3__0__Impl rule__GenerationTask__Group_3_3__1 ) + // InternalApplicationConfiguration.g:7684:2: rule__GenerationTask__Group_3_3__0__Impl rule__GenerationTask__Group_3_3__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_3__0__Impl(); @@ -23830,20 +23857,20 @@ public final void rule__GenerationTask__Group_3_3__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_3__0__Impl" - // InternalApplicationConfiguration.g:7685:1: rule__GenerationTask__Group_3_3__0__Impl : ( 'scope' ) ; + // InternalApplicationConfiguration.g:7691:1: rule__GenerationTask__Group_3_3__0__Impl : ( 'scope' ) ; public final void rule__GenerationTask__Group_3_3__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7689:1: ( ( 'scope' ) ) - // InternalApplicationConfiguration.g:7690:1: ( 'scope' ) + // InternalApplicationConfiguration.g:7695:1: ( ( 'scope' ) ) + // InternalApplicationConfiguration.g:7696:1: ( 'scope' ) { - // InternalApplicationConfiguration.g:7690:1: ( 'scope' ) - // InternalApplicationConfiguration.g:7691:2: 'scope' + // InternalApplicationConfiguration.g:7696:1: ( 'scope' ) + // InternalApplicationConfiguration.g:7697:2: 'scope' { before(grammarAccess.getGenerationTaskAccess().getScopeKeyword_3_3_0()); - match(input,46,FOLLOW_2); + match(input,47,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getScopeKeyword_3_3_0()); } @@ -23867,14 +23894,14 @@ public final void rule__GenerationTask__Group_3_3__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_3__1" - // InternalApplicationConfiguration.g:7700:1: rule__GenerationTask__Group_3_3__1 : rule__GenerationTask__Group_3_3__1__Impl rule__GenerationTask__Group_3_3__2 ; + // InternalApplicationConfiguration.g:7706:1: rule__GenerationTask__Group_3_3__1 : rule__GenerationTask__Group_3_3__1__Impl rule__GenerationTask__Group_3_3__2 ; public final void rule__GenerationTask__Group_3_3__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7704:1: ( rule__GenerationTask__Group_3_3__1__Impl rule__GenerationTask__Group_3_3__2 ) - // InternalApplicationConfiguration.g:7705:2: rule__GenerationTask__Group_3_3__1__Impl rule__GenerationTask__Group_3_3__2 + // InternalApplicationConfiguration.g:7710:1: ( rule__GenerationTask__Group_3_3__1__Impl rule__GenerationTask__Group_3_3__2 ) + // InternalApplicationConfiguration.g:7711:2: rule__GenerationTask__Group_3_3__1__Impl rule__GenerationTask__Group_3_3__2 { pushFollow(FOLLOW_43); rule__GenerationTask__Group_3_3__1__Impl(); @@ -23905,20 +23932,20 @@ public final void rule__GenerationTask__Group_3_3__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_3__1__Impl" - // InternalApplicationConfiguration.g:7712:1: rule__GenerationTask__Group_3_3__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7718:1: rule__GenerationTask__Group_3_3__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_3__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7716:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7717:1: ( '=' ) + // InternalApplicationConfiguration.g:7722:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7723:1: ( '=' ) { - // InternalApplicationConfiguration.g:7717:1: ( '=' ) - // InternalApplicationConfiguration.g:7718:2: '=' + // InternalApplicationConfiguration.g:7723:1: ( '=' ) + // InternalApplicationConfiguration.g:7724:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_3_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_3_1()); } @@ -23942,14 +23969,14 @@ public final void rule__GenerationTask__Group_3_3__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_3__2" - // InternalApplicationConfiguration.g:7727:1: rule__GenerationTask__Group_3_3__2 : rule__GenerationTask__Group_3_3__2__Impl ; + // InternalApplicationConfiguration.g:7733:1: rule__GenerationTask__Group_3_3__2 : rule__GenerationTask__Group_3_3__2__Impl ; public final void rule__GenerationTask__Group_3_3__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7731:1: ( rule__GenerationTask__Group_3_3__2__Impl ) - // InternalApplicationConfiguration.g:7732:2: rule__GenerationTask__Group_3_3__2__Impl + // InternalApplicationConfiguration.g:7737:1: ( rule__GenerationTask__Group_3_3__2__Impl ) + // InternalApplicationConfiguration.g:7738:2: rule__GenerationTask__Group_3_3__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_3__2__Impl(); @@ -23975,21 +24002,21 @@ public final void rule__GenerationTask__Group_3_3__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_3__2__Impl" - // InternalApplicationConfiguration.g:7738:1: rule__GenerationTask__Group_3_3__2__Impl : ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) ; + // InternalApplicationConfiguration.g:7744:1: rule__GenerationTask__Group_3_3__2__Impl : ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) ; public final void rule__GenerationTask__Group_3_3__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7742:1: ( ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) ) - // InternalApplicationConfiguration.g:7743:1: ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) + // InternalApplicationConfiguration.g:7748:1: ( ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) ) + // InternalApplicationConfiguration.g:7749:1: ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) { - // InternalApplicationConfiguration.g:7743:1: ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) - // InternalApplicationConfiguration.g:7744:2: ( rule__GenerationTask__ScopeAssignment_3_3_2 ) + // InternalApplicationConfiguration.g:7749:1: ( ( rule__GenerationTask__ScopeAssignment_3_3_2 ) ) + // InternalApplicationConfiguration.g:7750:2: ( rule__GenerationTask__ScopeAssignment_3_3_2 ) { before(grammarAccess.getGenerationTaskAccess().getScopeAssignment_3_3_2()); - // InternalApplicationConfiguration.g:7745:2: ( rule__GenerationTask__ScopeAssignment_3_3_2 ) - // InternalApplicationConfiguration.g:7745:3: rule__GenerationTask__ScopeAssignment_3_3_2 + // InternalApplicationConfiguration.g:7751:2: ( rule__GenerationTask__ScopeAssignment_3_3_2 ) + // InternalApplicationConfiguration.g:7751:3: rule__GenerationTask__ScopeAssignment_3_3_2 { pushFollow(FOLLOW_2); rule__GenerationTask__ScopeAssignment_3_3_2(); @@ -24022,14 +24049,14 @@ public final void rule__GenerationTask__Group_3_3__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_4__0" - // InternalApplicationConfiguration.g:7754:1: rule__GenerationTask__Group_3_4__0 : rule__GenerationTask__Group_3_4__0__Impl rule__GenerationTask__Group_3_4__1 ; + // InternalApplicationConfiguration.g:7760:1: rule__GenerationTask__Group_3_4__0 : rule__GenerationTask__Group_3_4__0__Impl rule__GenerationTask__Group_3_4__1 ; public final void rule__GenerationTask__Group_3_4__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7758:1: ( rule__GenerationTask__Group_3_4__0__Impl rule__GenerationTask__Group_3_4__1 ) - // InternalApplicationConfiguration.g:7759:2: rule__GenerationTask__Group_3_4__0__Impl rule__GenerationTask__Group_3_4__1 + // InternalApplicationConfiguration.g:7764:1: ( rule__GenerationTask__Group_3_4__0__Impl rule__GenerationTask__Group_3_4__1 ) + // InternalApplicationConfiguration.g:7765:2: rule__GenerationTask__Group_3_4__0__Impl rule__GenerationTask__Group_3_4__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_4__0__Impl(); @@ -24060,21 +24087,21 @@ public final void rule__GenerationTask__Group_3_4__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_4__0__Impl" - // InternalApplicationConfiguration.g:7766:1: rule__GenerationTask__Group_3_4__0__Impl : ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) ; + // InternalApplicationConfiguration.g:7772:1: rule__GenerationTask__Group_3_4__0__Impl : ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) ; public final void rule__GenerationTask__Group_3_4__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7770:1: ( ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) ) - // InternalApplicationConfiguration.g:7771:1: ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) + // InternalApplicationConfiguration.g:7776:1: ( ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) ) + // InternalApplicationConfiguration.g:7777:1: ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) { - // InternalApplicationConfiguration.g:7771:1: ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) - // InternalApplicationConfiguration.g:7772:2: ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) + // InternalApplicationConfiguration.g:7777:1: ( ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) ) + // InternalApplicationConfiguration.g:7778:2: ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) { before(grammarAccess.getGenerationTaskAccess().getNumberSpecifiedAssignment_3_4_0()); - // InternalApplicationConfiguration.g:7773:2: ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) - // InternalApplicationConfiguration.g:7773:3: rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 + // InternalApplicationConfiguration.g:7779:2: ( rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 ) + // InternalApplicationConfiguration.g:7779:3: rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 { pushFollow(FOLLOW_2); rule__GenerationTask__NumberSpecifiedAssignment_3_4_0(); @@ -24107,14 +24134,14 @@ public final void rule__GenerationTask__Group_3_4__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_4__1" - // InternalApplicationConfiguration.g:7781:1: rule__GenerationTask__Group_3_4__1 : rule__GenerationTask__Group_3_4__1__Impl rule__GenerationTask__Group_3_4__2 ; + // InternalApplicationConfiguration.g:7787:1: rule__GenerationTask__Group_3_4__1 : rule__GenerationTask__Group_3_4__1__Impl rule__GenerationTask__Group_3_4__2 ; public final void rule__GenerationTask__Group_3_4__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7785:1: ( rule__GenerationTask__Group_3_4__1__Impl rule__GenerationTask__Group_3_4__2 ) - // InternalApplicationConfiguration.g:7786:2: rule__GenerationTask__Group_3_4__1__Impl rule__GenerationTask__Group_3_4__2 + // InternalApplicationConfiguration.g:7791:1: ( rule__GenerationTask__Group_3_4__1__Impl rule__GenerationTask__Group_3_4__2 ) + // InternalApplicationConfiguration.g:7792:2: rule__GenerationTask__Group_3_4__1__Impl rule__GenerationTask__Group_3_4__2 { pushFollow(FOLLOW_9); rule__GenerationTask__Group_3_4__1__Impl(); @@ -24145,20 +24172,20 @@ public final void rule__GenerationTask__Group_3_4__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_4__1__Impl" - // InternalApplicationConfiguration.g:7793:1: rule__GenerationTask__Group_3_4__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7799:1: rule__GenerationTask__Group_3_4__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_4__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7797:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7798:1: ( '=' ) + // InternalApplicationConfiguration.g:7803:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7804:1: ( '=' ) { - // InternalApplicationConfiguration.g:7798:1: ( '=' ) - // InternalApplicationConfiguration.g:7799:2: '=' + // InternalApplicationConfiguration.g:7804:1: ( '=' ) + // InternalApplicationConfiguration.g:7805:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_4_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_4_1()); } @@ -24182,14 +24209,14 @@ public final void rule__GenerationTask__Group_3_4__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_4__2" - // InternalApplicationConfiguration.g:7808:1: rule__GenerationTask__Group_3_4__2 : rule__GenerationTask__Group_3_4__2__Impl ; + // InternalApplicationConfiguration.g:7814:1: rule__GenerationTask__Group_3_4__2 : rule__GenerationTask__Group_3_4__2__Impl ; public final void rule__GenerationTask__Group_3_4__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7812:1: ( rule__GenerationTask__Group_3_4__2__Impl ) - // InternalApplicationConfiguration.g:7813:2: rule__GenerationTask__Group_3_4__2__Impl + // InternalApplicationConfiguration.g:7818:1: ( rule__GenerationTask__Group_3_4__2__Impl ) + // InternalApplicationConfiguration.g:7819:2: rule__GenerationTask__Group_3_4__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_4__2__Impl(); @@ -24215,21 +24242,21 @@ public final void rule__GenerationTask__Group_3_4__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_4__2__Impl" - // InternalApplicationConfiguration.g:7819:1: rule__GenerationTask__Group_3_4__2__Impl : ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) ; + // InternalApplicationConfiguration.g:7825:1: rule__GenerationTask__Group_3_4__2__Impl : ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) ; public final void rule__GenerationTask__Group_3_4__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7823:1: ( ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) ) - // InternalApplicationConfiguration.g:7824:1: ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) + // InternalApplicationConfiguration.g:7829:1: ( ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) ) + // InternalApplicationConfiguration.g:7830:1: ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) { - // InternalApplicationConfiguration.g:7824:1: ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) - // InternalApplicationConfiguration.g:7825:2: ( rule__GenerationTask__NumberAssignment_3_4_2 ) + // InternalApplicationConfiguration.g:7830:1: ( ( rule__GenerationTask__NumberAssignment_3_4_2 ) ) + // InternalApplicationConfiguration.g:7831:2: ( rule__GenerationTask__NumberAssignment_3_4_2 ) { before(grammarAccess.getGenerationTaskAccess().getNumberAssignment_3_4_2()); - // InternalApplicationConfiguration.g:7826:2: ( rule__GenerationTask__NumberAssignment_3_4_2 ) - // InternalApplicationConfiguration.g:7826:3: rule__GenerationTask__NumberAssignment_3_4_2 + // InternalApplicationConfiguration.g:7832:2: ( rule__GenerationTask__NumberAssignment_3_4_2 ) + // InternalApplicationConfiguration.g:7832:3: rule__GenerationTask__NumberAssignment_3_4_2 { pushFollow(FOLLOW_2); rule__GenerationTask__NumberAssignment_3_4_2(); @@ -24262,14 +24289,14 @@ public final void rule__GenerationTask__Group_3_4__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_5__0" - // InternalApplicationConfiguration.g:7835:1: rule__GenerationTask__Group_3_5__0 : rule__GenerationTask__Group_3_5__0__Impl rule__GenerationTask__Group_3_5__1 ; + // InternalApplicationConfiguration.g:7841:1: rule__GenerationTask__Group_3_5__0 : rule__GenerationTask__Group_3_5__0__Impl rule__GenerationTask__Group_3_5__1 ; public final void rule__GenerationTask__Group_3_5__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7839:1: ( rule__GenerationTask__Group_3_5__0__Impl rule__GenerationTask__Group_3_5__1 ) - // InternalApplicationConfiguration.g:7840:2: rule__GenerationTask__Group_3_5__0__Impl rule__GenerationTask__Group_3_5__1 + // InternalApplicationConfiguration.g:7845:1: ( rule__GenerationTask__Group_3_5__0__Impl rule__GenerationTask__Group_3_5__1 ) + // InternalApplicationConfiguration.g:7846:2: rule__GenerationTask__Group_3_5__0__Impl rule__GenerationTask__Group_3_5__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_5__0__Impl(); @@ -24300,21 +24327,21 @@ public final void rule__GenerationTask__Group_3_5__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_5__0__Impl" - // InternalApplicationConfiguration.g:7847:1: rule__GenerationTask__Group_3_5__0__Impl : ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) ; + // InternalApplicationConfiguration.g:7853:1: rule__GenerationTask__Group_3_5__0__Impl : ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) ; public final void rule__GenerationTask__Group_3_5__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7851:1: ( ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) ) - // InternalApplicationConfiguration.g:7852:1: ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) + // InternalApplicationConfiguration.g:7857:1: ( ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) ) + // InternalApplicationConfiguration.g:7858:1: ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) { - // InternalApplicationConfiguration.g:7852:1: ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) - // InternalApplicationConfiguration.g:7853:2: ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) + // InternalApplicationConfiguration.g:7858:1: ( ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) ) + // InternalApplicationConfiguration.g:7859:2: ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) { before(grammarAccess.getGenerationTaskAccess().getRunSpecifiedAssignment_3_5_0()); - // InternalApplicationConfiguration.g:7854:2: ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) - // InternalApplicationConfiguration.g:7854:3: rule__GenerationTask__RunSpecifiedAssignment_3_5_0 + // InternalApplicationConfiguration.g:7860:2: ( rule__GenerationTask__RunSpecifiedAssignment_3_5_0 ) + // InternalApplicationConfiguration.g:7860:3: rule__GenerationTask__RunSpecifiedAssignment_3_5_0 { pushFollow(FOLLOW_2); rule__GenerationTask__RunSpecifiedAssignment_3_5_0(); @@ -24347,14 +24374,14 @@ public final void rule__GenerationTask__Group_3_5__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_5__1" - // InternalApplicationConfiguration.g:7862:1: rule__GenerationTask__Group_3_5__1 : rule__GenerationTask__Group_3_5__1__Impl rule__GenerationTask__Group_3_5__2 ; + // InternalApplicationConfiguration.g:7868:1: rule__GenerationTask__Group_3_5__1 : rule__GenerationTask__Group_3_5__1__Impl rule__GenerationTask__Group_3_5__2 ; public final void rule__GenerationTask__Group_3_5__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7866:1: ( rule__GenerationTask__Group_3_5__1__Impl rule__GenerationTask__Group_3_5__2 ) - // InternalApplicationConfiguration.g:7867:2: rule__GenerationTask__Group_3_5__1__Impl rule__GenerationTask__Group_3_5__2 + // InternalApplicationConfiguration.g:7872:1: ( rule__GenerationTask__Group_3_5__1__Impl rule__GenerationTask__Group_3_5__2 ) + // InternalApplicationConfiguration.g:7873:2: rule__GenerationTask__Group_3_5__1__Impl rule__GenerationTask__Group_3_5__2 { pushFollow(FOLLOW_9); rule__GenerationTask__Group_3_5__1__Impl(); @@ -24385,20 +24412,20 @@ public final void rule__GenerationTask__Group_3_5__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_5__1__Impl" - // InternalApplicationConfiguration.g:7874:1: rule__GenerationTask__Group_3_5__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7880:1: rule__GenerationTask__Group_3_5__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_5__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7878:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7879:1: ( '=' ) + // InternalApplicationConfiguration.g:7884:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7885:1: ( '=' ) { - // InternalApplicationConfiguration.g:7879:1: ( '=' ) - // InternalApplicationConfiguration.g:7880:2: '=' + // InternalApplicationConfiguration.g:7885:1: ( '=' ) + // InternalApplicationConfiguration.g:7886:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_5_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_5_1()); } @@ -24422,14 +24449,14 @@ public final void rule__GenerationTask__Group_3_5__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_5__2" - // InternalApplicationConfiguration.g:7889:1: rule__GenerationTask__Group_3_5__2 : rule__GenerationTask__Group_3_5__2__Impl ; + // InternalApplicationConfiguration.g:7895:1: rule__GenerationTask__Group_3_5__2 : rule__GenerationTask__Group_3_5__2__Impl ; public final void rule__GenerationTask__Group_3_5__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7893:1: ( rule__GenerationTask__Group_3_5__2__Impl ) - // InternalApplicationConfiguration.g:7894:2: rule__GenerationTask__Group_3_5__2__Impl + // InternalApplicationConfiguration.g:7899:1: ( rule__GenerationTask__Group_3_5__2__Impl ) + // InternalApplicationConfiguration.g:7900:2: rule__GenerationTask__Group_3_5__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_5__2__Impl(); @@ -24455,21 +24482,21 @@ public final void rule__GenerationTask__Group_3_5__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_5__2__Impl" - // InternalApplicationConfiguration.g:7900:1: rule__GenerationTask__Group_3_5__2__Impl : ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) ; + // InternalApplicationConfiguration.g:7906:1: rule__GenerationTask__Group_3_5__2__Impl : ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) ; public final void rule__GenerationTask__Group_3_5__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7904:1: ( ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) ) - // InternalApplicationConfiguration.g:7905:1: ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) + // InternalApplicationConfiguration.g:7910:1: ( ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) ) + // InternalApplicationConfiguration.g:7911:1: ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) { - // InternalApplicationConfiguration.g:7905:1: ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) - // InternalApplicationConfiguration.g:7906:2: ( rule__GenerationTask__RunsAssignment_3_5_2 ) + // InternalApplicationConfiguration.g:7911:1: ( ( rule__GenerationTask__RunsAssignment_3_5_2 ) ) + // InternalApplicationConfiguration.g:7912:2: ( rule__GenerationTask__RunsAssignment_3_5_2 ) { before(grammarAccess.getGenerationTaskAccess().getRunsAssignment_3_5_2()); - // InternalApplicationConfiguration.g:7907:2: ( rule__GenerationTask__RunsAssignment_3_5_2 ) - // InternalApplicationConfiguration.g:7907:3: rule__GenerationTask__RunsAssignment_3_5_2 + // InternalApplicationConfiguration.g:7913:2: ( rule__GenerationTask__RunsAssignment_3_5_2 ) + // InternalApplicationConfiguration.g:7913:3: rule__GenerationTask__RunsAssignment_3_5_2 { pushFollow(FOLLOW_2); rule__GenerationTask__RunsAssignment_3_5_2(); @@ -24502,14 +24529,14 @@ public final void rule__GenerationTask__Group_3_5__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_6__0" - // InternalApplicationConfiguration.g:7916:1: rule__GenerationTask__Group_3_6__0 : rule__GenerationTask__Group_3_6__0__Impl rule__GenerationTask__Group_3_6__1 ; + // InternalApplicationConfiguration.g:7922:1: rule__GenerationTask__Group_3_6__0 : rule__GenerationTask__Group_3_6__0__Impl rule__GenerationTask__Group_3_6__1 ; public final void rule__GenerationTask__Group_3_6__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7920:1: ( rule__GenerationTask__Group_3_6__0__Impl rule__GenerationTask__Group_3_6__1 ) - // InternalApplicationConfiguration.g:7921:2: rule__GenerationTask__Group_3_6__0__Impl rule__GenerationTask__Group_3_6__1 + // InternalApplicationConfiguration.g:7926:1: ( rule__GenerationTask__Group_3_6__0__Impl rule__GenerationTask__Group_3_6__1 ) + // InternalApplicationConfiguration.g:7927:2: rule__GenerationTask__Group_3_6__0__Impl rule__GenerationTask__Group_3_6__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_6__0__Impl(); @@ -24540,20 +24567,20 @@ public final void rule__GenerationTask__Group_3_6__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_6__0__Impl" - // InternalApplicationConfiguration.g:7928:1: rule__GenerationTask__Group_3_6__0__Impl : ( 'solver' ) ; + // InternalApplicationConfiguration.g:7934:1: rule__GenerationTask__Group_3_6__0__Impl : ( 'solver' ) ; public final void rule__GenerationTask__Group_3_6__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7932:1: ( ( 'solver' ) ) - // InternalApplicationConfiguration.g:7933:1: ( 'solver' ) + // InternalApplicationConfiguration.g:7938:1: ( ( 'solver' ) ) + // InternalApplicationConfiguration.g:7939:1: ( 'solver' ) { - // InternalApplicationConfiguration.g:7933:1: ( 'solver' ) - // InternalApplicationConfiguration.g:7934:2: 'solver' + // InternalApplicationConfiguration.g:7939:1: ( 'solver' ) + // InternalApplicationConfiguration.g:7940:2: 'solver' { before(grammarAccess.getGenerationTaskAccess().getSolverKeyword_3_6_0()); - match(input,49,FOLLOW_2); + match(input,50,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getSolverKeyword_3_6_0()); } @@ -24577,14 +24604,14 @@ public final void rule__GenerationTask__Group_3_6__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_6__1" - // InternalApplicationConfiguration.g:7943:1: rule__GenerationTask__Group_3_6__1 : rule__GenerationTask__Group_3_6__1__Impl rule__GenerationTask__Group_3_6__2 ; + // InternalApplicationConfiguration.g:7949:1: rule__GenerationTask__Group_3_6__1 : rule__GenerationTask__Group_3_6__1__Impl rule__GenerationTask__Group_3_6__2 ; public final void rule__GenerationTask__Group_3_6__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7947:1: ( rule__GenerationTask__Group_3_6__1__Impl rule__GenerationTask__Group_3_6__2 ) - // InternalApplicationConfiguration.g:7948:2: rule__GenerationTask__Group_3_6__1__Impl rule__GenerationTask__Group_3_6__2 + // InternalApplicationConfiguration.g:7953:1: ( rule__GenerationTask__Group_3_6__1__Impl rule__GenerationTask__Group_3_6__2 ) + // InternalApplicationConfiguration.g:7954:2: rule__GenerationTask__Group_3_6__1__Impl rule__GenerationTask__Group_3_6__2 { pushFollow(FOLLOW_44); rule__GenerationTask__Group_3_6__1__Impl(); @@ -24615,20 +24642,20 @@ public final void rule__GenerationTask__Group_3_6__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_6__1__Impl" - // InternalApplicationConfiguration.g:7955:1: rule__GenerationTask__Group_3_6__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:7961:1: rule__GenerationTask__Group_3_6__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_6__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7959:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:7960:1: ( '=' ) + // InternalApplicationConfiguration.g:7965:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:7966:1: ( '=' ) { - // InternalApplicationConfiguration.g:7960:1: ( '=' ) - // InternalApplicationConfiguration.g:7961:2: '=' + // InternalApplicationConfiguration.g:7966:1: ( '=' ) + // InternalApplicationConfiguration.g:7967:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_6_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_6_1()); } @@ -24652,14 +24679,14 @@ public final void rule__GenerationTask__Group_3_6__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_6__2" - // InternalApplicationConfiguration.g:7970:1: rule__GenerationTask__Group_3_6__2 : rule__GenerationTask__Group_3_6__2__Impl ; + // InternalApplicationConfiguration.g:7976:1: rule__GenerationTask__Group_3_6__2 : rule__GenerationTask__Group_3_6__2__Impl ; public final void rule__GenerationTask__Group_3_6__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7974:1: ( rule__GenerationTask__Group_3_6__2__Impl ) - // InternalApplicationConfiguration.g:7975:2: rule__GenerationTask__Group_3_6__2__Impl + // InternalApplicationConfiguration.g:7980:1: ( rule__GenerationTask__Group_3_6__2__Impl ) + // InternalApplicationConfiguration.g:7981:2: rule__GenerationTask__Group_3_6__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_6__2__Impl(); @@ -24685,21 +24712,21 @@ public final void rule__GenerationTask__Group_3_6__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_6__2__Impl" - // InternalApplicationConfiguration.g:7981:1: rule__GenerationTask__Group_3_6__2__Impl : ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) ; + // InternalApplicationConfiguration.g:7987:1: rule__GenerationTask__Group_3_6__2__Impl : ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) ; public final void rule__GenerationTask__Group_3_6__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:7985:1: ( ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) ) - // InternalApplicationConfiguration.g:7986:1: ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) + // InternalApplicationConfiguration.g:7991:1: ( ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) ) + // InternalApplicationConfiguration.g:7992:1: ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) { - // InternalApplicationConfiguration.g:7986:1: ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) - // InternalApplicationConfiguration.g:7987:2: ( rule__GenerationTask__SolverAssignment_3_6_2 ) + // InternalApplicationConfiguration.g:7992:1: ( ( rule__GenerationTask__SolverAssignment_3_6_2 ) ) + // InternalApplicationConfiguration.g:7993:2: ( rule__GenerationTask__SolverAssignment_3_6_2 ) { before(grammarAccess.getGenerationTaskAccess().getSolverAssignment_3_6_2()); - // InternalApplicationConfiguration.g:7988:2: ( rule__GenerationTask__SolverAssignment_3_6_2 ) - // InternalApplicationConfiguration.g:7988:3: rule__GenerationTask__SolverAssignment_3_6_2 + // InternalApplicationConfiguration.g:7994:2: ( rule__GenerationTask__SolverAssignment_3_6_2 ) + // InternalApplicationConfiguration.g:7994:3: rule__GenerationTask__SolverAssignment_3_6_2 { pushFollow(FOLLOW_2); rule__GenerationTask__SolverAssignment_3_6_2(); @@ -24732,14 +24759,14 @@ public final void rule__GenerationTask__Group_3_6__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_7__0" - // InternalApplicationConfiguration.g:7997:1: rule__GenerationTask__Group_3_7__0 : rule__GenerationTask__Group_3_7__0__Impl rule__GenerationTask__Group_3_7__1 ; + // InternalApplicationConfiguration.g:8003:1: rule__GenerationTask__Group_3_7__0 : rule__GenerationTask__Group_3_7__0__Impl rule__GenerationTask__Group_3_7__1 ; public final void rule__GenerationTask__Group_3_7__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8001:1: ( rule__GenerationTask__Group_3_7__0__Impl rule__GenerationTask__Group_3_7__1 ) - // InternalApplicationConfiguration.g:8002:2: rule__GenerationTask__Group_3_7__0__Impl rule__GenerationTask__Group_3_7__1 + // InternalApplicationConfiguration.g:8007:1: ( rule__GenerationTask__Group_3_7__0__Impl rule__GenerationTask__Group_3_7__1 ) + // InternalApplicationConfiguration.g:8008:2: rule__GenerationTask__Group_3_7__0__Impl rule__GenerationTask__Group_3_7__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_7__0__Impl(); @@ -24770,20 +24797,20 @@ public final void rule__GenerationTask__Group_3_7__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_7__0__Impl" - // InternalApplicationConfiguration.g:8009:1: rule__GenerationTask__Group_3_7__0__Impl : ( 'config' ) ; + // InternalApplicationConfiguration.g:8015:1: rule__GenerationTask__Group_3_7__0__Impl : ( 'config' ) ; public final void rule__GenerationTask__Group_3_7__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8013:1: ( ( 'config' ) ) - // InternalApplicationConfiguration.g:8014:1: ( 'config' ) + // InternalApplicationConfiguration.g:8019:1: ( ( 'config' ) ) + // InternalApplicationConfiguration.g:8020:1: ( 'config' ) { - // InternalApplicationConfiguration.g:8014:1: ( 'config' ) - // InternalApplicationConfiguration.g:8015:2: 'config' + // InternalApplicationConfiguration.g:8020:1: ( 'config' ) + // InternalApplicationConfiguration.g:8021:2: 'config' { before(grammarAccess.getGenerationTaskAccess().getConfigKeyword_3_7_0()); - match(input,34,FOLLOW_2); + match(input,35,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getConfigKeyword_3_7_0()); } @@ -24807,14 +24834,14 @@ public final void rule__GenerationTask__Group_3_7__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_7__1" - // InternalApplicationConfiguration.g:8024:1: rule__GenerationTask__Group_3_7__1 : rule__GenerationTask__Group_3_7__1__Impl rule__GenerationTask__Group_3_7__2 ; + // InternalApplicationConfiguration.g:8030:1: rule__GenerationTask__Group_3_7__1 : rule__GenerationTask__Group_3_7__1__Impl rule__GenerationTask__Group_3_7__2 ; public final void rule__GenerationTask__Group_3_7__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8028:1: ( rule__GenerationTask__Group_3_7__1__Impl rule__GenerationTask__Group_3_7__2 ) - // InternalApplicationConfiguration.g:8029:2: rule__GenerationTask__Group_3_7__1__Impl rule__GenerationTask__Group_3_7__2 + // InternalApplicationConfiguration.g:8034:1: ( rule__GenerationTask__Group_3_7__1__Impl rule__GenerationTask__Group_3_7__2 ) + // InternalApplicationConfiguration.g:8035:2: rule__GenerationTask__Group_3_7__1__Impl rule__GenerationTask__Group_3_7__2 { pushFollow(FOLLOW_43); rule__GenerationTask__Group_3_7__1__Impl(); @@ -24845,20 +24872,20 @@ public final void rule__GenerationTask__Group_3_7__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_7__1__Impl" - // InternalApplicationConfiguration.g:8036:1: rule__GenerationTask__Group_3_7__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:8042:1: rule__GenerationTask__Group_3_7__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_7__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8040:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:8041:1: ( '=' ) + // InternalApplicationConfiguration.g:8046:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:8047:1: ( '=' ) { - // InternalApplicationConfiguration.g:8041:1: ( '=' ) - // InternalApplicationConfiguration.g:8042:2: '=' + // InternalApplicationConfiguration.g:8047:1: ( '=' ) + // InternalApplicationConfiguration.g:8048:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_7_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_7_1()); } @@ -24882,14 +24909,14 @@ public final void rule__GenerationTask__Group_3_7__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_7__2" - // InternalApplicationConfiguration.g:8051:1: rule__GenerationTask__Group_3_7__2 : rule__GenerationTask__Group_3_7__2__Impl ; + // InternalApplicationConfiguration.g:8057:1: rule__GenerationTask__Group_3_7__2 : rule__GenerationTask__Group_3_7__2__Impl ; public final void rule__GenerationTask__Group_3_7__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8055:1: ( rule__GenerationTask__Group_3_7__2__Impl ) - // InternalApplicationConfiguration.g:8056:2: rule__GenerationTask__Group_3_7__2__Impl + // InternalApplicationConfiguration.g:8061:1: ( rule__GenerationTask__Group_3_7__2__Impl ) + // InternalApplicationConfiguration.g:8062:2: rule__GenerationTask__Group_3_7__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_7__2__Impl(); @@ -24915,21 +24942,21 @@ public final void rule__GenerationTask__Group_3_7__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_7__2__Impl" - // InternalApplicationConfiguration.g:8062:1: rule__GenerationTask__Group_3_7__2__Impl : ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) ; + // InternalApplicationConfiguration.g:8068:1: rule__GenerationTask__Group_3_7__2__Impl : ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) ; public final void rule__GenerationTask__Group_3_7__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8066:1: ( ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) ) - // InternalApplicationConfiguration.g:8067:1: ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) + // InternalApplicationConfiguration.g:8072:1: ( ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) ) + // InternalApplicationConfiguration.g:8073:1: ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) { - // InternalApplicationConfiguration.g:8067:1: ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) - // InternalApplicationConfiguration.g:8068:2: ( rule__GenerationTask__ConfigAssignment_3_7_2 ) + // InternalApplicationConfiguration.g:8073:1: ( ( rule__GenerationTask__ConfigAssignment_3_7_2 ) ) + // InternalApplicationConfiguration.g:8074:2: ( rule__GenerationTask__ConfigAssignment_3_7_2 ) { before(grammarAccess.getGenerationTaskAccess().getConfigAssignment_3_7_2()); - // InternalApplicationConfiguration.g:8069:2: ( rule__GenerationTask__ConfigAssignment_3_7_2 ) - // InternalApplicationConfiguration.g:8069:3: rule__GenerationTask__ConfigAssignment_3_7_2 + // InternalApplicationConfiguration.g:8075:2: ( rule__GenerationTask__ConfigAssignment_3_7_2 ) + // InternalApplicationConfiguration.g:8075:3: rule__GenerationTask__ConfigAssignment_3_7_2 { pushFollow(FOLLOW_2); rule__GenerationTask__ConfigAssignment_3_7_2(); @@ -24962,14 +24989,14 @@ public final void rule__GenerationTask__Group_3_7__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_8__0" - // InternalApplicationConfiguration.g:8078:1: rule__GenerationTask__Group_3_8__0 : rule__GenerationTask__Group_3_8__0__Impl rule__GenerationTask__Group_3_8__1 ; + // InternalApplicationConfiguration.g:8084:1: rule__GenerationTask__Group_3_8__0 : rule__GenerationTask__Group_3_8__0__Impl rule__GenerationTask__Group_3_8__1 ; public final void rule__GenerationTask__Group_3_8__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8082:1: ( rule__GenerationTask__Group_3_8__0__Impl rule__GenerationTask__Group_3_8__1 ) - // InternalApplicationConfiguration.g:8083:2: rule__GenerationTask__Group_3_8__0__Impl rule__GenerationTask__Group_3_8__1 + // InternalApplicationConfiguration.g:8088:1: ( rule__GenerationTask__Group_3_8__0__Impl rule__GenerationTask__Group_3_8__1 ) + // InternalApplicationConfiguration.g:8089:2: rule__GenerationTask__Group_3_8__0__Impl rule__GenerationTask__Group_3_8__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_8__0__Impl(); @@ -25000,20 +25027,20 @@ public final void rule__GenerationTask__Group_3_8__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_8__0__Impl" - // InternalApplicationConfiguration.g:8090:1: rule__GenerationTask__Group_3_8__0__Impl : ( 'debug' ) ; + // InternalApplicationConfiguration.g:8096:1: rule__GenerationTask__Group_3_8__0__Impl : ( 'debug' ) ; public final void rule__GenerationTask__Group_3_8__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8094:1: ( ( 'debug' ) ) - // InternalApplicationConfiguration.g:8095:1: ( 'debug' ) + // InternalApplicationConfiguration.g:8100:1: ( ( 'debug' ) ) + // InternalApplicationConfiguration.g:8101:1: ( 'debug' ) { - // InternalApplicationConfiguration.g:8095:1: ( 'debug' ) - // InternalApplicationConfiguration.g:8096:2: 'debug' + // InternalApplicationConfiguration.g:8101:1: ( 'debug' ) + // InternalApplicationConfiguration.g:8102:2: 'debug' { before(grammarAccess.getGenerationTaskAccess().getDebugKeyword_3_8_0()); - match(input,50,FOLLOW_2); + match(input,51,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getDebugKeyword_3_8_0()); } @@ -25037,14 +25064,14 @@ public final void rule__GenerationTask__Group_3_8__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_8__1" - // InternalApplicationConfiguration.g:8105:1: rule__GenerationTask__Group_3_8__1 : rule__GenerationTask__Group_3_8__1__Impl rule__GenerationTask__Group_3_8__2 ; + // InternalApplicationConfiguration.g:8111:1: rule__GenerationTask__Group_3_8__1 : rule__GenerationTask__Group_3_8__1__Impl rule__GenerationTask__Group_3_8__2 ; public final void rule__GenerationTask__Group_3_8__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8109:1: ( rule__GenerationTask__Group_3_8__1__Impl rule__GenerationTask__Group_3_8__2 ) - // InternalApplicationConfiguration.g:8110:2: rule__GenerationTask__Group_3_8__1__Impl rule__GenerationTask__Group_3_8__2 + // InternalApplicationConfiguration.g:8115:1: ( rule__GenerationTask__Group_3_8__1__Impl rule__GenerationTask__Group_3_8__2 ) + // InternalApplicationConfiguration.g:8116:2: rule__GenerationTask__Group_3_8__1__Impl rule__GenerationTask__Group_3_8__2 { pushFollow(FOLLOW_21); rule__GenerationTask__Group_3_8__1__Impl(); @@ -25075,20 +25102,20 @@ public final void rule__GenerationTask__Group_3_8__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_8__1__Impl" - // InternalApplicationConfiguration.g:8117:1: rule__GenerationTask__Group_3_8__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:8123:1: rule__GenerationTask__Group_3_8__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_8__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8121:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:8122:1: ( '=' ) + // InternalApplicationConfiguration.g:8127:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:8128:1: ( '=' ) { - // InternalApplicationConfiguration.g:8122:1: ( '=' ) - // InternalApplicationConfiguration.g:8123:2: '=' + // InternalApplicationConfiguration.g:8128:1: ( '=' ) + // InternalApplicationConfiguration.g:8129:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_8_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_8_1()); } @@ -25112,14 +25139,14 @@ public final void rule__GenerationTask__Group_3_8__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_8__2" - // InternalApplicationConfiguration.g:8132:1: rule__GenerationTask__Group_3_8__2 : rule__GenerationTask__Group_3_8__2__Impl ; + // InternalApplicationConfiguration.g:8138:1: rule__GenerationTask__Group_3_8__2 : rule__GenerationTask__Group_3_8__2__Impl ; public final void rule__GenerationTask__Group_3_8__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8136:1: ( rule__GenerationTask__Group_3_8__2__Impl ) - // InternalApplicationConfiguration.g:8137:2: rule__GenerationTask__Group_3_8__2__Impl + // InternalApplicationConfiguration.g:8142:1: ( rule__GenerationTask__Group_3_8__2__Impl ) + // InternalApplicationConfiguration.g:8143:2: rule__GenerationTask__Group_3_8__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_8__2__Impl(); @@ -25145,21 +25172,21 @@ public final void rule__GenerationTask__Group_3_8__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_8__2__Impl" - // InternalApplicationConfiguration.g:8143:1: rule__GenerationTask__Group_3_8__2__Impl : ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) ; + // InternalApplicationConfiguration.g:8149:1: rule__GenerationTask__Group_3_8__2__Impl : ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) ; public final void rule__GenerationTask__Group_3_8__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8147:1: ( ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) ) - // InternalApplicationConfiguration.g:8148:1: ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) + // InternalApplicationConfiguration.g:8153:1: ( ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) ) + // InternalApplicationConfiguration.g:8154:1: ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) { - // InternalApplicationConfiguration.g:8148:1: ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) - // InternalApplicationConfiguration.g:8149:2: ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) + // InternalApplicationConfiguration.g:8154:1: ( ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) ) + // InternalApplicationConfiguration.g:8155:2: ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) { before(grammarAccess.getGenerationTaskAccess().getDebugFolderAssignment_3_8_2()); - // InternalApplicationConfiguration.g:8150:2: ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) - // InternalApplicationConfiguration.g:8150:3: rule__GenerationTask__DebugFolderAssignment_3_8_2 + // InternalApplicationConfiguration.g:8156:2: ( rule__GenerationTask__DebugFolderAssignment_3_8_2 ) + // InternalApplicationConfiguration.g:8156:3: rule__GenerationTask__DebugFolderAssignment_3_8_2 { pushFollow(FOLLOW_2); rule__GenerationTask__DebugFolderAssignment_3_8_2(); @@ -25192,14 +25219,14 @@ public final void rule__GenerationTask__Group_3_8__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_9__0" - // InternalApplicationConfiguration.g:8159:1: rule__GenerationTask__Group_3_9__0 : rule__GenerationTask__Group_3_9__0__Impl rule__GenerationTask__Group_3_9__1 ; + // InternalApplicationConfiguration.g:8165:1: rule__GenerationTask__Group_3_9__0 : rule__GenerationTask__Group_3_9__0__Impl rule__GenerationTask__Group_3_9__1 ; public final void rule__GenerationTask__Group_3_9__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8163:1: ( rule__GenerationTask__Group_3_9__0__Impl rule__GenerationTask__Group_3_9__1 ) - // InternalApplicationConfiguration.g:8164:2: rule__GenerationTask__Group_3_9__0__Impl rule__GenerationTask__Group_3_9__1 + // InternalApplicationConfiguration.g:8169:1: ( rule__GenerationTask__Group_3_9__0__Impl rule__GenerationTask__Group_3_9__1 ) + // InternalApplicationConfiguration.g:8170:2: rule__GenerationTask__Group_3_9__0__Impl rule__GenerationTask__Group_3_9__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_9__0__Impl(); @@ -25230,20 +25257,20 @@ public final void rule__GenerationTask__Group_3_9__0() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_9__0__Impl" - // InternalApplicationConfiguration.g:8171:1: rule__GenerationTask__Group_3_9__0__Impl : ( 'log' ) ; + // InternalApplicationConfiguration.g:8177:1: rule__GenerationTask__Group_3_9__0__Impl : ( 'log' ) ; public final void rule__GenerationTask__Group_3_9__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8175:1: ( ( 'log' ) ) - // InternalApplicationConfiguration.g:8176:1: ( 'log' ) + // InternalApplicationConfiguration.g:8181:1: ( ( 'log' ) ) + // InternalApplicationConfiguration.g:8182:1: ( 'log' ) { - // InternalApplicationConfiguration.g:8176:1: ( 'log' ) - // InternalApplicationConfiguration.g:8177:2: 'log' + // InternalApplicationConfiguration.g:8182:1: ( 'log' ) + // InternalApplicationConfiguration.g:8183:2: 'log' { before(grammarAccess.getGenerationTaskAccess().getLogKeyword_3_9_0()); - match(input,51,FOLLOW_2); + match(input,52,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getLogKeyword_3_9_0()); } @@ -25267,14 +25294,14 @@ public final void rule__GenerationTask__Group_3_9__0__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_9__1" - // InternalApplicationConfiguration.g:8186:1: rule__GenerationTask__Group_3_9__1 : rule__GenerationTask__Group_3_9__1__Impl rule__GenerationTask__Group_3_9__2 ; + // InternalApplicationConfiguration.g:8192:1: rule__GenerationTask__Group_3_9__1 : rule__GenerationTask__Group_3_9__1__Impl rule__GenerationTask__Group_3_9__2 ; public final void rule__GenerationTask__Group_3_9__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8190:1: ( rule__GenerationTask__Group_3_9__1__Impl rule__GenerationTask__Group_3_9__2 ) - // InternalApplicationConfiguration.g:8191:2: rule__GenerationTask__Group_3_9__1__Impl rule__GenerationTask__Group_3_9__2 + // InternalApplicationConfiguration.g:8196:1: ( rule__GenerationTask__Group_3_9__1__Impl rule__GenerationTask__Group_3_9__2 ) + // InternalApplicationConfiguration.g:8197:2: rule__GenerationTask__Group_3_9__1__Impl rule__GenerationTask__Group_3_9__2 { pushFollow(FOLLOW_21); rule__GenerationTask__Group_3_9__1__Impl(); @@ -25305,20 +25332,20 @@ public final void rule__GenerationTask__Group_3_9__1() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_9__1__Impl" - // InternalApplicationConfiguration.g:8198:1: rule__GenerationTask__Group_3_9__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:8204:1: rule__GenerationTask__Group_3_9__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_9__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8202:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:8203:1: ( '=' ) + // InternalApplicationConfiguration.g:8208:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:8209:1: ( '=' ) { - // InternalApplicationConfiguration.g:8203:1: ( '=' ) - // InternalApplicationConfiguration.g:8204:2: '=' + // InternalApplicationConfiguration.g:8209:1: ( '=' ) + // InternalApplicationConfiguration.g:8210:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_9_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_9_1()); } @@ -25342,14 +25369,14 @@ public final void rule__GenerationTask__Group_3_9__1__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_9__2" - // InternalApplicationConfiguration.g:8213:1: rule__GenerationTask__Group_3_9__2 : rule__GenerationTask__Group_3_9__2__Impl ; + // InternalApplicationConfiguration.g:8219:1: rule__GenerationTask__Group_3_9__2 : rule__GenerationTask__Group_3_9__2__Impl ; public final void rule__GenerationTask__Group_3_9__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8217:1: ( rule__GenerationTask__Group_3_9__2__Impl ) - // InternalApplicationConfiguration.g:8218:2: rule__GenerationTask__Group_3_9__2__Impl + // InternalApplicationConfiguration.g:8223:1: ( rule__GenerationTask__Group_3_9__2__Impl ) + // InternalApplicationConfiguration.g:8224:2: rule__GenerationTask__Group_3_9__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_9__2__Impl(); @@ -25375,21 +25402,21 @@ public final void rule__GenerationTask__Group_3_9__2() throws RecognitionExcepti // $ANTLR start "rule__GenerationTask__Group_3_9__2__Impl" - // InternalApplicationConfiguration.g:8224:1: rule__GenerationTask__Group_3_9__2__Impl : ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) ; + // InternalApplicationConfiguration.g:8230:1: rule__GenerationTask__Group_3_9__2__Impl : ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) ; public final void rule__GenerationTask__Group_3_9__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8228:1: ( ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) ) - // InternalApplicationConfiguration.g:8229:1: ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) + // InternalApplicationConfiguration.g:8234:1: ( ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) ) + // InternalApplicationConfiguration.g:8235:1: ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) { - // InternalApplicationConfiguration.g:8229:1: ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) - // InternalApplicationConfiguration.g:8230:2: ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) + // InternalApplicationConfiguration.g:8235:1: ( ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) ) + // InternalApplicationConfiguration.g:8236:2: ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) { before(grammarAccess.getGenerationTaskAccess().getTargetLogFileAssignment_3_9_2()); - // InternalApplicationConfiguration.g:8231:2: ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) - // InternalApplicationConfiguration.g:8231:3: rule__GenerationTask__TargetLogFileAssignment_3_9_2 + // InternalApplicationConfiguration.g:8237:2: ( rule__GenerationTask__TargetLogFileAssignment_3_9_2 ) + // InternalApplicationConfiguration.g:8237:3: rule__GenerationTask__TargetLogFileAssignment_3_9_2 { pushFollow(FOLLOW_2); rule__GenerationTask__TargetLogFileAssignment_3_9_2(); @@ -25422,14 +25449,14 @@ public final void rule__GenerationTask__Group_3_9__2__Impl() throws RecognitionE // $ANTLR start "rule__GenerationTask__Group_3_10__0" - // InternalApplicationConfiguration.g:8240:1: rule__GenerationTask__Group_3_10__0 : rule__GenerationTask__Group_3_10__0__Impl rule__GenerationTask__Group_3_10__1 ; + // InternalApplicationConfiguration.g:8246:1: rule__GenerationTask__Group_3_10__0 : rule__GenerationTask__Group_3_10__0__Impl rule__GenerationTask__Group_3_10__1 ; public final void rule__GenerationTask__Group_3_10__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8244:1: ( rule__GenerationTask__Group_3_10__0__Impl rule__GenerationTask__Group_3_10__1 ) - // InternalApplicationConfiguration.g:8245:2: rule__GenerationTask__Group_3_10__0__Impl rule__GenerationTask__Group_3_10__1 + // InternalApplicationConfiguration.g:8250:1: ( rule__GenerationTask__Group_3_10__0__Impl rule__GenerationTask__Group_3_10__1 ) + // InternalApplicationConfiguration.g:8251:2: rule__GenerationTask__Group_3_10__0__Impl rule__GenerationTask__Group_3_10__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_10__0__Impl(); @@ -25460,20 +25487,20 @@ public final void rule__GenerationTask__Group_3_10__0() throws RecognitionExcept // $ANTLR start "rule__GenerationTask__Group_3_10__0__Impl" - // InternalApplicationConfiguration.g:8252:1: rule__GenerationTask__Group_3_10__0__Impl : ( 'statistics' ) ; + // InternalApplicationConfiguration.g:8258:1: rule__GenerationTask__Group_3_10__0__Impl : ( 'statistics' ) ; public final void rule__GenerationTask__Group_3_10__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8256:1: ( ( 'statistics' ) ) - // InternalApplicationConfiguration.g:8257:1: ( 'statistics' ) + // InternalApplicationConfiguration.g:8262:1: ( ( 'statistics' ) ) + // InternalApplicationConfiguration.g:8263:1: ( 'statistics' ) { - // InternalApplicationConfiguration.g:8257:1: ( 'statistics' ) - // InternalApplicationConfiguration.g:8258:2: 'statistics' + // InternalApplicationConfiguration.g:8263:1: ( 'statistics' ) + // InternalApplicationConfiguration.g:8264:2: 'statistics' { before(grammarAccess.getGenerationTaskAccess().getStatisticsKeyword_3_10_0()); - match(input,52,FOLLOW_2); + match(input,53,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getStatisticsKeyword_3_10_0()); } @@ -25497,14 +25524,14 @@ public final void rule__GenerationTask__Group_3_10__0__Impl() throws Recognition // $ANTLR start "rule__GenerationTask__Group_3_10__1" - // InternalApplicationConfiguration.g:8267:1: rule__GenerationTask__Group_3_10__1 : rule__GenerationTask__Group_3_10__1__Impl rule__GenerationTask__Group_3_10__2 ; + // InternalApplicationConfiguration.g:8273:1: rule__GenerationTask__Group_3_10__1 : rule__GenerationTask__Group_3_10__1__Impl rule__GenerationTask__Group_3_10__2 ; public final void rule__GenerationTask__Group_3_10__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8271:1: ( rule__GenerationTask__Group_3_10__1__Impl rule__GenerationTask__Group_3_10__2 ) - // InternalApplicationConfiguration.g:8272:2: rule__GenerationTask__Group_3_10__1__Impl rule__GenerationTask__Group_3_10__2 + // InternalApplicationConfiguration.g:8277:1: ( rule__GenerationTask__Group_3_10__1__Impl rule__GenerationTask__Group_3_10__2 ) + // InternalApplicationConfiguration.g:8278:2: rule__GenerationTask__Group_3_10__1__Impl rule__GenerationTask__Group_3_10__2 { pushFollow(FOLLOW_21); rule__GenerationTask__Group_3_10__1__Impl(); @@ -25535,20 +25562,20 @@ public final void rule__GenerationTask__Group_3_10__1() throws RecognitionExcept // $ANTLR start "rule__GenerationTask__Group_3_10__1__Impl" - // InternalApplicationConfiguration.g:8279:1: rule__GenerationTask__Group_3_10__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:8285:1: rule__GenerationTask__Group_3_10__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_10__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8283:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:8284:1: ( '=' ) + // InternalApplicationConfiguration.g:8289:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:8290:1: ( '=' ) { - // InternalApplicationConfiguration.g:8284:1: ( '=' ) - // InternalApplicationConfiguration.g:8285:2: '=' + // InternalApplicationConfiguration.g:8290:1: ( '=' ) + // InternalApplicationConfiguration.g:8291:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_10_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_10_1()); } @@ -25572,14 +25599,14 @@ public final void rule__GenerationTask__Group_3_10__1__Impl() throws Recognition // $ANTLR start "rule__GenerationTask__Group_3_10__2" - // InternalApplicationConfiguration.g:8294:1: rule__GenerationTask__Group_3_10__2 : rule__GenerationTask__Group_3_10__2__Impl ; + // InternalApplicationConfiguration.g:8300:1: rule__GenerationTask__Group_3_10__2 : rule__GenerationTask__Group_3_10__2__Impl ; public final void rule__GenerationTask__Group_3_10__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8298:1: ( rule__GenerationTask__Group_3_10__2__Impl ) - // InternalApplicationConfiguration.g:8299:2: rule__GenerationTask__Group_3_10__2__Impl + // InternalApplicationConfiguration.g:8304:1: ( rule__GenerationTask__Group_3_10__2__Impl ) + // InternalApplicationConfiguration.g:8305:2: rule__GenerationTask__Group_3_10__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_10__2__Impl(); @@ -25605,21 +25632,21 @@ public final void rule__GenerationTask__Group_3_10__2() throws RecognitionExcept // $ANTLR start "rule__GenerationTask__Group_3_10__2__Impl" - // InternalApplicationConfiguration.g:8305:1: rule__GenerationTask__Group_3_10__2__Impl : ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) ; + // InternalApplicationConfiguration.g:8311:1: rule__GenerationTask__Group_3_10__2__Impl : ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) ; public final void rule__GenerationTask__Group_3_10__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8309:1: ( ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) ) - // InternalApplicationConfiguration.g:8310:1: ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) + // InternalApplicationConfiguration.g:8315:1: ( ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) ) + // InternalApplicationConfiguration.g:8316:1: ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) { - // InternalApplicationConfiguration.g:8310:1: ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) - // InternalApplicationConfiguration.g:8311:2: ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) + // InternalApplicationConfiguration.g:8316:1: ( ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) ) + // InternalApplicationConfiguration.g:8317:2: ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) { before(grammarAccess.getGenerationTaskAccess().getTargetStatisticsFileAssignment_3_10_2()); - // InternalApplicationConfiguration.g:8312:2: ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) - // InternalApplicationConfiguration.g:8312:3: rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 + // InternalApplicationConfiguration.g:8318:2: ( rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 ) + // InternalApplicationConfiguration.g:8318:3: rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 { pushFollow(FOLLOW_2); rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2(); @@ -25652,14 +25679,14 @@ public final void rule__GenerationTask__Group_3_10__2__Impl() throws Recognition // $ANTLR start "rule__GenerationTask__Group_3_11__0" - // InternalApplicationConfiguration.g:8321:1: rule__GenerationTask__Group_3_11__0 : rule__GenerationTask__Group_3_11__0__Impl rule__GenerationTask__Group_3_11__1 ; + // InternalApplicationConfiguration.g:8327:1: rule__GenerationTask__Group_3_11__0 : rule__GenerationTask__Group_3_11__0__Impl rule__GenerationTask__Group_3_11__1 ; public final void rule__GenerationTask__Group_3_11__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8325:1: ( rule__GenerationTask__Group_3_11__0__Impl rule__GenerationTask__Group_3_11__1 ) - // InternalApplicationConfiguration.g:8326:2: rule__GenerationTask__Group_3_11__0__Impl rule__GenerationTask__Group_3_11__1 + // InternalApplicationConfiguration.g:8331:1: ( rule__GenerationTask__Group_3_11__0__Impl rule__GenerationTask__Group_3_11__1 ) + // InternalApplicationConfiguration.g:8332:2: rule__GenerationTask__Group_3_11__0__Impl rule__GenerationTask__Group_3_11__1 { pushFollow(FOLLOW_13); rule__GenerationTask__Group_3_11__0__Impl(); @@ -25690,20 +25717,20 @@ public final void rule__GenerationTask__Group_3_11__0() throws RecognitionExcept // $ANTLR start "rule__GenerationTask__Group_3_11__0__Impl" - // InternalApplicationConfiguration.g:8333:1: rule__GenerationTask__Group_3_11__0__Impl : ( 'output' ) ; + // InternalApplicationConfiguration.g:8339:1: rule__GenerationTask__Group_3_11__0__Impl : ( 'output' ) ; public final void rule__GenerationTask__Group_3_11__0__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8337:1: ( ( 'output' ) ) - // InternalApplicationConfiguration.g:8338:1: ( 'output' ) + // InternalApplicationConfiguration.g:8343:1: ( ( 'output' ) ) + // InternalApplicationConfiguration.g:8344:1: ( 'output' ) { - // InternalApplicationConfiguration.g:8338:1: ( 'output' ) - // InternalApplicationConfiguration.g:8339:2: 'output' + // InternalApplicationConfiguration.g:8344:1: ( 'output' ) + // InternalApplicationConfiguration.g:8345:2: 'output' { before(grammarAccess.getGenerationTaskAccess().getOutputKeyword_3_11_0()); - match(input,53,FOLLOW_2); + match(input,54,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getOutputKeyword_3_11_0()); } @@ -25727,14 +25754,14 @@ public final void rule__GenerationTask__Group_3_11__0__Impl() throws Recognition // $ANTLR start "rule__GenerationTask__Group_3_11__1" - // InternalApplicationConfiguration.g:8348:1: rule__GenerationTask__Group_3_11__1 : rule__GenerationTask__Group_3_11__1__Impl rule__GenerationTask__Group_3_11__2 ; + // InternalApplicationConfiguration.g:8354:1: rule__GenerationTask__Group_3_11__1 : rule__GenerationTask__Group_3_11__1__Impl rule__GenerationTask__Group_3_11__2 ; public final void rule__GenerationTask__Group_3_11__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8352:1: ( rule__GenerationTask__Group_3_11__1__Impl rule__GenerationTask__Group_3_11__2 ) - // InternalApplicationConfiguration.g:8353:2: rule__GenerationTask__Group_3_11__1__Impl rule__GenerationTask__Group_3_11__2 + // InternalApplicationConfiguration.g:8358:1: ( rule__GenerationTask__Group_3_11__1__Impl rule__GenerationTask__Group_3_11__2 ) + // InternalApplicationConfiguration.g:8359:2: rule__GenerationTask__Group_3_11__1__Impl rule__GenerationTask__Group_3_11__2 { pushFollow(FOLLOW_21); rule__GenerationTask__Group_3_11__1__Impl(); @@ -25765,20 +25792,20 @@ public final void rule__GenerationTask__Group_3_11__1() throws RecognitionExcept // $ANTLR start "rule__GenerationTask__Group_3_11__1__Impl" - // InternalApplicationConfiguration.g:8360:1: rule__GenerationTask__Group_3_11__1__Impl : ( '=' ) ; + // InternalApplicationConfiguration.g:8366:1: rule__GenerationTask__Group_3_11__1__Impl : ( '=' ) ; public final void rule__GenerationTask__Group_3_11__1__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8364:1: ( ( '=' ) ) - // InternalApplicationConfiguration.g:8365:1: ( '=' ) + // InternalApplicationConfiguration.g:8370:1: ( ( '=' ) ) + // InternalApplicationConfiguration.g:8371:1: ( '=' ) { - // InternalApplicationConfiguration.g:8365:1: ( '=' ) - // InternalApplicationConfiguration.g:8366:2: '=' + // InternalApplicationConfiguration.g:8371:1: ( '=' ) + // InternalApplicationConfiguration.g:8372:2: '=' { before(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_11_1()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getEqualsSignKeyword_3_11_1()); } @@ -25802,14 +25829,14 @@ public final void rule__GenerationTask__Group_3_11__1__Impl() throws Recognition // $ANTLR start "rule__GenerationTask__Group_3_11__2" - // InternalApplicationConfiguration.g:8375:1: rule__GenerationTask__Group_3_11__2 : rule__GenerationTask__Group_3_11__2__Impl ; + // InternalApplicationConfiguration.g:8381:1: rule__GenerationTask__Group_3_11__2 : rule__GenerationTask__Group_3_11__2__Impl ; public final void rule__GenerationTask__Group_3_11__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8379:1: ( rule__GenerationTask__Group_3_11__2__Impl ) - // InternalApplicationConfiguration.g:8380:2: rule__GenerationTask__Group_3_11__2__Impl + // InternalApplicationConfiguration.g:8385:1: ( rule__GenerationTask__Group_3_11__2__Impl ) + // InternalApplicationConfiguration.g:8386:2: rule__GenerationTask__Group_3_11__2__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_11__2__Impl(); @@ -25835,21 +25862,21 @@ public final void rule__GenerationTask__Group_3_11__2() throws RecognitionExcept // $ANTLR start "rule__GenerationTask__Group_3_11__2__Impl" - // InternalApplicationConfiguration.g:8386:1: rule__GenerationTask__Group_3_11__2__Impl : ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) ; + // InternalApplicationConfiguration.g:8392:1: rule__GenerationTask__Group_3_11__2__Impl : ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) ; public final void rule__GenerationTask__Group_3_11__2__Impl() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8390:1: ( ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) ) - // InternalApplicationConfiguration.g:8391:1: ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) + // InternalApplicationConfiguration.g:8396:1: ( ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) ) + // InternalApplicationConfiguration.g:8397:1: ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) { - // InternalApplicationConfiguration.g:8391:1: ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) - // InternalApplicationConfiguration.g:8392:2: ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) + // InternalApplicationConfiguration.g:8397:1: ( ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) ) + // InternalApplicationConfiguration.g:8398:2: ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) { before(grammarAccess.getGenerationTaskAccess().getTagetFolderAssignment_3_11_2()); - // InternalApplicationConfiguration.g:8393:2: ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) - // InternalApplicationConfiguration.g:8393:3: rule__GenerationTask__TagetFolderAssignment_3_11_2 + // InternalApplicationConfiguration.g:8399:2: ( rule__GenerationTask__TagetFolderAssignment_3_11_2 ) + // InternalApplicationConfiguration.g:8399:3: rule__GenerationTask__TagetFolderAssignment_3_11_2 { pushFollow(FOLLOW_2); rule__GenerationTask__TagetFolderAssignment_3_11_2(); @@ -25882,22 +25909,22 @@ public final void rule__GenerationTask__Group_3_11__2__Impl() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3" - // InternalApplicationConfiguration.g:8402:1: rule__GenerationTask__UnorderedGroup_3 : ( rule__GenerationTask__UnorderedGroup_3__0 )? ; + // InternalApplicationConfiguration.g:8408:1: rule__GenerationTask__UnorderedGroup_3 : ( rule__GenerationTask__UnorderedGroup_3__0 )? ; public final void rule__GenerationTask__UnorderedGroup_3() throws RecognitionException { int stackSize = keepStackSize(); getUnorderedGroupHelper().enter(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3()); try { - // InternalApplicationConfiguration.g:8407:1: ( ( rule__GenerationTask__UnorderedGroup_3__0 )? ) - // InternalApplicationConfiguration.g:8408:2: ( rule__GenerationTask__UnorderedGroup_3__0 )? + // InternalApplicationConfiguration.g:8413:1: ( ( rule__GenerationTask__UnorderedGroup_3__0 )? ) + // InternalApplicationConfiguration.g:8414:2: ( rule__GenerationTask__UnorderedGroup_3__0 )? { - // InternalApplicationConfiguration.g:8408:2: ( rule__GenerationTask__UnorderedGroup_3__0 )? + // InternalApplicationConfiguration.g:8414:2: ( rule__GenerationTask__UnorderedGroup_3__0 )? int alt56=2; alt56 = dfa56.predict(input); switch (alt56) { case 1 : - // InternalApplicationConfiguration.g:8408:2: rule__GenerationTask__UnorderedGroup_3__0 + // InternalApplicationConfiguration.g:8414:2: rule__GenerationTask__UnorderedGroup_3__0 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__0(); @@ -25930,31 +25957,31 @@ public final void rule__GenerationTask__UnorderedGroup_3() throws RecognitionExc // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__Impl" - // InternalApplicationConfiguration.g:8416:1: rule__GenerationTask__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) ; + // InternalApplicationConfiguration.g:8422:1: rule__GenerationTask__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) ; public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws RecognitionException { int stackSize = keepStackSize(); boolean selected = false; try { - // InternalApplicationConfiguration.g:8421:1: ( ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) ) - // InternalApplicationConfiguration.g:8422:3: ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) + // InternalApplicationConfiguration.g:8427:1: ( ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) ) + // InternalApplicationConfiguration.g:8428:3: ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) { - // InternalApplicationConfiguration.g:8422:3: ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) + // InternalApplicationConfiguration.g:8428:3: ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) ) int alt57=12; alt57 = dfa57.predict(input); switch (alt57) { case 1 : - // InternalApplicationConfiguration.g:8423:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) + // InternalApplicationConfiguration.g:8429:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8423:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) - // InternalApplicationConfiguration.g:8424:4: {...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) + // InternalApplicationConfiguration.g:8429:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) + // InternalApplicationConfiguration.g:8430:4: {...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0)"); } - // InternalApplicationConfiguration.g:8424:110: ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) - // InternalApplicationConfiguration.g:8425:5: ( ( rule__GenerationTask__Group_3_0__0 ) ) + // InternalApplicationConfiguration.g:8430:110: ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) + // InternalApplicationConfiguration.g:8431:5: ( ( rule__GenerationTask__Group_3_0__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0); @@ -25962,12 +25989,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8431:5: ( ( rule__GenerationTask__Group_3_0__0 ) ) - // InternalApplicationConfiguration.g:8432:6: ( rule__GenerationTask__Group_3_0__0 ) + // InternalApplicationConfiguration.g:8437:5: ( ( rule__GenerationTask__Group_3_0__0 ) ) + // InternalApplicationConfiguration.g:8438:6: ( rule__GenerationTask__Group_3_0__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_0()); - // InternalApplicationConfiguration.g:8433:6: ( rule__GenerationTask__Group_3_0__0 ) - // InternalApplicationConfiguration.g:8433:7: rule__GenerationTask__Group_3_0__0 + // InternalApplicationConfiguration.g:8439:6: ( rule__GenerationTask__Group_3_0__0 ) + // InternalApplicationConfiguration.g:8439:7: rule__GenerationTask__Group_3_0__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_0__0(); @@ -25991,16 +26018,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 2 : - // InternalApplicationConfiguration.g:8438:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) + // InternalApplicationConfiguration.g:8444:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8438:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) - // InternalApplicationConfiguration.g:8439:4: {...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) + // InternalApplicationConfiguration.g:8444:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) + // InternalApplicationConfiguration.g:8445:4: {...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1)"); } - // InternalApplicationConfiguration.g:8439:110: ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) - // InternalApplicationConfiguration.g:8440:5: ( ( rule__GenerationTask__Group_3_1__0 ) ) + // InternalApplicationConfiguration.g:8445:110: ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) + // InternalApplicationConfiguration.g:8446:5: ( ( rule__GenerationTask__Group_3_1__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1); @@ -26008,12 +26035,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8446:5: ( ( rule__GenerationTask__Group_3_1__0 ) ) - // InternalApplicationConfiguration.g:8447:6: ( rule__GenerationTask__Group_3_1__0 ) + // InternalApplicationConfiguration.g:8452:5: ( ( rule__GenerationTask__Group_3_1__0 ) ) + // InternalApplicationConfiguration.g:8453:6: ( rule__GenerationTask__Group_3_1__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_1()); - // InternalApplicationConfiguration.g:8448:6: ( rule__GenerationTask__Group_3_1__0 ) - // InternalApplicationConfiguration.g:8448:7: rule__GenerationTask__Group_3_1__0 + // InternalApplicationConfiguration.g:8454:6: ( rule__GenerationTask__Group_3_1__0 ) + // InternalApplicationConfiguration.g:8454:7: rule__GenerationTask__Group_3_1__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_1__0(); @@ -26037,16 +26064,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 3 : - // InternalApplicationConfiguration.g:8453:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) + // InternalApplicationConfiguration.g:8459:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8453:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) - // InternalApplicationConfiguration.g:8454:4: {...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) + // InternalApplicationConfiguration.g:8459:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) + // InternalApplicationConfiguration.g:8460:4: {...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2)"); } - // InternalApplicationConfiguration.g:8454:110: ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) - // InternalApplicationConfiguration.g:8455:5: ( ( rule__GenerationTask__Group_3_2__0 ) ) + // InternalApplicationConfiguration.g:8460:110: ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) + // InternalApplicationConfiguration.g:8461:5: ( ( rule__GenerationTask__Group_3_2__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2); @@ -26054,12 +26081,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8461:5: ( ( rule__GenerationTask__Group_3_2__0 ) ) - // InternalApplicationConfiguration.g:8462:6: ( rule__GenerationTask__Group_3_2__0 ) + // InternalApplicationConfiguration.g:8467:5: ( ( rule__GenerationTask__Group_3_2__0 ) ) + // InternalApplicationConfiguration.g:8468:6: ( rule__GenerationTask__Group_3_2__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_2()); - // InternalApplicationConfiguration.g:8463:6: ( rule__GenerationTask__Group_3_2__0 ) - // InternalApplicationConfiguration.g:8463:7: rule__GenerationTask__Group_3_2__0 + // InternalApplicationConfiguration.g:8469:6: ( rule__GenerationTask__Group_3_2__0 ) + // InternalApplicationConfiguration.g:8469:7: rule__GenerationTask__Group_3_2__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_2__0(); @@ -26083,16 +26110,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 4 : - // InternalApplicationConfiguration.g:8468:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) + // InternalApplicationConfiguration.g:8474:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8468:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) - // InternalApplicationConfiguration.g:8469:4: {...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) + // InternalApplicationConfiguration.g:8474:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) + // InternalApplicationConfiguration.g:8475:4: {...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3)"); } - // InternalApplicationConfiguration.g:8469:110: ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) - // InternalApplicationConfiguration.g:8470:5: ( ( rule__GenerationTask__Group_3_3__0 ) ) + // InternalApplicationConfiguration.g:8475:110: ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) + // InternalApplicationConfiguration.g:8476:5: ( ( rule__GenerationTask__Group_3_3__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3); @@ -26100,12 +26127,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8476:5: ( ( rule__GenerationTask__Group_3_3__0 ) ) - // InternalApplicationConfiguration.g:8477:6: ( rule__GenerationTask__Group_3_3__0 ) + // InternalApplicationConfiguration.g:8482:5: ( ( rule__GenerationTask__Group_3_3__0 ) ) + // InternalApplicationConfiguration.g:8483:6: ( rule__GenerationTask__Group_3_3__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_3()); - // InternalApplicationConfiguration.g:8478:6: ( rule__GenerationTask__Group_3_3__0 ) - // InternalApplicationConfiguration.g:8478:7: rule__GenerationTask__Group_3_3__0 + // InternalApplicationConfiguration.g:8484:6: ( rule__GenerationTask__Group_3_3__0 ) + // InternalApplicationConfiguration.g:8484:7: rule__GenerationTask__Group_3_3__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_3__0(); @@ -26129,16 +26156,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 5 : - // InternalApplicationConfiguration.g:8483:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) + // InternalApplicationConfiguration.g:8489:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8483:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) - // InternalApplicationConfiguration.g:8484:4: {...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) + // InternalApplicationConfiguration.g:8489:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) + // InternalApplicationConfiguration.g:8490:4: {...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4)"); } - // InternalApplicationConfiguration.g:8484:110: ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) - // InternalApplicationConfiguration.g:8485:5: ( ( rule__GenerationTask__Group_3_4__0 ) ) + // InternalApplicationConfiguration.g:8490:110: ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) + // InternalApplicationConfiguration.g:8491:5: ( ( rule__GenerationTask__Group_3_4__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4); @@ -26146,12 +26173,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8491:5: ( ( rule__GenerationTask__Group_3_4__0 ) ) - // InternalApplicationConfiguration.g:8492:6: ( rule__GenerationTask__Group_3_4__0 ) + // InternalApplicationConfiguration.g:8497:5: ( ( rule__GenerationTask__Group_3_4__0 ) ) + // InternalApplicationConfiguration.g:8498:6: ( rule__GenerationTask__Group_3_4__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_4()); - // InternalApplicationConfiguration.g:8493:6: ( rule__GenerationTask__Group_3_4__0 ) - // InternalApplicationConfiguration.g:8493:7: rule__GenerationTask__Group_3_4__0 + // InternalApplicationConfiguration.g:8499:6: ( rule__GenerationTask__Group_3_4__0 ) + // InternalApplicationConfiguration.g:8499:7: rule__GenerationTask__Group_3_4__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_4__0(); @@ -26175,16 +26202,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 6 : - // InternalApplicationConfiguration.g:8498:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) + // InternalApplicationConfiguration.g:8504:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8498:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) - // InternalApplicationConfiguration.g:8499:4: {...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) + // InternalApplicationConfiguration.g:8504:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) + // InternalApplicationConfiguration.g:8505:4: {...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5)"); } - // InternalApplicationConfiguration.g:8499:110: ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) - // InternalApplicationConfiguration.g:8500:5: ( ( rule__GenerationTask__Group_3_5__0 ) ) + // InternalApplicationConfiguration.g:8505:110: ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) + // InternalApplicationConfiguration.g:8506:5: ( ( rule__GenerationTask__Group_3_5__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5); @@ -26192,12 +26219,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8506:5: ( ( rule__GenerationTask__Group_3_5__0 ) ) - // InternalApplicationConfiguration.g:8507:6: ( rule__GenerationTask__Group_3_5__0 ) + // InternalApplicationConfiguration.g:8512:5: ( ( rule__GenerationTask__Group_3_5__0 ) ) + // InternalApplicationConfiguration.g:8513:6: ( rule__GenerationTask__Group_3_5__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_5()); - // InternalApplicationConfiguration.g:8508:6: ( rule__GenerationTask__Group_3_5__0 ) - // InternalApplicationConfiguration.g:8508:7: rule__GenerationTask__Group_3_5__0 + // InternalApplicationConfiguration.g:8514:6: ( rule__GenerationTask__Group_3_5__0 ) + // InternalApplicationConfiguration.g:8514:7: rule__GenerationTask__Group_3_5__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_5__0(); @@ -26221,16 +26248,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 7 : - // InternalApplicationConfiguration.g:8513:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) + // InternalApplicationConfiguration.g:8519:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8513:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) - // InternalApplicationConfiguration.g:8514:4: {...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) + // InternalApplicationConfiguration.g:8519:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) + // InternalApplicationConfiguration.g:8520:4: {...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6)"); } - // InternalApplicationConfiguration.g:8514:110: ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) - // InternalApplicationConfiguration.g:8515:5: ( ( rule__GenerationTask__Group_3_6__0 ) ) + // InternalApplicationConfiguration.g:8520:110: ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) + // InternalApplicationConfiguration.g:8521:5: ( ( rule__GenerationTask__Group_3_6__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6); @@ -26238,12 +26265,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8521:5: ( ( rule__GenerationTask__Group_3_6__0 ) ) - // InternalApplicationConfiguration.g:8522:6: ( rule__GenerationTask__Group_3_6__0 ) + // InternalApplicationConfiguration.g:8527:5: ( ( rule__GenerationTask__Group_3_6__0 ) ) + // InternalApplicationConfiguration.g:8528:6: ( rule__GenerationTask__Group_3_6__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_6()); - // InternalApplicationConfiguration.g:8523:6: ( rule__GenerationTask__Group_3_6__0 ) - // InternalApplicationConfiguration.g:8523:7: rule__GenerationTask__Group_3_6__0 + // InternalApplicationConfiguration.g:8529:6: ( rule__GenerationTask__Group_3_6__0 ) + // InternalApplicationConfiguration.g:8529:7: rule__GenerationTask__Group_3_6__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_6__0(); @@ -26267,16 +26294,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 8 : - // InternalApplicationConfiguration.g:8528:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) + // InternalApplicationConfiguration.g:8534:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8528:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) - // InternalApplicationConfiguration.g:8529:4: {...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) + // InternalApplicationConfiguration.g:8534:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) + // InternalApplicationConfiguration.g:8535:4: {...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7)"); } - // InternalApplicationConfiguration.g:8529:110: ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) - // InternalApplicationConfiguration.g:8530:5: ( ( rule__GenerationTask__Group_3_7__0 ) ) + // InternalApplicationConfiguration.g:8535:110: ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) + // InternalApplicationConfiguration.g:8536:5: ( ( rule__GenerationTask__Group_3_7__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7); @@ -26284,12 +26311,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8536:5: ( ( rule__GenerationTask__Group_3_7__0 ) ) - // InternalApplicationConfiguration.g:8537:6: ( rule__GenerationTask__Group_3_7__0 ) + // InternalApplicationConfiguration.g:8542:5: ( ( rule__GenerationTask__Group_3_7__0 ) ) + // InternalApplicationConfiguration.g:8543:6: ( rule__GenerationTask__Group_3_7__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_7()); - // InternalApplicationConfiguration.g:8538:6: ( rule__GenerationTask__Group_3_7__0 ) - // InternalApplicationConfiguration.g:8538:7: rule__GenerationTask__Group_3_7__0 + // InternalApplicationConfiguration.g:8544:6: ( rule__GenerationTask__Group_3_7__0 ) + // InternalApplicationConfiguration.g:8544:7: rule__GenerationTask__Group_3_7__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_7__0(); @@ -26313,16 +26340,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 9 : - // InternalApplicationConfiguration.g:8543:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) + // InternalApplicationConfiguration.g:8549:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8543:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) - // InternalApplicationConfiguration.g:8544:4: {...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) + // InternalApplicationConfiguration.g:8549:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) + // InternalApplicationConfiguration.g:8550:4: {...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8)"); } - // InternalApplicationConfiguration.g:8544:110: ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) - // InternalApplicationConfiguration.g:8545:5: ( ( rule__GenerationTask__Group_3_8__0 ) ) + // InternalApplicationConfiguration.g:8550:110: ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) + // InternalApplicationConfiguration.g:8551:5: ( ( rule__GenerationTask__Group_3_8__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8); @@ -26330,12 +26357,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8551:5: ( ( rule__GenerationTask__Group_3_8__0 ) ) - // InternalApplicationConfiguration.g:8552:6: ( rule__GenerationTask__Group_3_8__0 ) + // InternalApplicationConfiguration.g:8557:5: ( ( rule__GenerationTask__Group_3_8__0 ) ) + // InternalApplicationConfiguration.g:8558:6: ( rule__GenerationTask__Group_3_8__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_8()); - // InternalApplicationConfiguration.g:8553:6: ( rule__GenerationTask__Group_3_8__0 ) - // InternalApplicationConfiguration.g:8553:7: rule__GenerationTask__Group_3_8__0 + // InternalApplicationConfiguration.g:8559:6: ( rule__GenerationTask__Group_3_8__0 ) + // InternalApplicationConfiguration.g:8559:7: rule__GenerationTask__Group_3_8__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_8__0(); @@ -26359,16 +26386,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 10 : - // InternalApplicationConfiguration.g:8558:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) + // InternalApplicationConfiguration.g:8564:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8558:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) - // InternalApplicationConfiguration.g:8559:4: {...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) + // InternalApplicationConfiguration.g:8564:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) + // InternalApplicationConfiguration.g:8565:4: {...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9)"); } - // InternalApplicationConfiguration.g:8559:110: ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) - // InternalApplicationConfiguration.g:8560:5: ( ( rule__GenerationTask__Group_3_9__0 ) ) + // InternalApplicationConfiguration.g:8565:110: ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) + // InternalApplicationConfiguration.g:8566:5: ( ( rule__GenerationTask__Group_3_9__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9); @@ -26376,12 +26403,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8566:5: ( ( rule__GenerationTask__Group_3_9__0 ) ) - // InternalApplicationConfiguration.g:8567:6: ( rule__GenerationTask__Group_3_9__0 ) + // InternalApplicationConfiguration.g:8572:5: ( ( rule__GenerationTask__Group_3_9__0 ) ) + // InternalApplicationConfiguration.g:8573:6: ( rule__GenerationTask__Group_3_9__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_9()); - // InternalApplicationConfiguration.g:8568:6: ( rule__GenerationTask__Group_3_9__0 ) - // InternalApplicationConfiguration.g:8568:7: rule__GenerationTask__Group_3_9__0 + // InternalApplicationConfiguration.g:8574:6: ( rule__GenerationTask__Group_3_9__0 ) + // InternalApplicationConfiguration.g:8574:7: rule__GenerationTask__Group_3_9__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_9__0(); @@ -26405,16 +26432,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 11 : - // InternalApplicationConfiguration.g:8573:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) + // InternalApplicationConfiguration.g:8579:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8573:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) - // InternalApplicationConfiguration.g:8574:4: {...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) + // InternalApplicationConfiguration.g:8579:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) + // InternalApplicationConfiguration.g:8580:4: {...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10)"); } - // InternalApplicationConfiguration.g:8574:111: ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) - // InternalApplicationConfiguration.g:8575:5: ( ( rule__GenerationTask__Group_3_10__0 ) ) + // InternalApplicationConfiguration.g:8580:111: ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) + // InternalApplicationConfiguration.g:8581:5: ( ( rule__GenerationTask__Group_3_10__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10); @@ -26422,12 +26449,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8581:5: ( ( rule__GenerationTask__Group_3_10__0 ) ) - // InternalApplicationConfiguration.g:8582:6: ( rule__GenerationTask__Group_3_10__0 ) + // InternalApplicationConfiguration.g:8587:5: ( ( rule__GenerationTask__Group_3_10__0 ) ) + // InternalApplicationConfiguration.g:8588:6: ( rule__GenerationTask__Group_3_10__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_10()); - // InternalApplicationConfiguration.g:8583:6: ( rule__GenerationTask__Group_3_10__0 ) - // InternalApplicationConfiguration.g:8583:7: rule__GenerationTask__Group_3_10__0 + // InternalApplicationConfiguration.g:8589:6: ( rule__GenerationTask__Group_3_10__0 ) + // InternalApplicationConfiguration.g:8589:7: rule__GenerationTask__Group_3_10__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_10__0(); @@ -26451,16 +26478,16 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit } break; case 12 : - // InternalApplicationConfiguration.g:8588:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) + // InternalApplicationConfiguration.g:8594:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) { - // InternalApplicationConfiguration.g:8588:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) - // InternalApplicationConfiguration.g:8589:4: {...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) + // InternalApplicationConfiguration.g:8594:3: ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) + // InternalApplicationConfiguration.g:8595:4: {...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) { if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) { throw new FailedPredicateException(input, "rule__GenerationTask__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11)"); } - // InternalApplicationConfiguration.g:8589:111: ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) - // InternalApplicationConfiguration.g:8590:5: ( ( rule__GenerationTask__Group_3_11__0 ) ) + // InternalApplicationConfiguration.g:8595:111: ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) + // InternalApplicationConfiguration.g:8596:5: ( ( rule__GenerationTask__Group_3_11__0 ) ) { getUnorderedGroupHelper().select(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11); @@ -26468,12 +26495,12 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit selected = true; - // InternalApplicationConfiguration.g:8596:5: ( ( rule__GenerationTask__Group_3_11__0 ) ) - // InternalApplicationConfiguration.g:8597:6: ( rule__GenerationTask__Group_3_11__0 ) + // InternalApplicationConfiguration.g:8602:5: ( ( rule__GenerationTask__Group_3_11__0 ) ) + // InternalApplicationConfiguration.g:8603:6: ( rule__GenerationTask__Group_3_11__0 ) { before(grammarAccess.getGenerationTaskAccess().getGroup_3_11()); - // InternalApplicationConfiguration.g:8598:6: ( rule__GenerationTask__Group_3_11__0 ) - // InternalApplicationConfiguration.g:8598:7: rule__GenerationTask__Group_3_11__0 + // InternalApplicationConfiguration.g:8604:6: ( rule__GenerationTask__Group_3_11__0 ) + // InternalApplicationConfiguration.g:8604:7: rule__GenerationTask__Group_3_11__0 { pushFollow(FOLLOW_2); rule__GenerationTask__Group_3_11__0(); @@ -26520,26 +26547,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__Impl() throws Recognit // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__0" - // InternalApplicationConfiguration.g:8611:1: rule__GenerationTask__UnorderedGroup_3__0 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__1 )? ; + // InternalApplicationConfiguration.g:8617:1: rule__GenerationTask__UnorderedGroup_3__0 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__1 )? ; public final void rule__GenerationTask__UnorderedGroup_3__0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8615:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__1 )? ) - // InternalApplicationConfiguration.g:8616:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__1 )? + // InternalApplicationConfiguration.g:8621:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__1 )? ) + // InternalApplicationConfiguration.g:8622:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__1 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8617:2: ( rule__GenerationTask__UnorderedGroup_3__1 )? + // InternalApplicationConfiguration.g:8623:2: ( rule__GenerationTask__UnorderedGroup_3__1 )? int alt58=2; alt58 = dfa58.predict(input); switch (alt58) { case 1 : - // InternalApplicationConfiguration.g:8617:2: rule__GenerationTask__UnorderedGroup_3__1 + // InternalApplicationConfiguration.g:8623:2: rule__GenerationTask__UnorderedGroup_3__1 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__1(); @@ -26571,26 +26598,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__0() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__1" - // InternalApplicationConfiguration.g:8623:1: rule__GenerationTask__UnorderedGroup_3__1 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__2 )? ; + // InternalApplicationConfiguration.g:8629:1: rule__GenerationTask__UnorderedGroup_3__1 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__2 )? ; public final void rule__GenerationTask__UnorderedGroup_3__1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8627:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__2 )? ) - // InternalApplicationConfiguration.g:8628:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__2 )? + // InternalApplicationConfiguration.g:8633:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__2 )? ) + // InternalApplicationConfiguration.g:8634:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__2 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8629:2: ( rule__GenerationTask__UnorderedGroup_3__2 )? + // InternalApplicationConfiguration.g:8635:2: ( rule__GenerationTask__UnorderedGroup_3__2 )? int alt59=2; alt59 = dfa59.predict(input); switch (alt59) { case 1 : - // InternalApplicationConfiguration.g:8629:2: rule__GenerationTask__UnorderedGroup_3__2 + // InternalApplicationConfiguration.g:8635:2: rule__GenerationTask__UnorderedGroup_3__2 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__2(); @@ -26622,26 +26649,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__1() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__2" - // InternalApplicationConfiguration.g:8635:1: rule__GenerationTask__UnorderedGroup_3__2 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__3 )? ; + // InternalApplicationConfiguration.g:8641:1: rule__GenerationTask__UnorderedGroup_3__2 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__3 )? ; public final void rule__GenerationTask__UnorderedGroup_3__2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8639:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__3 )? ) - // InternalApplicationConfiguration.g:8640:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__3 )? + // InternalApplicationConfiguration.g:8645:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__3 )? ) + // InternalApplicationConfiguration.g:8646:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__3 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8641:2: ( rule__GenerationTask__UnorderedGroup_3__3 )? + // InternalApplicationConfiguration.g:8647:2: ( rule__GenerationTask__UnorderedGroup_3__3 )? int alt60=2; alt60 = dfa60.predict(input); switch (alt60) { case 1 : - // InternalApplicationConfiguration.g:8641:2: rule__GenerationTask__UnorderedGroup_3__3 + // InternalApplicationConfiguration.g:8647:2: rule__GenerationTask__UnorderedGroup_3__3 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__3(); @@ -26673,26 +26700,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__2() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__3" - // InternalApplicationConfiguration.g:8647:1: rule__GenerationTask__UnorderedGroup_3__3 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__4 )? ; + // InternalApplicationConfiguration.g:8653:1: rule__GenerationTask__UnorderedGroup_3__3 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__4 )? ; public final void rule__GenerationTask__UnorderedGroup_3__3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8651:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__4 )? ) - // InternalApplicationConfiguration.g:8652:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__4 )? + // InternalApplicationConfiguration.g:8657:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__4 )? ) + // InternalApplicationConfiguration.g:8658:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__4 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8653:2: ( rule__GenerationTask__UnorderedGroup_3__4 )? + // InternalApplicationConfiguration.g:8659:2: ( rule__GenerationTask__UnorderedGroup_3__4 )? int alt61=2; alt61 = dfa61.predict(input); switch (alt61) { case 1 : - // InternalApplicationConfiguration.g:8653:2: rule__GenerationTask__UnorderedGroup_3__4 + // InternalApplicationConfiguration.g:8659:2: rule__GenerationTask__UnorderedGroup_3__4 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__4(); @@ -26724,26 +26751,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__3() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__4" - // InternalApplicationConfiguration.g:8659:1: rule__GenerationTask__UnorderedGroup_3__4 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__5 )? ; + // InternalApplicationConfiguration.g:8665:1: rule__GenerationTask__UnorderedGroup_3__4 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__5 )? ; public final void rule__GenerationTask__UnorderedGroup_3__4() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8663:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__5 )? ) - // InternalApplicationConfiguration.g:8664:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__5 )? + // InternalApplicationConfiguration.g:8669:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__5 )? ) + // InternalApplicationConfiguration.g:8670:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__5 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8665:2: ( rule__GenerationTask__UnorderedGroup_3__5 )? + // InternalApplicationConfiguration.g:8671:2: ( rule__GenerationTask__UnorderedGroup_3__5 )? int alt62=2; alt62 = dfa62.predict(input); switch (alt62) { case 1 : - // InternalApplicationConfiguration.g:8665:2: rule__GenerationTask__UnorderedGroup_3__5 + // InternalApplicationConfiguration.g:8671:2: rule__GenerationTask__UnorderedGroup_3__5 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__5(); @@ -26775,26 +26802,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__4() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__5" - // InternalApplicationConfiguration.g:8671:1: rule__GenerationTask__UnorderedGroup_3__5 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__6 )? ; + // InternalApplicationConfiguration.g:8677:1: rule__GenerationTask__UnorderedGroup_3__5 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__6 )? ; public final void rule__GenerationTask__UnorderedGroup_3__5() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8675:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__6 )? ) - // InternalApplicationConfiguration.g:8676:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__6 )? + // InternalApplicationConfiguration.g:8681:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__6 )? ) + // InternalApplicationConfiguration.g:8682:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__6 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8677:2: ( rule__GenerationTask__UnorderedGroup_3__6 )? + // InternalApplicationConfiguration.g:8683:2: ( rule__GenerationTask__UnorderedGroup_3__6 )? int alt63=2; alt63 = dfa63.predict(input); switch (alt63) { case 1 : - // InternalApplicationConfiguration.g:8677:2: rule__GenerationTask__UnorderedGroup_3__6 + // InternalApplicationConfiguration.g:8683:2: rule__GenerationTask__UnorderedGroup_3__6 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__6(); @@ -26826,26 +26853,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__5() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__6" - // InternalApplicationConfiguration.g:8683:1: rule__GenerationTask__UnorderedGroup_3__6 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__7 )? ; + // InternalApplicationConfiguration.g:8689:1: rule__GenerationTask__UnorderedGroup_3__6 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__7 )? ; public final void rule__GenerationTask__UnorderedGroup_3__6() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8687:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__7 )? ) - // InternalApplicationConfiguration.g:8688:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__7 )? + // InternalApplicationConfiguration.g:8693:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__7 )? ) + // InternalApplicationConfiguration.g:8694:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__7 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8689:2: ( rule__GenerationTask__UnorderedGroup_3__7 )? + // InternalApplicationConfiguration.g:8695:2: ( rule__GenerationTask__UnorderedGroup_3__7 )? int alt64=2; alt64 = dfa64.predict(input); switch (alt64) { case 1 : - // InternalApplicationConfiguration.g:8689:2: rule__GenerationTask__UnorderedGroup_3__7 + // InternalApplicationConfiguration.g:8695:2: rule__GenerationTask__UnorderedGroup_3__7 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__7(); @@ -26877,26 +26904,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__6() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__7" - // InternalApplicationConfiguration.g:8695:1: rule__GenerationTask__UnorderedGroup_3__7 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__8 )? ; + // InternalApplicationConfiguration.g:8701:1: rule__GenerationTask__UnorderedGroup_3__7 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__8 )? ; public final void rule__GenerationTask__UnorderedGroup_3__7() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8699:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__8 )? ) - // InternalApplicationConfiguration.g:8700:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__8 )? + // InternalApplicationConfiguration.g:8705:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__8 )? ) + // InternalApplicationConfiguration.g:8706:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__8 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8701:2: ( rule__GenerationTask__UnorderedGroup_3__8 )? + // InternalApplicationConfiguration.g:8707:2: ( rule__GenerationTask__UnorderedGroup_3__8 )? int alt65=2; alt65 = dfa65.predict(input); switch (alt65) { case 1 : - // InternalApplicationConfiguration.g:8701:2: rule__GenerationTask__UnorderedGroup_3__8 + // InternalApplicationConfiguration.g:8707:2: rule__GenerationTask__UnorderedGroup_3__8 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__8(); @@ -26928,26 +26955,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__7() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__8" - // InternalApplicationConfiguration.g:8707:1: rule__GenerationTask__UnorderedGroup_3__8 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__9 )? ; + // InternalApplicationConfiguration.g:8713:1: rule__GenerationTask__UnorderedGroup_3__8 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__9 )? ; public final void rule__GenerationTask__UnorderedGroup_3__8() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8711:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__9 )? ) - // InternalApplicationConfiguration.g:8712:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__9 )? + // InternalApplicationConfiguration.g:8717:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__9 )? ) + // InternalApplicationConfiguration.g:8718:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__9 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8713:2: ( rule__GenerationTask__UnorderedGroup_3__9 )? + // InternalApplicationConfiguration.g:8719:2: ( rule__GenerationTask__UnorderedGroup_3__9 )? int alt66=2; alt66 = dfa66.predict(input); switch (alt66) { case 1 : - // InternalApplicationConfiguration.g:8713:2: rule__GenerationTask__UnorderedGroup_3__9 + // InternalApplicationConfiguration.g:8719:2: rule__GenerationTask__UnorderedGroup_3__9 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__9(); @@ -26979,26 +27006,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__8() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__9" - // InternalApplicationConfiguration.g:8719:1: rule__GenerationTask__UnorderedGroup_3__9 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__10 )? ; + // InternalApplicationConfiguration.g:8725:1: rule__GenerationTask__UnorderedGroup_3__9 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__10 )? ; public final void rule__GenerationTask__UnorderedGroup_3__9() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8723:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__10 )? ) - // InternalApplicationConfiguration.g:8724:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__10 )? + // InternalApplicationConfiguration.g:8729:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__10 )? ) + // InternalApplicationConfiguration.g:8730:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__10 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8725:2: ( rule__GenerationTask__UnorderedGroup_3__10 )? + // InternalApplicationConfiguration.g:8731:2: ( rule__GenerationTask__UnorderedGroup_3__10 )? int alt67=2; alt67 = dfa67.predict(input); switch (alt67) { case 1 : - // InternalApplicationConfiguration.g:8725:2: rule__GenerationTask__UnorderedGroup_3__10 + // InternalApplicationConfiguration.g:8731:2: rule__GenerationTask__UnorderedGroup_3__10 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__10(); @@ -27030,26 +27057,26 @@ public final void rule__GenerationTask__UnorderedGroup_3__9() throws Recognition // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__10" - // InternalApplicationConfiguration.g:8731:1: rule__GenerationTask__UnorderedGroup_3__10 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__11 )? ; + // InternalApplicationConfiguration.g:8737:1: rule__GenerationTask__UnorderedGroup_3__10 : rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__11 )? ; public final void rule__GenerationTask__UnorderedGroup_3__10() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8735:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__11 )? ) - // InternalApplicationConfiguration.g:8736:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__11 )? + // InternalApplicationConfiguration.g:8741:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__11 )? ) + // InternalApplicationConfiguration.g:8742:2: rule__GenerationTask__UnorderedGroup_3__Impl ( rule__GenerationTask__UnorderedGroup_3__11 )? { pushFollow(FOLLOW_45); rule__GenerationTask__UnorderedGroup_3__Impl(); state._fsp--; - // InternalApplicationConfiguration.g:8737:2: ( rule__GenerationTask__UnorderedGroup_3__11 )? + // InternalApplicationConfiguration.g:8743:2: ( rule__GenerationTask__UnorderedGroup_3__11 )? int alt68=2; alt68 = dfa68.predict(input); switch (alt68) { case 1 : - // InternalApplicationConfiguration.g:8737:2: rule__GenerationTask__UnorderedGroup_3__11 + // InternalApplicationConfiguration.g:8743:2: rule__GenerationTask__UnorderedGroup_3__11 { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__11(); @@ -27081,14 +27108,14 @@ public final void rule__GenerationTask__UnorderedGroup_3__10() throws Recognitio // $ANTLR start "rule__GenerationTask__UnorderedGroup_3__11" - // InternalApplicationConfiguration.g:8743:1: rule__GenerationTask__UnorderedGroup_3__11 : rule__GenerationTask__UnorderedGroup_3__Impl ; + // InternalApplicationConfiguration.g:8749:1: rule__GenerationTask__UnorderedGroup_3__11 : rule__GenerationTask__UnorderedGroup_3__Impl ; public final void rule__GenerationTask__UnorderedGroup_3__11() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8747:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ) - // InternalApplicationConfiguration.g:8748:2: rule__GenerationTask__UnorderedGroup_3__Impl + // InternalApplicationConfiguration.g:8753:1: ( rule__GenerationTask__UnorderedGroup_3__Impl ) + // InternalApplicationConfiguration.g:8754:2: rule__GenerationTask__UnorderedGroup_3__Impl { pushFollow(FOLLOW_2); rule__GenerationTask__UnorderedGroup_3__Impl(); @@ -27114,17 +27141,17 @@ public final void rule__GenerationTask__UnorderedGroup_3__11() throws Recognitio // $ANTLR start "rule__ConfigurationScript__ImportsAssignment_0" - // InternalApplicationConfiguration.g:8755:1: rule__ConfigurationScript__ImportsAssignment_0 : ( ruleImport ) ; + // InternalApplicationConfiguration.g:8761:1: rule__ConfigurationScript__ImportsAssignment_0 : ( ruleImport ) ; public final void rule__ConfigurationScript__ImportsAssignment_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8759:1: ( ( ruleImport ) ) - // InternalApplicationConfiguration.g:8760:2: ( ruleImport ) + // InternalApplicationConfiguration.g:8765:1: ( ( ruleImport ) ) + // InternalApplicationConfiguration.g:8766:2: ( ruleImport ) { - // InternalApplicationConfiguration.g:8760:2: ( ruleImport ) - // InternalApplicationConfiguration.g:8761:3: ruleImport + // InternalApplicationConfiguration.g:8766:2: ( ruleImport ) + // InternalApplicationConfiguration.g:8767:3: ruleImport { before(grammarAccess.getConfigurationScriptAccess().getImportsImportParserRuleCall_0_0()); pushFollow(FOLLOW_2); @@ -27155,17 +27182,17 @@ public final void rule__ConfigurationScript__ImportsAssignment_0() throws Recogn // $ANTLR start "rule__ConfigurationScript__CommandsAssignment_1" - // InternalApplicationConfiguration.g:8770:1: rule__ConfigurationScript__CommandsAssignment_1 : ( ruleCommand ) ; + // InternalApplicationConfiguration.g:8776:1: rule__ConfigurationScript__CommandsAssignment_1 : ( ruleCommand ) ; public final void rule__ConfigurationScript__CommandsAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8774:1: ( ( ruleCommand ) ) - // InternalApplicationConfiguration.g:8775:2: ( ruleCommand ) + // InternalApplicationConfiguration.g:8780:1: ( ( ruleCommand ) ) + // InternalApplicationConfiguration.g:8781:2: ( ruleCommand ) { - // InternalApplicationConfiguration.g:8775:2: ( ruleCommand ) - // InternalApplicationConfiguration.g:8776:3: ruleCommand + // InternalApplicationConfiguration.g:8781:2: ( ruleCommand ) + // InternalApplicationConfiguration.g:8782:3: ruleCommand { before(grammarAccess.getConfigurationScriptAccess().getCommandsCommandParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -27196,21 +27223,21 @@ public final void rule__ConfigurationScript__CommandsAssignment_1() throws Recog // $ANTLR start "rule__EPackageImport__ImportedPackageAssignment_2" - // InternalApplicationConfiguration.g:8785:1: rule__EPackageImport__ImportedPackageAssignment_2 : ( ( RULE_STRING ) ) ; + // InternalApplicationConfiguration.g:8791:1: rule__EPackageImport__ImportedPackageAssignment_2 : ( ( RULE_STRING ) ) ; public final void rule__EPackageImport__ImportedPackageAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8789:1: ( ( ( RULE_STRING ) ) ) - // InternalApplicationConfiguration.g:8790:2: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:8795:1: ( ( ( RULE_STRING ) ) ) + // InternalApplicationConfiguration.g:8796:2: ( ( RULE_STRING ) ) { - // InternalApplicationConfiguration.g:8790:2: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:8791:3: ( RULE_STRING ) + // InternalApplicationConfiguration.g:8796:2: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:8797:3: ( RULE_STRING ) { before(grammarAccess.getEPackageImportAccess().getImportedPackageEPackageCrossReference_2_0()); - // InternalApplicationConfiguration.g:8792:3: ( RULE_STRING ) - // InternalApplicationConfiguration.g:8793:4: RULE_STRING + // InternalApplicationConfiguration.g:8798:3: ( RULE_STRING ) + // InternalApplicationConfiguration.g:8799:4: RULE_STRING { before(grammarAccess.getEPackageImportAccess().getImportedPackageEPackageSTRINGTerminalRuleCall_2_0_1()); match(input,RULE_STRING,FOLLOW_2); @@ -27241,21 +27268,21 @@ public final void rule__EPackageImport__ImportedPackageAssignment_2() throws Rec // $ANTLR start "rule__ViatraImport__ImportedViatraAssignment_2" - // InternalApplicationConfiguration.g:8804:1: rule__ViatraImport__ImportedViatraAssignment_2 : ( ( RULE_STRING ) ) ; + // InternalApplicationConfiguration.g:8810:1: rule__ViatraImport__ImportedViatraAssignment_2 : ( ( RULE_STRING ) ) ; public final void rule__ViatraImport__ImportedViatraAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8808:1: ( ( ( RULE_STRING ) ) ) - // InternalApplicationConfiguration.g:8809:2: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:8814:1: ( ( ( RULE_STRING ) ) ) + // InternalApplicationConfiguration.g:8815:2: ( ( RULE_STRING ) ) { - // InternalApplicationConfiguration.g:8809:2: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:8810:3: ( RULE_STRING ) + // InternalApplicationConfiguration.g:8815:2: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:8816:3: ( RULE_STRING ) { before(grammarAccess.getViatraImportAccess().getImportedViatraPatternModelCrossReference_2_0()); - // InternalApplicationConfiguration.g:8811:3: ( RULE_STRING ) - // InternalApplicationConfiguration.g:8812:4: RULE_STRING + // InternalApplicationConfiguration.g:8817:3: ( RULE_STRING ) + // InternalApplicationConfiguration.g:8818:4: RULE_STRING { before(grammarAccess.getViatraImportAccess().getImportedViatraPatternModelSTRINGTerminalRuleCall_2_0_1()); match(input,RULE_STRING,FOLLOW_2); @@ -27286,17 +27313,17 @@ public final void rule__ViatraImport__ImportedViatraAssignment_2() throws Recogn // $ANTLR start "rule__FileSpecification__PathAssignment" - // InternalApplicationConfiguration.g:8823:1: rule__FileSpecification__PathAssignment : ( RULE_STRING ) ; + // InternalApplicationConfiguration.g:8829:1: rule__FileSpecification__PathAssignment : ( RULE_STRING ) ; public final void rule__FileSpecification__PathAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8827:1: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:8828:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:8833:1: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:8834:2: ( RULE_STRING ) { - // InternalApplicationConfiguration.g:8828:2: ( RULE_STRING ) - // InternalApplicationConfiguration.g:8829:3: RULE_STRING + // InternalApplicationConfiguration.g:8834:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:8835:3: RULE_STRING { before(grammarAccess.getFileSpecificationAccess().getPathSTRINGTerminalRuleCall_0()); match(input,RULE_STRING,FOLLOW_2); @@ -27323,17 +27350,17 @@ public final void rule__FileSpecification__PathAssignment() throws RecognitionEx // $ANTLR start "rule__FileDeclaration__NameAssignment_1" - // InternalApplicationConfiguration.g:8838:1: rule__FileDeclaration__NameAssignment_1 : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:8844:1: rule__FileDeclaration__NameAssignment_1 : ( RULE_ID ) ; public final void rule__FileDeclaration__NameAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8842:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:8843:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:8848:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:8849:2: ( RULE_ID ) { - // InternalApplicationConfiguration.g:8843:2: ( RULE_ID ) - // InternalApplicationConfiguration.g:8844:3: RULE_ID + // InternalApplicationConfiguration.g:8849:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:8850:3: RULE_ID { before(grammarAccess.getFileDeclarationAccess().getNameIDTerminalRuleCall_1_0()); match(input,RULE_ID,FOLLOW_2); @@ -27360,17 +27387,17 @@ public final void rule__FileDeclaration__NameAssignment_1() throws RecognitionEx // $ANTLR start "rule__FileDeclaration__SpecificationAssignment_3" - // InternalApplicationConfiguration.g:8853:1: rule__FileDeclaration__SpecificationAssignment_3 : ( ruleFileSpecification ) ; + // InternalApplicationConfiguration.g:8859:1: rule__FileDeclaration__SpecificationAssignment_3 : ( ruleFileSpecification ) ; public final void rule__FileDeclaration__SpecificationAssignment_3() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8857:1: ( ( ruleFileSpecification ) ) - // InternalApplicationConfiguration.g:8858:2: ( ruleFileSpecification ) + // InternalApplicationConfiguration.g:8863:1: ( ( ruleFileSpecification ) ) + // InternalApplicationConfiguration.g:8864:2: ( ruleFileSpecification ) { - // InternalApplicationConfiguration.g:8858:2: ( ruleFileSpecification ) - // InternalApplicationConfiguration.g:8859:3: ruleFileSpecification + // InternalApplicationConfiguration.g:8864:2: ( ruleFileSpecification ) + // InternalApplicationConfiguration.g:8865:3: ruleFileSpecification { before(grammarAccess.getFileDeclarationAccess().getSpecificationFileSpecificationParserRuleCall_3_0()); pushFollow(FOLLOW_2); @@ -27401,21 +27428,21 @@ public final void rule__FileDeclaration__SpecificationAssignment_3() throws Reco // $ANTLR start "rule__FileReference__ReferredAssignment" - // InternalApplicationConfiguration.g:8868:1: rule__FileReference__ReferredAssignment : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:8874:1: rule__FileReference__ReferredAssignment : ( ( RULE_ID ) ) ; public final void rule__FileReference__ReferredAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8872:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:8873:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:8878:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:8879:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:8873:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:8874:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:8879:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:8880:3: ( RULE_ID ) { before(grammarAccess.getFileReferenceAccess().getReferredFileDeclarationCrossReference_0()); - // InternalApplicationConfiguration.g:8875:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:8876:4: RULE_ID + // InternalApplicationConfiguration.g:8881:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:8882:4: RULE_ID { before(grammarAccess.getFileReferenceAccess().getReferredFileDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -27446,17 +27473,17 @@ public final void rule__FileReference__ReferredAssignment() throws RecognitionEx // $ANTLR start "rule__MetamodelSpecification__EntriesAssignment_1" - // InternalApplicationConfiguration.g:8887:1: rule__MetamodelSpecification__EntriesAssignment_1 : ( ruleMetamodelEntry ) ; + // InternalApplicationConfiguration.g:8893:1: rule__MetamodelSpecification__EntriesAssignment_1 : ( ruleMetamodelEntry ) ; public final void rule__MetamodelSpecification__EntriesAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8891:1: ( ( ruleMetamodelEntry ) ) - // InternalApplicationConfiguration.g:8892:2: ( ruleMetamodelEntry ) + // InternalApplicationConfiguration.g:8897:1: ( ( ruleMetamodelEntry ) ) + // InternalApplicationConfiguration.g:8898:2: ( ruleMetamodelEntry ) { - // InternalApplicationConfiguration.g:8892:2: ( ruleMetamodelEntry ) - // InternalApplicationConfiguration.g:8893:3: ruleMetamodelEntry + // InternalApplicationConfiguration.g:8898:2: ( ruleMetamodelEntry ) + // InternalApplicationConfiguration.g:8899:3: ruleMetamodelEntry { before(grammarAccess.getMetamodelSpecificationAccess().getEntriesMetamodelEntryParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -27487,17 +27514,17 @@ public final void rule__MetamodelSpecification__EntriesAssignment_1() throws Rec // $ANTLR start "rule__MetamodelSpecification__EntriesAssignment_2_1" - // InternalApplicationConfiguration.g:8902:1: rule__MetamodelSpecification__EntriesAssignment_2_1 : ( ruleMetamodelEntry ) ; + // InternalApplicationConfiguration.g:8908:1: rule__MetamodelSpecification__EntriesAssignment_2_1 : ( ruleMetamodelEntry ) ; public final void rule__MetamodelSpecification__EntriesAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8906:1: ( ( ruleMetamodelEntry ) ) - // InternalApplicationConfiguration.g:8907:2: ( ruleMetamodelEntry ) + // InternalApplicationConfiguration.g:8912:1: ( ( ruleMetamodelEntry ) ) + // InternalApplicationConfiguration.g:8913:2: ( ruleMetamodelEntry ) { - // InternalApplicationConfiguration.g:8907:2: ( ruleMetamodelEntry ) - // InternalApplicationConfiguration.g:8908:3: ruleMetamodelEntry + // InternalApplicationConfiguration.g:8913:2: ( ruleMetamodelEntry ) + // InternalApplicationConfiguration.g:8914:3: ruleMetamodelEntry { before(grammarAccess.getMetamodelSpecificationAccess().getEntriesMetamodelEntryParserRuleCall_2_1_0()); pushFollow(FOLLOW_2); @@ -27528,21 +27555,21 @@ public final void rule__MetamodelSpecification__EntriesAssignment_2_1() throws R // $ANTLR start "rule__AllPackageEntry__PackageAssignment_1" - // InternalApplicationConfiguration.g:8917:1: rule__AllPackageEntry__PackageAssignment_1 : ( ( ruleQualifiedName ) ) ; + // InternalApplicationConfiguration.g:8923:1: rule__AllPackageEntry__PackageAssignment_1 : ( ( ruleQualifiedName ) ) ; public final void rule__AllPackageEntry__PackageAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8921:1: ( ( ( ruleQualifiedName ) ) ) - // InternalApplicationConfiguration.g:8922:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:8927:1: ( ( ( ruleQualifiedName ) ) ) + // InternalApplicationConfiguration.g:8928:2: ( ( ruleQualifiedName ) ) { - // InternalApplicationConfiguration.g:8922:2: ( ( ruleQualifiedName ) ) - // InternalApplicationConfiguration.g:8923:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:8928:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:8929:3: ( ruleQualifiedName ) { before(grammarAccess.getAllPackageEntryAccess().getPackageEPackageCrossReference_1_0()); - // InternalApplicationConfiguration.g:8924:3: ( ruleQualifiedName ) - // InternalApplicationConfiguration.g:8925:4: ruleQualifiedName + // InternalApplicationConfiguration.g:8930:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:8931:4: ruleQualifiedName { before(grammarAccess.getAllPackageEntryAccess().getPackageEPackageQualifiedNameParserRuleCall_1_0_1()); pushFollow(FOLLOW_2); @@ -27577,17 +27604,17 @@ public final void rule__AllPackageEntry__PackageAssignment_1() throws Recognitio // $ANTLR start "rule__AllPackageEntry__ExclusionAssignment_2_2" - // InternalApplicationConfiguration.g:8936:1: rule__AllPackageEntry__ExclusionAssignment_2_2 : ( ruleMetamodelElement ) ; + // InternalApplicationConfiguration.g:8942:1: rule__AllPackageEntry__ExclusionAssignment_2_2 : ( ruleMetamodelElement ) ; public final void rule__AllPackageEntry__ExclusionAssignment_2_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8940:1: ( ( ruleMetamodelElement ) ) - // InternalApplicationConfiguration.g:8941:2: ( ruleMetamodelElement ) + // InternalApplicationConfiguration.g:8946:1: ( ( ruleMetamodelElement ) ) + // InternalApplicationConfiguration.g:8947:2: ( ruleMetamodelElement ) { - // InternalApplicationConfiguration.g:8941:2: ( ruleMetamodelElement ) - // InternalApplicationConfiguration.g:8942:3: ruleMetamodelElement + // InternalApplicationConfiguration.g:8947:2: ( ruleMetamodelElement ) + // InternalApplicationConfiguration.g:8948:3: ruleMetamodelElement { before(grammarAccess.getAllPackageEntryAccess().getExclusionMetamodelElementParserRuleCall_2_2_0()); pushFollow(FOLLOW_2); @@ -27618,17 +27645,17 @@ public final void rule__AllPackageEntry__ExclusionAssignment_2_2() throws Recogn // $ANTLR start "rule__AllPackageEntry__ExclusionAssignment_2_3_1" - // InternalApplicationConfiguration.g:8951:1: rule__AllPackageEntry__ExclusionAssignment_2_3_1 : ( ruleMetamodelElement ) ; + // InternalApplicationConfiguration.g:8957:1: rule__AllPackageEntry__ExclusionAssignment_2_3_1 : ( ruleMetamodelElement ) ; public final void rule__AllPackageEntry__ExclusionAssignment_2_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8955:1: ( ( ruleMetamodelElement ) ) - // InternalApplicationConfiguration.g:8956:2: ( ruleMetamodelElement ) + // InternalApplicationConfiguration.g:8961:1: ( ( ruleMetamodelElement ) ) + // InternalApplicationConfiguration.g:8962:2: ( ruleMetamodelElement ) { - // InternalApplicationConfiguration.g:8956:2: ( ruleMetamodelElement ) - // InternalApplicationConfiguration.g:8957:3: ruleMetamodelElement + // InternalApplicationConfiguration.g:8962:2: ( ruleMetamodelElement ) + // InternalApplicationConfiguration.g:8963:3: ruleMetamodelElement { before(grammarAccess.getAllPackageEntryAccess().getExclusionMetamodelElementParserRuleCall_2_3_1_0()); pushFollow(FOLLOW_2); @@ -27659,21 +27686,21 @@ public final void rule__AllPackageEntry__ExclusionAssignment_2_3_1() throws Reco // $ANTLR start "rule__MetamodelElement__PackageAssignment_0_0" - // InternalApplicationConfiguration.g:8966:1: rule__MetamodelElement__PackageAssignment_0_0 : ( ( ruleQualifiedName ) ) ; + // InternalApplicationConfiguration.g:8972:1: rule__MetamodelElement__PackageAssignment_0_0 : ( ( ruleQualifiedName ) ) ; public final void rule__MetamodelElement__PackageAssignment_0_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8970:1: ( ( ( ruleQualifiedName ) ) ) - // InternalApplicationConfiguration.g:8971:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:8976:1: ( ( ( ruleQualifiedName ) ) ) + // InternalApplicationConfiguration.g:8977:2: ( ( ruleQualifiedName ) ) { - // InternalApplicationConfiguration.g:8971:2: ( ( ruleQualifiedName ) ) - // InternalApplicationConfiguration.g:8972:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:8977:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:8978:3: ( ruleQualifiedName ) { before(grammarAccess.getMetamodelElementAccess().getPackageEPackageCrossReference_0_0_0()); - // InternalApplicationConfiguration.g:8973:3: ( ruleQualifiedName ) - // InternalApplicationConfiguration.g:8974:4: ruleQualifiedName + // InternalApplicationConfiguration.g:8979:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:8980:4: ruleQualifiedName { before(grammarAccess.getMetamodelElementAccess().getPackageEPackageQualifiedNameParserRuleCall_0_0_0_1()); pushFollow(FOLLOW_2); @@ -27708,21 +27735,21 @@ public final void rule__MetamodelElement__PackageAssignment_0_0() throws Recogni // $ANTLR start "rule__MetamodelElement__ClassifierAssignment_1" - // InternalApplicationConfiguration.g:8985:1: rule__MetamodelElement__ClassifierAssignment_1 : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:8991:1: rule__MetamodelElement__ClassifierAssignment_1 : ( ( RULE_ID ) ) ; public final void rule__MetamodelElement__ClassifierAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:8989:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:8990:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:8995:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:8996:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:8990:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:8991:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:8996:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:8997:3: ( RULE_ID ) { before(grammarAccess.getMetamodelElementAccess().getClassifierEClassifierCrossReference_1_0()); - // InternalApplicationConfiguration.g:8992:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:8993:4: RULE_ID + // InternalApplicationConfiguration.g:8998:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:8999:4: RULE_ID { before(grammarAccess.getMetamodelElementAccess().getClassifierEClassifierIDTerminalRuleCall_1_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -27753,21 +27780,21 @@ public final void rule__MetamodelElement__ClassifierAssignment_1() throws Recogn // $ANTLR start "rule__MetamodelElement__FeatureAssignment_2_1" - // InternalApplicationConfiguration.g:9004:1: rule__MetamodelElement__FeatureAssignment_2_1 : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:9010:1: rule__MetamodelElement__FeatureAssignment_2_1 : ( ( RULE_ID ) ) ; public final void rule__MetamodelElement__FeatureAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9008:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:9009:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9014:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:9015:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:9009:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9010:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9015:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9016:3: ( RULE_ID ) { before(grammarAccess.getMetamodelElementAccess().getFeatureENamedElementCrossReference_2_1_0()); - // InternalApplicationConfiguration.g:9011:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:9012:4: RULE_ID + // InternalApplicationConfiguration.g:9017:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9018:4: RULE_ID { before(grammarAccess.getMetamodelElementAccess().getFeatureENamedElementIDTerminalRuleCall_2_1_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -27798,17 +27825,17 @@ public final void rule__MetamodelElement__FeatureAssignment_2_1() throws Recogni // $ANTLR start "rule__MetamodelDeclaration__NameAssignment_1" - // InternalApplicationConfiguration.g:9023:1: rule__MetamodelDeclaration__NameAssignment_1 : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:9029:1: rule__MetamodelDeclaration__NameAssignment_1 : ( RULE_ID ) ; public final void rule__MetamodelDeclaration__NameAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9027:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9028:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9033:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9034:2: ( RULE_ID ) { - // InternalApplicationConfiguration.g:9028:2: ( RULE_ID ) - // InternalApplicationConfiguration.g:9029:3: RULE_ID + // InternalApplicationConfiguration.g:9034:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9035:3: RULE_ID { before(grammarAccess.getMetamodelDeclarationAccess().getNameIDTerminalRuleCall_1_0()); match(input,RULE_ID,FOLLOW_2); @@ -27835,17 +27862,17 @@ public final void rule__MetamodelDeclaration__NameAssignment_1() throws Recognit // $ANTLR start "rule__MetamodelDeclaration__SpecificationAssignment_2" - // InternalApplicationConfiguration.g:9038:1: rule__MetamodelDeclaration__SpecificationAssignment_2 : ( ruleMetamodelSpecification ) ; + // InternalApplicationConfiguration.g:9044:1: rule__MetamodelDeclaration__SpecificationAssignment_2 : ( ruleMetamodelSpecification ) ; public final void rule__MetamodelDeclaration__SpecificationAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9042:1: ( ( ruleMetamodelSpecification ) ) - // InternalApplicationConfiguration.g:9043:2: ( ruleMetamodelSpecification ) + // InternalApplicationConfiguration.g:9048:1: ( ( ruleMetamodelSpecification ) ) + // InternalApplicationConfiguration.g:9049:2: ( ruleMetamodelSpecification ) { - // InternalApplicationConfiguration.g:9043:2: ( ruleMetamodelSpecification ) - // InternalApplicationConfiguration.g:9044:3: ruleMetamodelSpecification + // InternalApplicationConfiguration.g:9049:2: ( ruleMetamodelSpecification ) + // InternalApplicationConfiguration.g:9050:3: ruleMetamodelSpecification { before(grammarAccess.getMetamodelDeclarationAccess().getSpecificationMetamodelSpecificationParserRuleCall_2_0()); pushFollow(FOLLOW_2); @@ -27876,21 +27903,21 @@ public final void rule__MetamodelDeclaration__SpecificationAssignment_2() throws // $ANTLR start "rule__MetamodelReference__ReferredAssignment" - // InternalApplicationConfiguration.g:9053:1: rule__MetamodelReference__ReferredAssignment : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:9059:1: rule__MetamodelReference__ReferredAssignment : ( ( RULE_ID ) ) ; public final void rule__MetamodelReference__ReferredAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9057:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:9058:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9063:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:9064:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:9058:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9059:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9064:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9065:3: ( RULE_ID ) { before(grammarAccess.getMetamodelReferenceAccess().getReferredMetamodelDeclarationCrossReference_0()); - // InternalApplicationConfiguration.g:9060:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:9061:4: RULE_ID + // InternalApplicationConfiguration.g:9066:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9067:4: RULE_ID { before(grammarAccess.getMetamodelReferenceAccess().getReferredMetamodelDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -27921,17 +27948,17 @@ public final void rule__MetamodelReference__ReferredAssignment() throws Recognit // $ANTLR start "rule__PartialModelSpecification__EntryAssignment_1" - // InternalApplicationConfiguration.g:9072:1: rule__PartialModelSpecification__EntryAssignment_1 : ( rulePartialModelEntry ) ; + // InternalApplicationConfiguration.g:9078:1: rule__PartialModelSpecification__EntryAssignment_1 : ( rulePartialModelEntry ) ; public final void rule__PartialModelSpecification__EntryAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9076:1: ( ( rulePartialModelEntry ) ) - // InternalApplicationConfiguration.g:9077:2: ( rulePartialModelEntry ) + // InternalApplicationConfiguration.g:9082:1: ( ( rulePartialModelEntry ) ) + // InternalApplicationConfiguration.g:9083:2: ( rulePartialModelEntry ) { - // InternalApplicationConfiguration.g:9077:2: ( rulePartialModelEntry ) - // InternalApplicationConfiguration.g:9078:3: rulePartialModelEntry + // InternalApplicationConfiguration.g:9083:2: ( rulePartialModelEntry ) + // InternalApplicationConfiguration.g:9084:3: rulePartialModelEntry { before(grammarAccess.getPartialModelSpecificationAccess().getEntryPartialModelEntryParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -27962,17 +27989,17 @@ public final void rule__PartialModelSpecification__EntryAssignment_1() throws Re // $ANTLR start "rule__PartialModelSpecification__EntryAssignment_2_1" - // InternalApplicationConfiguration.g:9087:1: rule__PartialModelSpecification__EntryAssignment_2_1 : ( rulePartialModelEntry ) ; + // InternalApplicationConfiguration.g:9093:1: rule__PartialModelSpecification__EntryAssignment_2_1 : ( rulePartialModelEntry ) ; public final void rule__PartialModelSpecification__EntryAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9091:1: ( ( rulePartialModelEntry ) ) - // InternalApplicationConfiguration.g:9092:2: ( rulePartialModelEntry ) + // InternalApplicationConfiguration.g:9097:1: ( ( rulePartialModelEntry ) ) + // InternalApplicationConfiguration.g:9098:2: ( rulePartialModelEntry ) { - // InternalApplicationConfiguration.g:9092:2: ( rulePartialModelEntry ) - // InternalApplicationConfiguration.g:9093:3: rulePartialModelEntry + // InternalApplicationConfiguration.g:9098:2: ( rulePartialModelEntry ) + // InternalApplicationConfiguration.g:9099:3: rulePartialModelEntry { before(grammarAccess.getPartialModelSpecificationAccess().getEntryPartialModelEntryParserRuleCall_2_1_0()); pushFollow(FOLLOW_2); @@ -28003,17 +28030,17 @@ public final void rule__PartialModelSpecification__EntryAssignment_2_1() throws // $ANTLR start "rule__ModelEntry__PathAssignment" - // InternalApplicationConfiguration.g:9102:1: rule__ModelEntry__PathAssignment : ( ruleFile ) ; + // InternalApplicationConfiguration.g:9108:1: rule__ModelEntry__PathAssignment : ( ruleFile ) ; public final void rule__ModelEntry__PathAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9106:1: ( ( ruleFile ) ) - // InternalApplicationConfiguration.g:9107:2: ( ruleFile ) + // InternalApplicationConfiguration.g:9112:1: ( ( ruleFile ) ) + // InternalApplicationConfiguration.g:9113:2: ( ruleFile ) { - // InternalApplicationConfiguration.g:9107:2: ( ruleFile ) - // InternalApplicationConfiguration.g:9108:3: ruleFile + // InternalApplicationConfiguration.g:9113:2: ( ruleFile ) + // InternalApplicationConfiguration.g:9114:3: ruleFile { before(grammarAccess.getModelEntryAccess().getPathFileParserRuleCall_0()); pushFollow(FOLLOW_2); @@ -28044,17 +28071,17 @@ public final void rule__ModelEntry__PathAssignment() throws RecognitionException // $ANTLR start "rule__FolderEntry__PathAssignment_1" - // InternalApplicationConfiguration.g:9117:1: rule__FolderEntry__PathAssignment_1 : ( ruleFile ) ; + // InternalApplicationConfiguration.g:9123:1: rule__FolderEntry__PathAssignment_1 : ( ruleFile ) ; public final void rule__FolderEntry__PathAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9121:1: ( ( ruleFile ) ) - // InternalApplicationConfiguration.g:9122:2: ( ruleFile ) + // InternalApplicationConfiguration.g:9127:1: ( ( ruleFile ) ) + // InternalApplicationConfiguration.g:9128:2: ( ruleFile ) { - // InternalApplicationConfiguration.g:9122:2: ( ruleFile ) - // InternalApplicationConfiguration.g:9123:3: ruleFile + // InternalApplicationConfiguration.g:9128:2: ( ruleFile ) + // InternalApplicationConfiguration.g:9129:3: ruleFile { before(grammarAccess.getFolderEntryAccess().getPathFileParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -28085,17 +28112,17 @@ public final void rule__FolderEntry__PathAssignment_1() throws RecognitionExcept // $ANTLR start "rule__FolderEntry__ExclusionAssignment_2_2" - // InternalApplicationConfiguration.g:9132:1: rule__FolderEntry__ExclusionAssignment_2_2 : ( ruleModelEntry ) ; + // InternalApplicationConfiguration.g:9138:1: rule__FolderEntry__ExclusionAssignment_2_2 : ( ruleModelEntry ) ; public final void rule__FolderEntry__ExclusionAssignment_2_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9136:1: ( ( ruleModelEntry ) ) - // InternalApplicationConfiguration.g:9137:2: ( ruleModelEntry ) + // InternalApplicationConfiguration.g:9142:1: ( ( ruleModelEntry ) ) + // InternalApplicationConfiguration.g:9143:2: ( ruleModelEntry ) { - // InternalApplicationConfiguration.g:9137:2: ( ruleModelEntry ) - // InternalApplicationConfiguration.g:9138:3: ruleModelEntry + // InternalApplicationConfiguration.g:9143:2: ( ruleModelEntry ) + // InternalApplicationConfiguration.g:9144:3: ruleModelEntry { before(grammarAccess.getFolderEntryAccess().getExclusionModelEntryParserRuleCall_2_2_0()); pushFollow(FOLLOW_2); @@ -28126,17 +28153,17 @@ public final void rule__FolderEntry__ExclusionAssignment_2_2() throws Recognitio // $ANTLR start "rule__FolderEntry__ExclusionAssignment_2_3_1" - // InternalApplicationConfiguration.g:9147:1: rule__FolderEntry__ExclusionAssignment_2_3_1 : ( ruleModelEntry ) ; + // InternalApplicationConfiguration.g:9153:1: rule__FolderEntry__ExclusionAssignment_2_3_1 : ( ruleModelEntry ) ; public final void rule__FolderEntry__ExclusionAssignment_2_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9151:1: ( ( ruleModelEntry ) ) - // InternalApplicationConfiguration.g:9152:2: ( ruleModelEntry ) + // InternalApplicationConfiguration.g:9157:1: ( ( ruleModelEntry ) ) + // InternalApplicationConfiguration.g:9158:2: ( ruleModelEntry ) { - // InternalApplicationConfiguration.g:9152:2: ( ruleModelEntry ) - // InternalApplicationConfiguration.g:9153:3: ruleModelEntry + // InternalApplicationConfiguration.g:9158:2: ( ruleModelEntry ) + // InternalApplicationConfiguration.g:9159:3: ruleModelEntry { before(grammarAccess.getFolderEntryAccess().getExclusionModelEntryParserRuleCall_2_3_1_0()); pushFollow(FOLLOW_2); @@ -28167,17 +28194,17 @@ public final void rule__FolderEntry__ExclusionAssignment_2_3_1() throws Recognit // $ANTLR start "rule__PartialModelDeclaration__NameAssignment_1" - // InternalApplicationConfiguration.g:9162:1: rule__PartialModelDeclaration__NameAssignment_1 : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:9168:1: rule__PartialModelDeclaration__NameAssignment_1 : ( RULE_ID ) ; public final void rule__PartialModelDeclaration__NameAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9166:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9167:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9172:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9173:2: ( RULE_ID ) { - // InternalApplicationConfiguration.g:9167:2: ( RULE_ID ) - // InternalApplicationConfiguration.g:9168:3: RULE_ID + // InternalApplicationConfiguration.g:9173:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9174:3: RULE_ID { before(grammarAccess.getPartialModelDeclarationAccess().getNameIDTerminalRuleCall_1_0()); match(input,RULE_ID,FOLLOW_2); @@ -28204,17 +28231,17 @@ public final void rule__PartialModelDeclaration__NameAssignment_1() throws Recog // $ANTLR start "rule__PartialModelDeclaration__SpecificationAssignment_2" - // InternalApplicationConfiguration.g:9177:1: rule__PartialModelDeclaration__SpecificationAssignment_2 : ( rulePartialModelSpecification ) ; + // InternalApplicationConfiguration.g:9183:1: rule__PartialModelDeclaration__SpecificationAssignment_2 : ( rulePartialModelSpecification ) ; public final void rule__PartialModelDeclaration__SpecificationAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9181:1: ( ( rulePartialModelSpecification ) ) - // InternalApplicationConfiguration.g:9182:2: ( rulePartialModelSpecification ) + // InternalApplicationConfiguration.g:9187:1: ( ( rulePartialModelSpecification ) ) + // InternalApplicationConfiguration.g:9188:2: ( rulePartialModelSpecification ) { - // InternalApplicationConfiguration.g:9182:2: ( rulePartialModelSpecification ) - // InternalApplicationConfiguration.g:9183:3: rulePartialModelSpecification + // InternalApplicationConfiguration.g:9188:2: ( rulePartialModelSpecification ) + // InternalApplicationConfiguration.g:9189:3: rulePartialModelSpecification { before(grammarAccess.getPartialModelDeclarationAccess().getSpecificationPartialModelSpecificationParserRuleCall_2_0()); pushFollow(FOLLOW_2); @@ -28245,21 +28272,21 @@ public final void rule__PartialModelDeclaration__SpecificationAssignment_2() thr // $ANTLR start "rule__PartialModelReference__ReferredAssignment" - // InternalApplicationConfiguration.g:9192:1: rule__PartialModelReference__ReferredAssignment : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:9198:1: rule__PartialModelReference__ReferredAssignment : ( ( RULE_ID ) ) ; public final void rule__PartialModelReference__ReferredAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9196:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:9197:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9202:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:9203:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:9197:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9198:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9203:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9204:3: ( RULE_ID ) { before(grammarAccess.getPartialModelReferenceAccess().getReferredPartialModelDeclarationCrossReference_0()); - // InternalApplicationConfiguration.g:9199:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:9200:4: RULE_ID + // InternalApplicationConfiguration.g:9205:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9206:4: RULE_ID { before(grammarAccess.getPartialModelReferenceAccess().getReferredPartialModelDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -28290,17 +28317,17 @@ public final void rule__PartialModelReference__ReferredAssignment() throws Recog // $ANTLR start "rule__PatternSpecification__EntriesAssignment_1" - // InternalApplicationConfiguration.g:9211:1: rule__PatternSpecification__EntriesAssignment_1 : ( rulePatternEntry ) ; + // InternalApplicationConfiguration.g:9217:1: rule__PatternSpecification__EntriesAssignment_1 : ( rulePatternEntry ) ; public final void rule__PatternSpecification__EntriesAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9215:1: ( ( rulePatternEntry ) ) - // InternalApplicationConfiguration.g:9216:2: ( rulePatternEntry ) + // InternalApplicationConfiguration.g:9221:1: ( ( rulePatternEntry ) ) + // InternalApplicationConfiguration.g:9222:2: ( rulePatternEntry ) { - // InternalApplicationConfiguration.g:9216:2: ( rulePatternEntry ) - // InternalApplicationConfiguration.g:9217:3: rulePatternEntry + // InternalApplicationConfiguration.g:9222:2: ( rulePatternEntry ) + // InternalApplicationConfiguration.g:9223:3: rulePatternEntry { before(grammarAccess.getPatternSpecificationAccess().getEntriesPatternEntryParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -28331,17 +28358,17 @@ public final void rule__PatternSpecification__EntriesAssignment_1() throws Recog // $ANTLR start "rule__PatternSpecification__EntriesAssignment_2_1" - // InternalApplicationConfiguration.g:9226:1: rule__PatternSpecification__EntriesAssignment_2_1 : ( rulePatternEntry ) ; + // InternalApplicationConfiguration.g:9232:1: rule__PatternSpecification__EntriesAssignment_2_1 : ( rulePatternEntry ) ; public final void rule__PatternSpecification__EntriesAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9230:1: ( ( rulePatternEntry ) ) - // InternalApplicationConfiguration.g:9231:2: ( rulePatternEntry ) + // InternalApplicationConfiguration.g:9236:1: ( ( rulePatternEntry ) ) + // InternalApplicationConfiguration.g:9237:2: ( rulePatternEntry ) { - // InternalApplicationConfiguration.g:9231:2: ( rulePatternEntry ) - // InternalApplicationConfiguration.g:9232:3: rulePatternEntry + // InternalApplicationConfiguration.g:9237:2: ( rulePatternEntry ) + // InternalApplicationConfiguration.g:9238:3: rulePatternEntry { before(grammarAccess.getPatternSpecificationAccess().getEntriesPatternEntryParserRuleCall_2_1_0()); pushFollow(FOLLOW_2); @@ -28372,21 +28399,21 @@ public final void rule__PatternSpecification__EntriesAssignment_2_1() throws Rec // $ANTLR start "rule__AllPatternEntry__PackageAssignment_1" - // InternalApplicationConfiguration.g:9241:1: rule__AllPatternEntry__PackageAssignment_1 : ( ( ruleQualifiedName ) ) ; + // InternalApplicationConfiguration.g:9247:1: rule__AllPatternEntry__PackageAssignment_1 : ( ( ruleQualifiedName ) ) ; public final void rule__AllPatternEntry__PackageAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9245:1: ( ( ( ruleQualifiedName ) ) ) - // InternalApplicationConfiguration.g:9246:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:9251:1: ( ( ( ruleQualifiedName ) ) ) + // InternalApplicationConfiguration.g:9252:2: ( ( ruleQualifiedName ) ) { - // InternalApplicationConfiguration.g:9246:2: ( ( ruleQualifiedName ) ) - // InternalApplicationConfiguration.g:9247:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:9252:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:9253:3: ( ruleQualifiedName ) { before(grammarAccess.getAllPatternEntryAccess().getPackagePatternModelCrossReference_1_0()); - // InternalApplicationConfiguration.g:9248:3: ( ruleQualifiedName ) - // InternalApplicationConfiguration.g:9249:4: ruleQualifiedName + // InternalApplicationConfiguration.g:9254:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:9255:4: ruleQualifiedName { before(grammarAccess.getAllPatternEntryAccess().getPackagePatternModelQualifiedNameParserRuleCall_1_0_1()); pushFollow(FOLLOW_2); @@ -28421,17 +28448,17 @@ public final void rule__AllPatternEntry__PackageAssignment_1() throws Recognitio // $ANTLR start "rule__AllPatternEntry__ExclusuionAssignment_2_2" - // InternalApplicationConfiguration.g:9260:1: rule__AllPatternEntry__ExclusuionAssignment_2_2 : ( rulePatternElement ) ; + // InternalApplicationConfiguration.g:9266:1: rule__AllPatternEntry__ExclusuionAssignment_2_2 : ( rulePatternElement ) ; public final void rule__AllPatternEntry__ExclusuionAssignment_2_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9264:1: ( ( rulePatternElement ) ) - // InternalApplicationConfiguration.g:9265:2: ( rulePatternElement ) + // InternalApplicationConfiguration.g:9270:1: ( ( rulePatternElement ) ) + // InternalApplicationConfiguration.g:9271:2: ( rulePatternElement ) { - // InternalApplicationConfiguration.g:9265:2: ( rulePatternElement ) - // InternalApplicationConfiguration.g:9266:3: rulePatternElement + // InternalApplicationConfiguration.g:9271:2: ( rulePatternElement ) + // InternalApplicationConfiguration.g:9272:3: rulePatternElement { before(grammarAccess.getAllPatternEntryAccess().getExclusuionPatternElementParserRuleCall_2_2_0()); pushFollow(FOLLOW_2); @@ -28462,17 +28489,17 @@ public final void rule__AllPatternEntry__ExclusuionAssignment_2_2() throws Recog // $ANTLR start "rule__AllPatternEntry__ExclusuionAssignment_2_3_1" - // InternalApplicationConfiguration.g:9275:1: rule__AllPatternEntry__ExclusuionAssignment_2_3_1 : ( rulePatternElement ) ; + // InternalApplicationConfiguration.g:9281:1: rule__AllPatternEntry__ExclusuionAssignment_2_3_1 : ( rulePatternElement ) ; public final void rule__AllPatternEntry__ExclusuionAssignment_2_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9279:1: ( ( rulePatternElement ) ) - // InternalApplicationConfiguration.g:9280:2: ( rulePatternElement ) + // InternalApplicationConfiguration.g:9285:1: ( ( rulePatternElement ) ) + // InternalApplicationConfiguration.g:9286:2: ( rulePatternElement ) { - // InternalApplicationConfiguration.g:9280:2: ( rulePatternElement ) - // InternalApplicationConfiguration.g:9281:3: rulePatternElement + // InternalApplicationConfiguration.g:9286:2: ( rulePatternElement ) + // InternalApplicationConfiguration.g:9287:3: rulePatternElement { before(grammarAccess.getAllPatternEntryAccess().getExclusuionPatternElementParserRuleCall_2_3_1_0()); pushFollow(FOLLOW_2); @@ -28503,21 +28530,21 @@ public final void rule__AllPatternEntry__ExclusuionAssignment_2_3_1() throws Rec // $ANTLR start "rule__PatternElement__PackageAssignment_0_0" - // InternalApplicationConfiguration.g:9290:1: rule__PatternElement__PackageAssignment_0_0 : ( ( ruleQualifiedName ) ) ; + // InternalApplicationConfiguration.g:9296:1: rule__PatternElement__PackageAssignment_0_0 : ( ( ruleQualifiedName ) ) ; public final void rule__PatternElement__PackageAssignment_0_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9294:1: ( ( ( ruleQualifiedName ) ) ) - // InternalApplicationConfiguration.g:9295:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:9300:1: ( ( ( ruleQualifiedName ) ) ) + // InternalApplicationConfiguration.g:9301:2: ( ( ruleQualifiedName ) ) { - // InternalApplicationConfiguration.g:9295:2: ( ( ruleQualifiedName ) ) - // InternalApplicationConfiguration.g:9296:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:9301:2: ( ( ruleQualifiedName ) ) + // InternalApplicationConfiguration.g:9302:3: ( ruleQualifiedName ) { before(grammarAccess.getPatternElementAccess().getPackagePatternModelCrossReference_0_0_0()); - // InternalApplicationConfiguration.g:9297:3: ( ruleQualifiedName ) - // InternalApplicationConfiguration.g:9298:4: ruleQualifiedName + // InternalApplicationConfiguration.g:9303:3: ( ruleQualifiedName ) + // InternalApplicationConfiguration.g:9304:4: ruleQualifiedName { before(grammarAccess.getPatternElementAccess().getPackagePatternModelQualifiedNameParserRuleCall_0_0_0_1()); pushFollow(FOLLOW_2); @@ -28552,21 +28579,21 @@ public final void rule__PatternElement__PackageAssignment_0_0() throws Recogniti // $ANTLR start "rule__PatternElement__PatternAssignment_1" - // InternalApplicationConfiguration.g:9309:1: rule__PatternElement__PatternAssignment_1 : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:9315:1: rule__PatternElement__PatternAssignment_1 : ( ( RULE_ID ) ) ; public final void rule__PatternElement__PatternAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9313:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:9314:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9319:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:9320:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:9314:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9315:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9320:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9321:3: ( RULE_ID ) { before(grammarAccess.getPatternElementAccess().getPatternPatternCrossReference_1_0()); - // InternalApplicationConfiguration.g:9316:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:9317:4: RULE_ID + // InternalApplicationConfiguration.g:9322:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9323:4: RULE_ID { before(grammarAccess.getPatternElementAccess().getPatternPatternIDTerminalRuleCall_1_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -28597,17 +28624,17 @@ public final void rule__PatternElement__PatternAssignment_1() throws Recognition // $ANTLR start "rule__GraphPatternDeclaration__NameAssignment_1" - // InternalApplicationConfiguration.g:9328:1: rule__GraphPatternDeclaration__NameAssignment_1 : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:9334:1: rule__GraphPatternDeclaration__NameAssignment_1 : ( RULE_ID ) ; public final void rule__GraphPatternDeclaration__NameAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9332:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9333:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9338:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9339:2: ( RULE_ID ) { - // InternalApplicationConfiguration.g:9333:2: ( RULE_ID ) - // InternalApplicationConfiguration.g:9334:3: RULE_ID + // InternalApplicationConfiguration.g:9339:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9340:3: RULE_ID { before(grammarAccess.getGraphPatternDeclarationAccess().getNameIDTerminalRuleCall_1_0()); match(input,RULE_ID,FOLLOW_2); @@ -28634,17 +28661,17 @@ public final void rule__GraphPatternDeclaration__NameAssignment_1() throws Recog // $ANTLR start "rule__GraphPatternDeclaration__SpecificationAssignment_2" - // InternalApplicationConfiguration.g:9343:1: rule__GraphPatternDeclaration__SpecificationAssignment_2 : ( rulePatternSpecification ) ; + // InternalApplicationConfiguration.g:9349:1: rule__GraphPatternDeclaration__SpecificationAssignment_2 : ( rulePatternSpecification ) ; public final void rule__GraphPatternDeclaration__SpecificationAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9347:1: ( ( rulePatternSpecification ) ) - // InternalApplicationConfiguration.g:9348:2: ( rulePatternSpecification ) + // InternalApplicationConfiguration.g:9353:1: ( ( rulePatternSpecification ) ) + // InternalApplicationConfiguration.g:9354:2: ( rulePatternSpecification ) { - // InternalApplicationConfiguration.g:9348:2: ( rulePatternSpecification ) - // InternalApplicationConfiguration.g:9349:3: rulePatternSpecification + // InternalApplicationConfiguration.g:9354:2: ( rulePatternSpecification ) + // InternalApplicationConfiguration.g:9355:3: rulePatternSpecification { before(grammarAccess.getGraphPatternDeclarationAccess().getSpecificationPatternSpecificationParserRuleCall_2_0()); pushFollow(FOLLOW_2); @@ -28675,21 +28702,21 @@ public final void rule__GraphPatternDeclaration__SpecificationAssignment_2() thr // $ANTLR start "rule__GraphPatternReference__ReferredAssignment" - // InternalApplicationConfiguration.g:9358:1: rule__GraphPatternReference__ReferredAssignment : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:9364:1: rule__GraphPatternReference__ReferredAssignment : ( ( RULE_ID ) ) ; public final void rule__GraphPatternReference__ReferredAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9362:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:9363:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9368:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:9369:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:9363:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9364:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9369:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9370:3: ( RULE_ID ) { before(grammarAccess.getGraphPatternReferenceAccess().getReferredGraphPatternDeclarationCrossReference_0()); - // InternalApplicationConfiguration.g:9365:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:9366:4: RULE_ID + // InternalApplicationConfiguration.g:9371:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9372:4: RULE_ID { before(grammarAccess.getGraphPatternReferenceAccess().getReferredGraphPatternDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -28720,17 +28747,17 @@ public final void rule__GraphPatternReference__ReferredAssignment() throws Recog // $ANTLR start "rule__ConfigSpecification__EntriesAssignment_2_0" - // InternalApplicationConfiguration.g:9377:1: rule__ConfigSpecification__EntriesAssignment_2_0 : ( ruleConfigEntry ) ; + // InternalApplicationConfiguration.g:9383:1: rule__ConfigSpecification__EntriesAssignment_2_0 : ( ruleConfigEntry ) ; public final void rule__ConfigSpecification__EntriesAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9381:1: ( ( ruleConfigEntry ) ) - // InternalApplicationConfiguration.g:9382:2: ( ruleConfigEntry ) + // InternalApplicationConfiguration.g:9387:1: ( ( ruleConfigEntry ) ) + // InternalApplicationConfiguration.g:9388:2: ( ruleConfigEntry ) { - // InternalApplicationConfiguration.g:9382:2: ( ruleConfigEntry ) - // InternalApplicationConfiguration.g:9383:3: ruleConfigEntry + // InternalApplicationConfiguration.g:9388:2: ( ruleConfigEntry ) + // InternalApplicationConfiguration.g:9389:3: ruleConfigEntry { before(grammarAccess.getConfigSpecificationAccess().getEntriesConfigEntryParserRuleCall_2_0_0()); pushFollow(FOLLOW_2); @@ -28761,17 +28788,17 @@ public final void rule__ConfigSpecification__EntriesAssignment_2_0() throws Reco // $ANTLR start "rule__ConfigSpecification__EntriesAssignment_2_1_1" - // InternalApplicationConfiguration.g:9392:1: rule__ConfigSpecification__EntriesAssignment_2_1_1 : ( ruleConfigEntry ) ; + // InternalApplicationConfiguration.g:9398:1: rule__ConfigSpecification__EntriesAssignment_2_1_1 : ( ruleConfigEntry ) ; public final void rule__ConfigSpecification__EntriesAssignment_2_1_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9396:1: ( ( ruleConfigEntry ) ) - // InternalApplicationConfiguration.g:9397:2: ( ruleConfigEntry ) + // InternalApplicationConfiguration.g:9402:1: ( ( ruleConfigEntry ) ) + // InternalApplicationConfiguration.g:9403:2: ( ruleConfigEntry ) { - // InternalApplicationConfiguration.g:9397:2: ( ruleConfigEntry ) - // InternalApplicationConfiguration.g:9398:3: ruleConfigEntry + // InternalApplicationConfiguration.g:9403:2: ( ruleConfigEntry ) + // InternalApplicationConfiguration.g:9404:3: ruleConfigEntry { before(grammarAccess.getConfigSpecificationAccess().getEntriesConfigEntryParserRuleCall_2_1_1_0()); pushFollow(FOLLOW_2); @@ -28802,17 +28829,17 @@ public final void rule__ConfigSpecification__EntriesAssignment_2_1_1() throws Re // $ANTLR start "rule__ConfigDeclaration__NameAssignment_1" - // InternalApplicationConfiguration.g:9407:1: rule__ConfigDeclaration__NameAssignment_1 : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:9413:1: rule__ConfigDeclaration__NameAssignment_1 : ( RULE_ID ) ; public final void rule__ConfigDeclaration__NameAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9411:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9412:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9417:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9418:2: ( RULE_ID ) { - // InternalApplicationConfiguration.g:9412:2: ( RULE_ID ) - // InternalApplicationConfiguration.g:9413:3: RULE_ID + // InternalApplicationConfiguration.g:9418:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:9419:3: RULE_ID { before(grammarAccess.getConfigDeclarationAccess().getNameIDTerminalRuleCall_1_0()); match(input,RULE_ID,FOLLOW_2); @@ -28839,17 +28866,17 @@ public final void rule__ConfigDeclaration__NameAssignment_1() throws Recognition // $ANTLR start "rule__ConfigDeclaration__SpecificationAssignment_2" - // InternalApplicationConfiguration.g:9422:1: rule__ConfigDeclaration__SpecificationAssignment_2 : ( ruleConfigSpecification ) ; + // InternalApplicationConfiguration.g:9428:1: rule__ConfigDeclaration__SpecificationAssignment_2 : ( ruleConfigSpecification ) ; public final void rule__ConfigDeclaration__SpecificationAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9426:1: ( ( ruleConfigSpecification ) ) - // InternalApplicationConfiguration.g:9427:2: ( ruleConfigSpecification ) + // InternalApplicationConfiguration.g:9432:1: ( ( ruleConfigSpecification ) ) + // InternalApplicationConfiguration.g:9433:2: ( ruleConfigSpecification ) { - // InternalApplicationConfiguration.g:9427:2: ( ruleConfigSpecification ) - // InternalApplicationConfiguration.g:9428:3: ruleConfigSpecification + // InternalApplicationConfiguration.g:9433:2: ( ruleConfigSpecification ) + // InternalApplicationConfiguration.g:9434:3: ruleConfigSpecification { before(grammarAccess.getConfigDeclarationAccess().getSpecificationConfigSpecificationParserRuleCall_2_0()); pushFollow(FOLLOW_2); @@ -28880,17 +28907,17 @@ public final void rule__ConfigDeclaration__SpecificationAssignment_2() throws Re // $ANTLR start "rule__DocumentationEntry__LevelAssignment_2" - // InternalApplicationConfiguration.g:9437:1: rule__DocumentationEntry__LevelAssignment_2 : ( ruleDocumentLevelSpecification ) ; + // InternalApplicationConfiguration.g:9443:1: rule__DocumentationEntry__LevelAssignment_2 : ( ruleDocumentLevelSpecification ) ; public final void rule__DocumentationEntry__LevelAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9441:1: ( ( ruleDocumentLevelSpecification ) ) - // InternalApplicationConfiguration.g:9442:2: ( ruleDocumentLevelSpecification ) + // InternalApplicationConfiguration.g:9447:1: ( ( ruleDocumentLevelSpecification ) ) + // InternalApplicationConfiguration.g:9448:2: ( ruleDocumentLevelSpecification ) { - // InternalApplicationConfiguration.g:9442:2: ( ruleDocumentLevelSpecification ) - // InternalApplicationConfiguration.g:9443:3: ruleDocumentLevelSpecification + // InternalApplicationConfiguration.g:9448:2: ( ruleDocumentLevelSpecification ) + // InternalApplicationConfiguration.g:9449:3: ruleDocumentLevelSpecification { before(grammarAccess.getDocumentationEntryAccess().getLevelDocumentLevelSpecificationEnumRuleCall_2_0()); pushFollow(FOLLOW_2); @@ -28921,17 +28948,17 @@ public final void rule__DocumentationEntry__LevelAssignment_2() throws Recogniti // $ANTLR start "rule__RuntimeEntry__MillisecLimitAssignment_2" - // InternalApplicationConfiguration.g:9452:1: rule__RuntimeEntry__MillisecLimitAssignment_2 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:9458:1: rule__RuntimeEntry__MillisecLimitAssignment_2 : ( RULE_INT ) ; public final void rule__RuntimeEntry__MillisecLimitAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9456:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:9457:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:9462:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:9463:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:9457:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:9458:3: RULE_INT + // InternalApplicationConfiguration.g:9463:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:9464:3: RULE_INT { before(grammarAccess.getRuntimeEntryAccess().getMillisecLimitINTTerminalRuleCall_2_0()); match(input,RULE_INT,FOLLOW_2); @@ -28958,17 +28985,17 @@ public final void rule__RuntimeEntry__MillisecLimitAssignment_2() throws Recogni // $ANTLR start "rule__MemoryEntry__MegabyteLimitAssignment_2" - // InternalApplicationConfiguration.g:9467:1: rule__MemoryEntry__MegabyteLimitAssignment_2 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:9473:1: rule__MemoryEntry__MegabyteLimitAssignment_2 : ( RULE_INT ) ; public final void rule__MemoryEntry__MegabyteLimitAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9471:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:9472:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:9477:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:9478:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:9472:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:9473:3: RULE_INT + // InternalApplicationConfiguration.g:9478:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:9479:3: RULE_INT { before(grammarAccess.getMemoryEntryAccess().getMegabyteLimitINTTerminalRuleCall_2_0()); match(input,RULE_INT,FOLLOW_2); @@ -28995,17 +29022,17 @@ public final void rule__MemoryEntry__MegabyteLimitAssignment_2() throws Recognit // $ANTLR start "rule__CustomEntry__KeyAssignment_0" - // InternalApplicationConfiguration.g:9482:1: rule__CustomEntry__KeyAssignment_0 : ( RULE_STRING ) ; + // InternalApplicationConfiguration.g:9488:1: rule__CustomEntry__KeyAssignment_0 : ( RULE_STRING ) ; public final void rule__CustomEntry__KeyAssignment_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9486:1: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:9487:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:9492:1: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:9493:2: ( RULE_STRING ) { - // InternalApplicationConfiguration.g:9487:2: ( RULE_STRING ) - // InternalApplicationConfiguration.g:9488:3: RULE_STRING + // InternalApplicationConfiguration.g:9493:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:9494:3: RULE_STRING { before(grammarAccess.getCustomEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); match(input,RULE_STRING,FOLLOW_2); @@ -29032,17 +29059,17 @@ public final void rule__CustomEntry__KeyAssignment_0() throws RecognitionExcepti // $ANTLR start "rule__CustomEntry__ValueAssignment_2" - // InternalApplicationConfiguration.g:9497:1: rule__CustomEntry__ValueAssignment_2 : ( RULE_STRING ) ; + // InternalApplicationConfiguration.g:9503:1: rule__CustomEntry__ValueAssignment_2 : ( RULE_STRING ) ; public final void rule__CustomEntry__ValueAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9501:1: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:9502:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:9507:1: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:9508:2: ( RULE_STRING ) { - // InternalApplicationConfiguration.g:9502:2: ( RULE_STRING ) - // InternalApplicationConfiguration.g:9503:3: RULE_STRING + // InternalApplicationConfiguration.g:9508:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:9509:3: RULE_STRING { before(grammarAccess.getCustomEntryAccess().getValueSTRINGTerminalRuleCall_2_0()); match(input,RULE_STRING,FOLLOW_2); @@ -29069,21 +29096,21 @@ public final void rule__CustomEntry__ValueAssignment_2() throws RecognitionExcep // $ANTLR start "rule__ConfigReference__ConfigAssignment" - // InternalApplicationConfiguration.g:9512:1: rule__ConfigReference__ConfigAssignment : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:9518:1: rule__ConfigReference__ConfigAssignment : ( ( RULE_ID ) ) ; public final void rule__ConfigReference__ConfigAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9516:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:9517:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9522:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:9523:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:9517:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:9518:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9523:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:9524:3: ( RULE_ID ) { before(grammarAccess.getConfigReferenceAccess().getConfigConfigDeclarationCrossReference_0()); - // InternalApplicationConfiguration.g:9519:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:9520:4: RULE_ID + // InternalApplicationConfiguration.g:9525:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:9526:4: RULE_ID { before(grammarAccess.getConfigReferenceAccess().getConfigConfigDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -29114,17 +29141,17 @@ public final void rule__ConfigReference__ConfigAssignment() throws RecognitionEx // $ANTLR start "rule__ScopeSpecification__ScopesAssignment_2_0" - // InternalApplicationConfiguration.g:9531:1: rule__ScopeSpecification__ScopesAssignment_2_0 : ( ruleTypeScope ) ; + // InternalApplicationConfiguration.g:9537:1: rule__ScopeSpecification__ScopesAssignment_2_0 : ( ruleTypeScope ) ; public final void rule__ScopeSpecification__ScopesAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9535:1: ( ( ruleTypeScope ) ) - // InternalApplicationConfiguration.g:9536:2: ( ruleTypeScope ) + // InternalApplicationConfiguration.g:9541:1: ( ( ruleTypeScope ) ) + // InternalApplicationConfiguration.g:9542:2: ( ruleTypeScope ) { - // InternalApplicationConfiguration.g:9536:2: ( ruleTypeScope ) - // InternalApplicationConfiguration.g:9537:3: ruleTypeScope + // InternalApplicationConfiguration.g:9542:2: ( ruleTypeScope ) + // InternalApplicationConfiguration.g:9543:3: ruleTypeScope { before(grammarAccess.getScopeSpecificationAccess().getScopesTypeScopeParserRuleCall_2_0_0()); pushFollow(FOLLOW_2); @@ -29155,17 +29182,17 @@ public final void rule__ScopeSpecification__ScopesAssignment_2_0() throws Recogn // $ANTLR start "rule__ScopeSpecification__ScopesAssignment_2_1_1" - // InternalApplicationConfiguration.g:9546:1: rule__ScopeSpecification__ScopesAssignment_2_1_1 : ( ruleTypeScope ) ; + // InternalApplicationConfiguration.g:9552:1: rule__ScopeSpecification__ScopesAssignment_2_1_1 : ( ruleTypeScope ) ; public final void rule__ScopeSpecification__ScopesAssignment_2_1_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9550:1: ( ( ruleTypeScope ) ) - // InternalApplicationConfiguration.g:9551:2: ( ruleTypeScope ) + // InternalApplicationConfiguration.g:9556:1: ( ( ruleTypeScope ) ) + // InternalApplicationConfiguration.g:9557:2: ( ruleTypeScope ) { - // InternalApplicationConfiguration.g:9551:2: ( ruleTypeScope ) - // InternalApplicationConfiguration.g:9552:3: ruleTypeScope + // InternalApplicationConfiguration.g:9557:2: ( ruleTypeScope ) + // InternalApplicationConfiguration.g:9558:3: ruleTypeScope { before(grammarAccess.getScopeSpecificationAccess().getScopesTypeScopeParserRuleCall_2_1_1_0()); pushFollow(FOLLOW_2); @@ -29196,17 +29223,17 @@ public final void rule__ScopeSpecification__ScopesAssignment_2_1_1() throws Reco // $ANTLR start "rule__ClassTypeScope__TypeAssignment_1" - // InternalApplicationConfiguration.g:9561:1: rule__ClassTypeScope__TypeAssignment_1 : ( ruleClassReference ) ; + // InternalApplicationConfiguration.g:9567:1: rule__ClassTypeScope__TypeAssignment_1 : ( ruleClassReference ) ; public final void rule__ClassTypeScope__TypeAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9565:1: ( ( ruleClassReference ) ) - // InternalApplicationConfiguration.g:9566:2: ( ruleClassReference ) + // InternalApplicationConfiguration.g:9571:1: ( ( ruleClassReference ) ) + // InternalApplicationConfiguration.g:9572:2: ( ruleClassReference ) { - // InternalApplicationConfiguration.g:9566:2: ( ruleClassReference ) - // InternalApplicationConfiguration.g:9567:3: ruleClassReference + // InternalApplicationConfiguration.g:9572:2: ( ruleClassReference ) + // InternalApplicationConfiguration.g:9573:3: ruleClassReference { before(grammarAccess.getClassTypeScopeAccess().getTypeClassReferenceParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -29237,24 +29264,24 @@ public final void rule__ClassTypeScope__TypeAssignment_1() throws RecognitionExc // $ANTLR start "rule__ClassTypeScope__SetsNewAssignment_2_0" - // InternalApplicationConfiguration.g:9576:1: rule__ClassTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; + // InternalApplicationConfiguration.g:9582:1: rule__ClassTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; public final void rule__ClassTypeScope__SetsNewAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9580:1: ( ( ( '+=' ) ) ) - // InternalApplicationConfiguration.g:9581:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9586:1: ( ( ( '+=' ) ) ) + // InternalApplicationConfiguration.g:9587:2: ( ( '+=' ) ) { - // InternalApplicationConfiguration.g:9581:2: ( ( '+=' ) ) - // InternalApplicationConfiguration.g:9582:3: ( '+=' ) + // InternalApplicationConfiguration.g:9587:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9588:3: ( '+=' ) { before(grammarAccess.getClassTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - // InternalApplicationConfiguration.g:9583:3: ( '+=' ) - // InternalApplicationConfiguration.g:9584:4: '+=' + // InternalApplicationConfiguration.g:9589:3: ( '+=' ) + // InternalApplicationConfiguration.g:9590:4: '+=' { before(grammarAccess.getClassTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - match(input,54,FOLLOW_2); + match(input,55,FOLLOW_2); after(grammarAccess.getClassTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); } @@ -29282,24 +29309,24 @@ public final void rule__ClassTypeScope__SetsNewAssignment_2_0() throws Recogniti // $ANTLR start "rule__ClassTypeScope__SetsSumAssignment_2_1" - // InternalApplicationConfiguration.g:9595:1: rule__ClassTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; + // InternalApplicationConfiguration.g:9601:1: rule__ClassTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; public final void rule__ClassTypeScope__SetsSumAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9599:1: ( ( ( '=' ) ) ) - // InternalApplicationConfiguration.g:9600:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9605:1: ( ( ( '=' ) ) ) + // InternalApplicationConfiguration.g:9606:2: ( ( '=' ) ) { - // InternalApplicationConfiguration.g:9600:2: ( ( '=' ) ) - // InternalApplicationConfiguration.g:9601:3: ( '=' ) + // InternalApplicationConfiguration.g:9606:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9607:3: ( '=' ) { before(grammarAccess.getClassTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - // InternalApplicationConfiguration.g:9602:3: ( '=' ) - // InternalApplicationConfiguration.g:9603:4: '=' + // InternalApplicationConfiguration.g:9608:3: ( '=' ) + // InternalApplicationConfiguration.g:9609:4: '=' { before(grammarAccess.getClassTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getClassTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); } @@ -29327,17 +29354,17 @@ public final void rule__ClassTypeScope__SetsSumAssignment_2_1() throws Recogniti // $ANTLR start "rule__ClassTypeScope__NumberAssignment_3_0" - // InternalApplicationConfiguration.g:9614:1: rule__ClassTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; + // InternalApplicationConfiguration.g:9620:1: rule__ClassTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; public final void rule__ClassTypeScope__NumberAssignment_3_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9618:1: ( ( ruleExactNumber ) ) - // InternalApplicationConfiguration.g:9619:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9624:1: ( ( ruleExactNumber ) ) + // InternalApplicationConfiguration.g:9625:2: ( ruleExactNumber ) { - // InternalApplicationConfiguration.g:9619:2: ( ruleExactNumber ) - // InternalApplicationConfiguration.g:9620:3: ruleExactNumber + // InternalApplicationConfiguration.g:9625:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9626:3: ruleExactNumber { before(grammarAccess.getClassTypeScopeAccess().getNumberExactNumberParserRuleCall_3_0_0()); pushFollow(FOLLOW_2); @@ -29368,17 +29395,17 @@ public final void rule__ClassTypeScope__NumberAssignment_3_0() throws Recognitio // $ANTLR start "rule__ClassTypeScope__NumberAssignment_3_1" - // InternalApplicationConfiguration.g:9629:1: rule__ClassTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; + // InternalApplicationConfiguration.g:9635:1: rule__ClassTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; public final void rule__ClassTypeScope__NumberAssignment_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9633:1: ( ( ruleIntervallNumber ) ) - // InternalApplicationConfiguration.g:9634:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9639:1: ( ( ruleIntervallNumber ) ) + // InternalApplicationConfiguration.g:9640:2: ( ruleIntervallNumber ) { - // InternalApplicationConfiguration.g:9634:2: ( ruleIntervallNumber ) - // InternalApplicationConfiguration.g:9635:3: ruleIntervallNumber + // InternalApplicationConfiguration.g:9640:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9641:3: ruleIntervallNumber { before(grammarAccess.getClassTypeScopeAccess().getNumberIntervallNumberParserRuleCall_3_1_0()); pushFollow(FOLLOW_2); @@ -29409,17 +29436,17 @@ public final void rule__ClassTypeScope__NumberAssignment_3_1() throws Recognitio // $ANTLR start "rule__ObjectTypeScope__TypeAssignment_1" - // InternalApplicationConfiguration.g:9644:1: rule__ObjectTypeScope__TypeAssignment_1 : ( ruleObjectReference ) ; + // InternalApplicationConfiguration.g:9650:1: rule__ObjectTypeScope__TypeAssignment_1 : ( ruleObjectReference ) ; public final void rule__ObjectTypeScope__TypeAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9648:1: ( ( ruleObjectReference ) ) - // InternalApplicationConfiguration.g:9649:2: ( ruleObjectReference ) + // InternalApplicationConfiguration.g:9654:1: ( ( ruleObjectReference ) ) + // InternalApplicationConfiguration.g:9655:2: ( ruleObjectReference ) { - // InternalApplicationConfiguration.g:9649:2: ( ruleObjectReference ) - // InternalApplicationConfiguration.g:9650:3: ruleObjectReference + // InternalApplicationConfiguration.g:9655:2: ( ruleObjectReference ) + // InternalApplicationConfiguration.g:9656:3: ruleObjectReference { before(grammarAccess.getObjectTypeScopeAccess().getTypeObjectReferenceParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -29450,24 +29477,24 @@ public final void rule__ObjectTypeScope__TypeAssignment_1() throws RecognitionEx // $ANTLR start "rule__ObjectTypeScope__SetsNewAssignment_2_0" - // InternalApplicationConfiguration.g:9659:1: rule__ObjectTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; + // InternalApplicationConfiguration.g:9665:1: rule__ObjectTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; public final void rule__ObjectTypeScope__SetsNewAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9663:1: ( ( ( '+=' ) ) ) - // InternalApplicationConfiguration.g:9664:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9669:1: ( ( ( '+=' ) ) ) + // InternalApplicationConfiguration.g:9670:2: ( ( '+=' ) ) { - // InternalApplicationConfiguration.g:9664:2: ( ( '+=' ) ) - // InternalApplicationConfiguration.g:9665:3: ( '+=' ) + // InternalApplicationConfiguration.g:9670:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9671:3: ( '+=' ) { before(grammarAccess.getObjectTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - // InternalApplicationConfiguration.g:9666:3: ( '+=' ) - // InternalApplicationConfiguration.g:9667:4: '+=' + // InternalApplicationConfiguration.g:9672:3: ( '+=' ) + // InternalApplicationConfiguration.g:9673:4: '+=' { before(grammarAccess.getObjectTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - match(input,54,FOLLOW_2); + match(input,55,FOLLOW_2); after(grammarAccess.getObjectTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); } @@ -29495,24 +29522,24 @@ public final void rule__ObjectTypeScope__SetsNewAssignment_2_0() throws Recognit // $ANTLR start "rule__ObjectTypeScope__SetsSumAssignment_2_1" - // InternalApplicationConfiguration.g:9678:1: rule__ObjectTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; + // InternalApplicationConfiguration.g:9684:1: rule__ObjectTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; public final void rule__ObjectTypeScope__SetsSumAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9682:1: ( ( ( '=' ) ) ) - // InternalApplicationConfiguration.g:9683:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9688:1: ( ( ( '=' ) ) ) + // InternalApplicationConfiguration.g:9689:2: ( ( '=' ) ) { - // InternalApplicationConfiguration.g:9683:2: ( ( '=' ) ) - // InternalApplicationConfiguration.g:9684:3: ( '=' ) + // InternalApplicationConfiguration.g:9689:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9690:3: ( '=' ) { before(grammarAccess.getObjectTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - // InternalApplicationConfiguration.g:9685:3: ( '=' ) - // InternalApplicationConfiguration.g:9686:4: '=' + // InternalApplicationConfiguration.g:9691:3: ( '=' ) + // InternalApplicationConfiguration.g:9692:4: '=' { before(grammarAccess.getObjectTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getObjectTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); } @@ -29540,17 +29567,17 @@ public final void rule__ObjectTypeScope__SetsSumAssignment_2_1() throws Recognit // $ANTLR start "rule__ObjectTypeScope__NumberAssignment_3_0" - // InternalApplicationConfiguration.g:9697:1: rule__ObjectTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; + // InternalApplicationConfiguration.g:9703:1: rule__ObjectTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; public final void rule__ObjectTypeScope__NumberAssignment_3_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9701:1: ( ( ruleExactNumber ) ) - // InternalApplicationConfiguration.g:9702:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9707:1: ( ( ruleExactNumber ) ) + // InternalApplicationConfiguration.g:9708:2: ( ruleExactNumber ) { - // InternalApplicationConfiguration.g:9702:2: ( ruleExactNumber ) - // InternalApplicationConfiguration.g:9703:3: ruleExactNumber + // InternalApplicationConfiguration.g:9708:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9709:3: ruleExactNumber { before(grammarAccess.getObjectTypeScopeAccess().getNumberExactNumberParserRuleCall_3_0_0()); pushFollow(FOLLOW_2); @@ -29581,17 +29608,17 @@ public final void rule__ObjectTypeScope__NumberAssignment_3_0() throws Recogniti // $ANTLR start "rule__ObjectTypeScope__NumberAssignment_3_1" - // InternalApplicationConfiguration.g:9712:1: rule__ObjectTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; + // InternalApplicationConfiguration.g:9718:1: rule__ObjectTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; public final void rule__ObjectTypeScope__NumberAssignment_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9716:1: ( ( ruleIntervallNumber ) ) - // InternalApplicationConfiguration.g:9717:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9722:1: ( ( ruleIntervallNumber ) ) + // InternalApplicationConfiguration.g:9723:2: ( ruleIntervallNumber ) { - // InternalApplicationConfiguration.g:9717:2: ( ruleIntervallNumber ) - // InternalApplicationConfiguration.g:9718:3: ruleIntervallNumber + // InternalApplicationConfiguration.g:9723:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9724:3: ruleIntervallNumber { before(grammarAccess.getObjectTypeScopeAccess().getNumberIntervallNumberParserRuleCall_3_1_0()); pushFollow(FOLLOW_2); @@ -29622,17 +29649,17 @@ public final void rule__ObjectTypeScope__NumberAssignment_3_1() throws Recogniti // $ANTLR start "rule__IntegerTypeScope__TypeAssignment_1" - // InternalApplicationConfiguration.g:9727:1: rule__IntegerTypeScope__TypeAssignment_1 : ( ruleIntegerReference ) ; + // InternalApplicationConfiguration.g:9733:1: rule__IntegerTypeScope__TypeAssignment_1 : ( ruleIntegerReference ) ; public final void rule__IntegerTypeScope__TypeAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9731:1: ( ( ruleIntegerReference ) ) - // InternalApplicationConfiguration.g:9732:2: ( ruleIntegerReference ) + // InternalApplicationConfiguration.g:9737:1: ( ( ruleIntegerReference ) ) + // InternalApplicationConfiguration.g:9738:2: ( ruleIntegerReference ) { - // InternalApplicationConfiguration.g:9732:2: ( ruleIntegerReference ) - // InternalApplicationConfiguration.g:9733:3: ruleIntegerReference + // InternalApplicationConfiguration.g:9738:2: ( ruleIntegerReference ) + // InternalApplicationConfiguration.g:9739:3: ruleIntegerReference { before(grammarAccess.getIntegerTypeScopeAccess().getTypeIntegerReferenceParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -29663,24 +29690,24 @@ public final void rule__IntegerTypeScope__TypeAssignment_1() throws RecognitionE // $ANTLR start "rule__IntegerTypeScope__SetsNewAssignment_2_0" - // InternalApplicationConfiguration.g:9742:1: rule__IntegerTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; + // InternalApplicationConfiguration.g:9748:1: rule__IntegerTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; public final void rule__IntegerTypeScope__SetsNewAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9746:1: ( ( ( '+=' ) ) ) - // InternalApplicationConfiguration.g:9747:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9752:1: ( ( ( '+=' ) ) ) + // InternalApplicationConfiguration.g:9753:2: ( ( '+=' ) ) { - // InternalApplicationConfiguration.g:9747:2: ( ( '+=' ) ) - // InternalApplicationConfiguration.g:9748:3: ( '+=' ) + // InternalApplicationConfiguration.g:9753:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9754:3: ( '+=' ) { before(grammarAccess.getIntegerTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - // InternalApplicationConfiguration.g:9749:3: ( '+=' ) - // InternalApplicationConfiguration.g:9750:4: '+=' + // InternalApplicationConfiguration.g:9755:3: ( '+=' ) + // InternalApplicationConfiguration.g:9756:4: '+=' { before(grammarAccess.getIntegerTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - match(input,54,FOLLOW_2); + match(input,55,FOLLOW_2); after(grammarAccess.getIntegerTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); } @@ -29708,24 +29735,24 @@ public final void rule__IntegerTypeScope__SetsNewAssignment_2_0() throws Recogni // $ANTLR start "rule__IntegerTypeScope__SetsSumAssignment_2_1" - // InternalApplicationConfiguration.g:9761:1: rule__IntegerTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; + // InternalApplicationConfiguration.g:9767:1: rule__IntegerTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; public final void rule__IntegerTypeScope__SetsSumAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9765:1: ( ( ( '=' ) ) ) - // InternalApplicationConfiguration.g:9766:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9771:1: ( ( ( '=' ) ) ) + // InternalApplicationConfiguration.g:9772:2: ( ( '=' ) ) { - // InternalApplicationConfiguration.g:9766:2: ( ( '=' ) ) - // InternalApplicationConfiguration.g:9767:3: ( '=' ) + // InternalApplicationConfiguration.g:9772:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9773:3: ( '=' ) { before(grammarAccess.getIntegerTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - // InternalApplicationConfiguration.g:9768:3: ( '=' ) - // InternalApplicationConfiguration.g:9769:4: '=' + // InternalApplicationConfiguration.g:9774:3: ( '=' ) + // InternalApplicationConfiguration.g:9775:4: '=' { before(grammarAccess.getIntegerTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getIntegerTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); } @@ -29753,17 +29780,17 @@ public final void rule__IntegerTypeScope__SetsSumAssignment_2_1() throws Recogni // $ANTLR start "rule__IntegerTypeScope__NumberAssignment_3_0" - // InternalApplicationConfiguration.g:9780:1: rule__IntegerTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; + // InternalApplicationConfiguration.g:9786:1: rule__IntegerTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; public final void rule__IntegerTypeScope__NumberAssignment_3_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9784:1: ( ( ruleExactNumber ) ) - // InternalApplicationConfiguration.g:9785:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9790:1: ( ( ruleExactNumber ) ) + // InternalApplicationConfiguration.g:9791:2: ( ruleExactNumber ) { - // InternalApplicationConfiguration.g:9785:2: ( ruleExactNumber ) - // InternalApplicationConfiguration.g:9786:3: ruleExactNumber + // InternalApplicationConfiguration.g:9791:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9792:3: ruleExactNumber { before(grammarAccess.getIntegerTypeScopeAccess().getNumberExactNumberParserRuleCall_3_0_0()); pushFollow(FOLLOW_2); @@ -29794,17 +29821,17 @@ public final void rule__IntegerTypeScope__NumberAssignment_3_0() throws Recognit // $ANTLR start "rule__IntegerTypeScope__NumberAssignment_3_1" - // InternalApplicationConfiguration.g:9795:1: rule__IntegerTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; + // InternalApplicationConfiguration.g:9801:1: rule__IntegerTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; public final void rule__IntegerTypeScope__NumberAssignment_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9799:1: ( ( ruleIntervallNumber ) ) - // InternalApplicationConfiguration.g:9800:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9805:1: ( ( ruleIntervallNumber ) ) + // InternalApplicationConfiguration.g:9806:2: ( ruleIntervallNumber ) { - // InternalApplicationConfiguration.g:9800:2: ( ruleIntervallNumber ) - // InternalApplicationConfiguration.g:9801:3: ruleIntervallNumber + // InternalApplicationConfiguration.g:9806:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9807:3: ruleIntervallNumber { before(grammarAccess.getIntegerTypeScopeAccess().getNumberIntervallNumberParserRuleCall_3_1_0()); pushFollow(FOLLOW_2); @@ -29835,17 +29862,17 @@ public final void rule__IntegerTypeScope__NumberAssignment_3_1() throws Recognit // $ANTLR start "rule__IntegerTypeScope__NumberAssignment_3_2" - // InternalApplicationConfiguration.g:9810:1: rule__IntegerTypeScope__NumberAssignment_3_2 : ( ruleIntEnumberation ) ; + // InternalApplicationConfiguration.g:9816:1: rule__IntegerTypeScope__NumberAssignment_3_2 : ( ruleIntEnumberation ) ; public final void rule__IntegerTypeScope__NumberAssignment_3_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9814:1: ( ( ruleIntEnumberation ) ) - // InternalApplicationConfiguration.g:9815:2: ( ruleIntEnumberation ) + // InternalApplicationConfiguration.g:9820:1: ( ( ruleIntEnumberation ) ) + // InternalApplicationConfiguration.g:9821:2: ( ruleIntEnumberation ) { - // InternalApplicationConfiguration.g:9815:2: ( ruleIntEnumberation ) - // InternalApplicationConfiguration.g:9816:3: ruleIntEnumberation + // InternalApplicationConfiguration.g:9821:2: ( ruleIntEnumberation ) + // InternalApplicationConfiguration.g:9822:3: ruleIntEnumberation { before(grammarAccess.getIntegerTypeScopeAccess().getNumberIntEnumberationParserRuleCall_3_2_0()); pushFollow(FOLLOW_2); @@ -29876,17 +29903,17 @@ public final void rule__IntegerTypeScope__NumberAssignment_3_2() throws Recognit // $ANTLR start "rule__RealTypeScope__TypeAssignment_1" - // InternalApplicationConfiguration.g:9825:1: rule__RealTypeScope__TypeAssignment_1 : ( ruleRealReference ) ; + // InternalApplicationConfiguration.g:9831:1: rule__RealTypeScope__TypeAssignment_1 : ( ruleRealReference ) ; public final void rule__RealTypeScope__TypeAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9829:1: ( ( ruleRealReference ) ) - // InternalApplicationConfiguration.g:9830:2: ( ruleRealReference ) + // InternalApplicationConfiguration.g:9835:1: ( ( ruleRealReference ) ) + // InternalApplicationConfiguration.g:9836:2: ( ruleRealReference ) { - // InternalApplicationConfiguration.g:9830:2: ( ruleRealReference ) - // InternalApplicationConfiguration.g:9831:3: ruleRealReference + // InternalApplicationConfiguration.g:9836:2: ( ruleRealReference ) + // InternalApplicationConfiguration.g:9837:3: ruleRealReference { before(grammarAccess.getRealTypeScopeAccess().getTypeRealReferenceParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -29917,24 +29944,24 @@ public final void rule__RealTypeScope__TypeAssignment_1() throws RecognitionExce // $ANTLR start "rule__RealTypeScope__SetsNewAssignment_2_0" - // InternalApplicationConfiguration.g:9840:1: rule__RealTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; + // InternalApplicationConfiguration.g:9846:1: rule__RealTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; public final void rule__RealTypeScope__SetsNewAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9844:1: ( ( ( '+=' ) ) ) - // InternalApplicationConfiguration.g:9845:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9850:1: ( ( ( '+=' ) ) ) + // InternalApplicationConfiguration.g:9851:2: ( ( '+=' ) ) { - // InternalApplicationConfiguration.g:9845:2: ( ( '+=' ) ) - // InternalApplicationConfiguration.g:9846:3: ( '+=' ) + // InternalApplicationConfiguration.g:9851:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9852:3: ( '+=' ) { before(grammarAccess.getRealTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - // InternalApplicationConfiguration.g:9847:3: ( '+=' ) - // InternalApplicationConfiguration.g:9848:4: '+=' + // InternalApplicationConfiguration.g:9853:3: ( '+=' ) + // InternalApplicationConfiguration.g:9854:4: '+=' { before(grammarAccess.getRealTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - match(input,54,FOLLOW_2); + match(input,55,FOLLOW_2); after(grammarAccess.getRealTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); } @@ -29962,24 +29989,24 @@ public final void rule__RealTypeScope__SetsNewAssignment_2_0() throws Recognitio // $ANTLR start "rule__RealTypeScope__SetsSumAssignment_2_1" - // InternalApplicationConfiguration.g:9859:1: rule__RealTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; + // InternalApplicationConfiguration.g:9865:1: rule__RealTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; public final void rule__RealTypeScope__SetsSumAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9863:1: ( ( ( '=' ) ) ) - // InternalApplicationConfiguration.g:9864:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9869:1: ( ( ( '=' ) ) ) + // InternalApplicationConfiguration.g:9870:2: ( ( '=' ) ) { - // InternalApplicationConfiguration.g:9864:2: ( ( '=' ) ) - // InternalApplicationConfiguration.g:9865:3: ( '=' ) + // InternalApplicationConfiguration.g:9870:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9871:3: ( '=' ) { before(grammarAccess.getRealTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - // InternalApplicationConfiguration.g:9866:3: ( '=' ) - // InternalApplicationConfiguration.g:9867:4: '=' + // InternalApplicationConfiguration.g:9872:3: ( '=' ) + // InternalApplicationConfiguration.g:9873:4: '=' { before(grammarAccess.getRealTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getRealTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); } @@ -30007,17 +30034,17 @@ public final void rule__RealTypeScope__SetsSumAssignment_2_1() throws Recognitio // $ANTLR start "rule__RealTypeScope__NumberAssignment_3_0" - // InternalApplicationConfiguration.g:9878:1: rule__RealTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; + // InternalApplicationConfiguration.g:9884:1: rule__RealTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; public final void rule__RealTypeScope__NumberAssignment_3_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9882:1: ( ( ruleExactNumber ) ) - // InternalApplicationConfiguration.g:9883:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9888:1: ( ( ruleExactNumber ) ) + // InternalApplicationConfiguration.g:9889:2: ( ruleExactNumber ) { - // InternalApplicationConfiguration.g:9883:2: ( ruleExactNumber ) - // InternalApplicationConfiguration.g:9884:3: ruleExactNumber + // InternalApplicationConfiguration.g:9889:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9890:3: ruleExactNumber { before(grammarAccess.getRealTypeScopeAccess().getNumberExactNumberParserRuleCall_3_0_0()); pushFollow(FOLLOW_2); @@ -30048,17 +30075,17 @@ public final void rule__RealTypeScope__NumberAssignment_3_0() throws Recognition // $ANTLR start "rule__RealTypeScope__NumberAssignment_3_1" - // InternalApplicationConfiguration.g:9893:1: rule__RealTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; + // InternalApplicationConfiguration.g:9899:1: rule__RealTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; public final void rule__RealTypeScope__NumberAssignment_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9897:1: ( ( ruleIntervallNumber ) ) - // InternalApplicationConfiguration.g:9898:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9903:1: ( ( ruleIntervallNumber ) ) + // InternalApplicationConfiguration.g:9904:2: ( ruleIntervallNumber ) { - // InternalApplicationConfiguration.g:9898:2: ( ruleIntervallNumber ) - // InternalApplicationConfiguration.g:9899:3: ruleIntervallNumber + // InternalApplicationConfiguration.g:9904:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:9905:3: ruleIntervallNumber { before(grammarAccess.getRealTypeScopeAccess().getNumberIntervallNumberParserRuleCall_3_1_0()); pushFollow(FOLLOW_2); @@ -30089,17 +30116,17 @@ public final void rule__RealTypeScope__NumberAssignment_3_1() throws Recognition // $ANTLR start "rule__RealTypeScope__NumberAssignment_3_2" - // InternalApplicationConfiguration.g:9908:1: rule__RealTypeScope__NumberAssignment_3_2 : ( ruleRealEnumeration ) ; + // InternalApplicationConfiguration.g:9914:1: rule__RealTypeScope__NumberAssignment_3_2 : ( ruleRealEnumeration ) ; public final void rule__RealTypeScope__NumberAssignment_3_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9912:1: ( ( ruleRealEnumeration ) ) - // InternalApplicationConfiguration.g:9913:2: ( ruleRealEnumeration ) + // InternalApplicationConfiguration.g:9918:1: ( ( ruleRealEnumeration ) ) + // InternalApplicationConfiguration.g:9919:2: ( ruleRealEnumeration ) { - // InternalApplicationConfiguration.g:9913:2: ( ruleRealEnumeration ) - // InternalApplicationConfiguration.g:9914:3: ruleRealEnumeration + // InternalApplicationConfiguration.g:9919:2: ( ruleRealEnumeration ) + // InternalApplicationConfiguration.g:9920:3: ruleRealEnumeration { before(grammarAccess.getRealTypeScopeAccess().getNumberRealEnumerationParserRuleCall_3_2_0()); pushFollow(FOLLOW_2); @@ -30130,17 +30157,17 @@ public final void rule__RealTypeScope__NumberAssignment_3_2() throws Recognition // $ANTLR start "rule__StringTypeScope__TypeAssignment_1" - // InternalApplicationConfiguration.g:9923:1: rule__StringTypeScope__TypeAssignment_1 : ( ruleStringReference ) ; + // InternalApplicationConfiguration.g:9929:1: rule__StringTypeScope__TypeAssignment_1 : ( ruleStringReference ) ; public final void rule__StringTypeScope__TypeAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9927:1: ( ( ruleStringReference ) ) - // InternalApplicationConfiguration.g:9928:2: ( ruleStringReference ) + // InternalApplicationConfiguration.g:9933:1: ( ( ruleStringReference ) ) + // InternalApplicationConfiguration.g:9934:2: ( ruleStringReference ) { - // InternalApplicationConfiguration.g:9928:2: ( ruleStringReference ) - // InternalApplicationConfiguration.g:9929:3: ruleStringReference + // InternalApplicationConfiguration.g:9934:2: ( ruleStringReference ) + // InternalApplicationConfiguration.g:9935:3: ruleStringReference { before(grammarAccess.getStringTypeScopeAccess().getTypeStringReferenceParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -30171,24 +30198,24 @@ public final void rule__StringTypeScope__TypeAssignment_1() throws RecognitionEx // $ANTLR start "rule__StringTypeScope__SetsNewAssignment_2_0" - // InternalApplicationConfiguration.g:9938:1: rule__StringTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; + // InternalApplicationConfiguration.g:9944:1: rule__StringTypeScope__SetsNewAssignment_2_0 : ( ( '+=' ) ) ; public final void rule__StringTypeScope__SetsNewAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9942:1: ( ( ( '+=' ) ) ) - // InternalApplicationConfiguration.g:9943:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9948:1: ( ( ( '+=' ) ) ) + // InternalApplicationConfiguration.g:9949:2: ( ( '+=' ) ) { - // InternalApplicationConfiguration.g:9943:2: ( ( '+=' ) ) - // InternalApplicationConfiguration.g:9944:3: ( '+=' ) + // InternalApplicationConfiguration.g:9949:2: ( ( '+=' ) ) + // InternalApplicationConfiguration.g:9950:3: ( '+=' ) { before(grammarAccess.getStringTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - // InternalApplicationConfiguration.g:9945:3: ( '+=' ) - // InternalApplicationConfiguration.g:9946:4: '+=' + // InternalApplicationConfiguration.g:9951:3: ( '+=' ) + // InternalApplicationConfiguration.g:9952:4: '+=' { before(grammarAccess.getStringTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); - match(input,54,FOLLOW_2); + match(input,55,FOLLOW_2); after(grammarAccess.getStringTypeScopeAccess().getSetsNewPlusSignEqualsSignKeyword_2_0_0()); } @@ -30216,24 +30243,24 @@ public final void rule__StringTypeScope__SetsNewAssignment_2_0() throws Recognit // $ANTLR start "rule__StringTypeScope__SetsSumAssignment_2_1" - // InternalApplicationConfiguration.g:9957:1: rule__StringTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; + // InternalApplicationConfiguration.g:9963:1: rule__StringTypeScope__SetsSumAssignment_2_1 : ( ( '=' ) ) ; public final void rule__StringTypeScope__SetsSumAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9961:1: ( ( ( '=' ) ) ) - // InternalApplicationConfiguration.g:9962:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9967:1: ( ( ( '=' ) ) ) + // InternalApplicationConfiguration.g:9968:2: ( ( '=' ) ) { - // InternalApplicationConfiguration.g:9962:2: ( ( '=' ) ) - // InternalApplicationConfiguration.g:9963:3: ( '=' ) + // InternalApplicationConfiguration.g:9968:2: ( ( '=' ) ) + // InternalApplicationConfiguration.g:9969:3: ( '=' ) { before(grammarAccess.getStringTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - // InternalApplicationConfiguration.g:9964:3: ( '=' ) - // InternalApplicationConfiguration.g:9965:4: '=' + // InternalApplicationConfiguration.g:9970:3: ( '=' ) + // InternalApplicationConfiguration.g:9971:4: '=' { before(grammarAccess.getStringTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); - match(input,23,FOLLOW_2); + match(input,24,FOLLOW_2); after(grammarAccess.getStringTypeScopeAccess().getSetsSumEqualsSignKeyword_2_1_0()); } @@ -30261,17 +30288,17 @@ public final void rule__StringTypeScope__SetsSumAssignment_2_1() throws Recognit // $ANTLR start "rule__StringTypeScope__NumberAssignment_3_0" - // InternalApplicationConfiguration.g:9976:1: rule__StringTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; + // InternalApplicationConfiguration.g:9982:1: rule__StringTypeScope__NumberAssignment_3_0 : ( ruleExactNumber ) ; public final void rule__StringTypeScope__NumberAssignment_3_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9980:1: ( ( ruleExactNumber ) ) - // InternalApplicationConfiguration.g:9981:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9986:1: ( ( ruleExactNumber ) ) + // InternalApplicationConfiguration.g:9987:2: ( ruleExactNumber ) { - // InternalApplicationConfiguration.g:9981:2: ( ruleExactNumber ) - // InternalApplicationConfiguration.g:9982:3: ruleExactNumber + // InternalApplicationConfiguration.g:9987:2: ( ruleExactNumber ) + // InternalApplicationConfiguration.g:9988:3: ruleExactNumber { before(grammarAccess.getStringTypeScopeAccess().getNumberExactNumberParserRuleCall_3_0_0()); pushFollow(FOLLOW_2); @@ -30302,17 +30329,17 @@ public final void rule__StringTypeScope__NumberAssignment_3_0() throws Recogniti // $ANTLR start "rule__StringTypeScope__NumberAssignment_3_1" - // InternalApplicationConfiguration.g:9991:1: rule__StringTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; + // InternalApplicationConfiguration.g:9997:1: rule__StringTypeScope__NumberAssignment_3_1 : ( ruleIntervallNumber ) ; public final void rule__StringTypeScope__NumberAssignment_3_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:9995:1: ( ( ruleIntervallNumber ) ) - // InternalApplicationConfiguration.g:9996:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:10001:1: ( ( ruleIntervallNumber ) ) + // InternalApplicationConfiguration.g:10002:2: ( ruleIntervallNumber ) { - // InternalApplicationConfiguration.g:9996:2: ( ruleIntervallNumber ) - // InternalApplicationConfiguration.g:9997:3: ruleIntervallNumber + // InternalApplicationConfiguration.g:10002:2: ( ruleIntervallNumber ) + // InternalApplicationConfiguration.g:10003:3: ruleIntervallNumber { before(grammarAccess.getStringTypeScopeAccess().getNumberIntervallNumberParserRuleCall_3_1_0()); pushFollow(FOLLOW_2); @@ -30343,17 +30370,17 @@ public final void rule__StringTypeScope__NumberAssignment_3_1() throws Recogniti // $ANTLR start "rule__StringTypeScope__NumberAssignment_3_2" - // InternalApplicationConfiguration.g:10006:1: rule__StringTypeScope__NumberAssignment_3_2 : ( ruleStringEnumeration ) ; + // InternalApplicationConfiguration.g:10012:1: rule__StringTypeScope__NumberAssignment_3_2 : ( ruleStringEnumeration ) ; public final void rule__StringTypeScope__NumberAssignment_3_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10010:1: ( ( ruleStringEnumeration ) ) - // InternalApplicationConfiguration.g:10011:2: ( ruleStringEnumeration ) + // InternalApplicationConfiguration.g:10016:1: ( ( ruleStringEnumeration ) ) + // InternalApplicationConfiguration.g:10017:2: ( ruleStringEnumeration ) { - // InternalApplicationConfiguration.g:10011:2: ( ruleStringEnumeration ) - // InternalApplicationConfiguration.g:10012:3: ruleStringEnumeration + // InternalApplicationConfiguration.g:10017:2: ( ruleStringEnumeration ) + // InternalApplicationConfiguration.g:10018:3: ruleStringEnumeration { before(grammarAccess.getStringTypeScopeAccess().getNumberStringEnumerationParserRuleCall_3_2_0()); pushFollow(FOLLOW_2); @@ -30384,17 +30411,17 @@ public final void rule__StringTypeScope__NumberAssignment_3_2() throws Recogniti // $ANTLR start "rule__ClassReference__ElementAssignment_1" - // InternalApplicationConfiguration.g:10021:1: rule__ClassReference__ElementAssignment_1 : ( ruleMetamodelElement ) ; + // InternalApplicationConfiguration.g:10027:1: rule__ClassReference__ElementAssignment_1 : ( ruleMetamodelElement ) ; public final void rule__ClassReference__ElementAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10025:1: ( ( ruleMetamodelElement ) ) - // InternalApplicationConfiguration.g:10026:2: ( ruleMetamodelElement ) + // InternalApplicationConfiguration.g:10031:1: ( ( ruleMetamodelElement ) ) + // InternalApplicationConfiguration.g:10032:2: ( ruleMetamodelElement ) { - // InternalApplicationConfiguration.g:10026:2: ( ruleMetamodelElement ) - // InternalApplicationConfiguration.g:10027:3: ruleMetamodelElement + // InternalApplicationConfiguration.g:10032:2: ( ruleMetamodelElement ) + // InternalApplicationConfiguration.g:10033:3: ruleMetamodelElement { before(grammarAccess.getClassReferenceAccess().getElementMetamodelElementParserRuleCall_1_0()); pushFollow(FOLLOW_2); @@ -30425,17 +30452,17 @@ public final void rule__ClassReference__ElementAssignment_1() throws Recognition // $ANTLR start "rule__ExactNumber__ExactNumberAssignment_0" - // InternalApplicationConfiguration.g:10036:1: rule__ExactNumber__ExactNumberAssignment_0 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:10042:1: rule__ExactNumber__ExactNumberAssignment_0 : ( RULE_INT ) ; public final void rule__ExactNumber__ExactNumberAssignment_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10040:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:10041:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10046:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:10047:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:10041:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:10042:3: RULE_INT + // InternalApplicationConfiguration.g:10047:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10048:3: RULE_INT { before(grammarAccess.getExactNumberAccess().getExactNumberINTTerminalRuleCall_0_0()); match(input,RULE_INT,FOLLOW_2); @@ -30462,24 +30489,24 @@ public final void rule__ExactNumber__ExactNumberAssignment_0() throws Recognitio // $ANTLR start "rule__ExactNumber__ExactUnlimitedAssignment_1" - // InternalApplicationConfiguration.g:10051:1: rule__ExactNumber__ExactUnlimitedAssignment_1 : ( ( '*' ) ) ; + // InternalApplicationConfiguration.g:10057:1: rule__ExactNumber__ExactUnlimitedAssignment_1 : ( ( '*' ) ) ; public final void rule__ExactNumber__ExactUnlimitedAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10055:1: ( ( ( '*' ) ) ) - // InternalApplicationConfiguration.g:10056:2: ( ( '*' ) ) + // InternalApplicationConfiguration.g:10061:1: ( ( ( '*' ) ) ) + // InternalApplicationConfiguration.g:10062:2: ( ( '*' ) ) { - // InternalApplicationConfiguration.g:10056:2: ( ( '*' ) ) - // InternalApplicationConfiguration.g:10057:3: ( '*' ) + // InternalApplicationConfiguration.g:10062:2: ( ( '*' ) ) + // InternalApplicationConfiguration.g:10063:3: ( '*' ) { before(grammarAccess.getExactNumberAccess().getExactUnlimitedAsteriskKeyword_1_0()); - // InternalApplicationConfiguration.g:10058:3: ( '*' ) - // InternalApplicationConfiguration.g:10059:4: '*' + // InternalApplicationConfiguration.g:10064:3: ( '*' ) + // InternalApplicationConfiguration.g:10065:4: '*' { before(grammarAccess.getExactNumberAccess().getExactUnlimitedAsteriskKeyword_1_0()); - match(input,55,FOLLOW_2); + match(input,56,FOLLOW_2); after(grammarAccess.getExactNumberAccess().getExactUnlimitedAsteriskKeyword_1_0()); } @@ -30507,17 +30534,17 @@ public final void rule__ExactNumber__ExactUnlimitedAssignment_1() throws Recogni // $ANTLR start "rule__IntervallNumber__MinAssignment_0" - // InternalApplicationConfiguration.g:10070:1: rule__IntervallNumber__MinAssignment_0 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:10076:1: rule__IntervallNumber__MinAssignment_0 : ( RULE_INT ) ; public final void rule__IntervallNumber__MinAssignment_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10074:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:10075:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10080:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:10081:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:10075:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:10076:3: RULE_INT + // InternalApplicationConfiguration.g:10081:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10082:3: RULE_INT { before(grammarAccess.getIntervallNumberAccess().getMinINTTerminalRuleCall_0_0()); match(input,RULE_INT,FOLLOW_2); @@ -30544,17 +30571,17 @@ public final void rule__IntervallNumber__MinAssignment_0() throws RecognitionExc // $ANTLR start "rule__IntervallNumber__MaxNumberAssignment_2_0" - // InternalApplicationConfiguration.g:10085:1: rule__IntervallNumber__MaxNumberAssignment_2_0 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:10091:1: rule__IntervallNumber__MaxNumberAssignment_2_0 : ( RULE_INT ) ; public final void rule__IntervallNumber__MaxNumberAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10089:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:10090:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10095:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:10096:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:10090:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:10091:3: RULE_INT + // InternalApplicationConfiguration.g:10096:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10097:3: RULE_INT { before(grammarAccess.getIntervallNumberAccess().getMaxNumberINTTerminalRuleCall_2_0_0()); match(input,RULE_INT,FOLLOW_2); @@ -30581,24 +30608,24 @@ public final void rule__IntervallNumber__MaxNumberAssignment_2_0() throws Recogn // $ANTLR start "rule__IntervallNumber__MaxUnlimitedAssignment_2_1" - // InternalApplicationConfiguration.g:10100:1: rule__IntervallNumber__MaxUnlimitedAssignment_2_1 : ( ( '*' ) ) ; + // InternalApplicationConfiguration.g:10106:1: rule__IntervallNumber__MaxUnlimitedAssignment_2_1 : ( ( '*' ) ) ; public final void rule__IntervallNumber__MaxUnlimitedAssignment_2_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10104:1: ( ( ( '*' ) ) ) - // InternalApplicationConfiguration.g:10105:2: ( ( '*' ) ) + // InternalApplicationConfiguration.g:10110:1: ( ( ( '*' ) ) ) + // InternalApplicationConfiguration.g:10111:2: ( ( '*' ) ) { - // InternalApplicationConfiguration.g:10105:2: ( ( '*' ) ) - // InternalApplicationConfiguration.g:10106:3: ( '*' ) + // InternalApplicationConfiguration.g:10111:2: ( ( '*' ) ) + // InternalApplicationConfiguration.g:10112:3: ( '*' ) { before(grammarAccess.getIntervallNumberAccess().getMaxUnlimitedAsteriskKeyword_2_1_0()); - // InternalApplicationConfiguration.g:10107:3: ( '*' ) - // InternalApplicationConfiguration.g:10108:4: '*' + // InternalApplicationConfiguration.g:10113:3: ( '*' ) + // InternalApplicationConfiguration.g:10114:4: '*' { before(grammarAccess.getIntervallNumberAccess().getMaxUnlimitedAsteriskKeyword_2_1_0()); - match(input,55,FOLLOW_2); + match(input,56,FOLLOW_2); after(grammarAccess.getIntervallNumberAccess().getMaxUnlimitedAsteriskKeyword_2_1_0()); } @@ -30626,17 +30653,17 @@ public final void rule__IntervallNumber__MaxUnlimitedAssignment_2_1() throws Rec // $ANTLR start "rule__IntEnumberation__EntryAssignment_2_0" - // InternalApplicationConfiguration.g:10119:1: rule__IntEnumberation__EntryAssignment_2_0 : ( ruleINTLiteral ) ; + // InternalApplicationConfiguration.g:10125:1: rule__IntEnumberation__EntryAssignment_2_0 : ( ruleINTLiteral ) ; public final void rule__IntEnumberation__EntryAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10123:1: ( ( ruleINTLiteral ) ) - // InternalApplicationConfiguration.g:10124:2: ( ruleINTLiteral ) + // InternalApplicationConfiguration.g:10129:1: ( ( ruleINTLiteral ) ) + // InternalApplicationConfiguration.g:10130:2: ( ruleINTLiteral ) { - // InternalApplicationConfiguration.g:10124:2: ( ruleINTLiteral ) - // InternalApplicationConfiguration.g:10125:3: ruleINTLiteral + // InternalApplicationConfiguration.g:10130:2: ( ruleINTLiteral ) + // InternalApplicationConfiguration.g:10131:3: ruleINTLiteral { before(grammarAccess.getIntEnumberationAccess().getEntryINTLiteralParserRuleCall_2_0_0()); pushFollow(FOLLOW_2); @@ -30667,17 +30694,17 @@ public final void rule__IntEnumberation__EntryAssignment_2_0() throws Recognitio // $ANTLR start "rule__IntEnumberation__EntryAssignment_2_1_1" - // InternalApplicationConfiguration.g:10134:1: rule__IntEnumberation__EntryAssignment_2_1_1 : ( ruleINTLiteral ) ; + // InternalApplicationConfiguration.g:10140:1: rule__IntEnumberation__EntryAssignment_2_1_1 : ( ruleINTLiteral ) ; public final void rule__IntEnumberation__EntryAssignment_2_1_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10138:1: ( ( ruleINTLiteral ) ) - // InternalApplicationConfiguration.g:10139:2: ( ruleINTLiteral ) + // InternalApplicationConfiguration.g:10144:1: ( ( ruleINTLiteral ) ) + // InternalApplicationConfiguration.g:10145:2: ( ruleINTLiteral ) { - // InternalApplicationConfiguration.g:10139:2: ( ruleINTLiteral ) - // InternalApplicationConfiguration.g:10140:3: ruleINTLiteral + // InternalApplicationConfiguration.g:10145:2: ( ruleINTLiteral ) + // InternalApplicationConfiguration.g:10146:3: ruleINTLiteral { before(grammarAccess.getIntEnumberationAccess().getEntryINTLiteralParserRuleCall_2_1_1_0()); pushFollow(FOLLOW_2); @@ -30708,17 +30735,17 @@ public final void rule__IntEnumberation__EntryAssignment_2_1_1() throws Recognit // $ANTLR start "rule__RealEnumeration__EntryAssignment_2_0" - // InternalApplicationConfiguration.g:10149:1: rule__RealEnumeration__EntryAssignment_2_0 : ( ruleREALLiteral ) ; + // InternalApplicationConfiguration.g:10155:1: rule__RealEnumeration__EntryAssignment_2_0 : ( ruleREALLiteral ) ; public final void rule__RealEnumeration__EntryAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10153:1: ( ( ruleREALLiteral ) ) - // InternalApplicationConfiguration.g:10154:2: ( ruleREALLiteral ) + // InternalApplicationConfiguration.g:10159:1: ( ( ruleREALLiteral ) ) + // InternalApplicationConfiguration.g:10160:2: ( ruleREALLiteral ) { - // InternalApplicationConfiguration.g:10154:2: ( ruleREALLiteral ) - // InternalApplicationConfiguration.g:10155:3: ruleREALLiteral + // InternalApplicationConfiguration.g:10160:2: ( ruleREALLiteral ) + // InternalApplicationConfiguration.g:10161:3: ruleREALLiteral { before(grammarAccess.getRealEnumerationAccess().getEntryREALLiteralParserRuleCall_2_0_0()); pushFollow(FOLLOW_2); @@ -30749,17 +30776,17 @@ public final void rule__RealEnumeration__EntryAssignment_2_0() throws Recognitio // $ANTLR start "rule__RealEnumeration__EntryAssignment_2_1_1" - // InternalApplicationConfiguration.g:10164:1: rule__RealEnumeration__EntryAssignment_2_1_1 : ( ruleREALLiteral ) ; + // InternalApplicationConfiguration.g:10170:1: rule__RealEnumeration__EntryAssignment_2_1_1 : ( ruleREALLiteral ) ; public final void rule__RealEnumeration__EntryAssignment_2_1_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10168:1: ( ( ruleREALLiteral ) ) - // InternalApplicationConfiguration.g:10169:2: ( ruleREALLiteral ) + // InternalApplicationConfiguration.g:10174:1: ( ( ruleREALLiteral ) ) + // InternalApplicationConfiguration.g:10175:2: ( ruleREALLiteral ) { - // InternalApplicationConfiguration.g:10169:2: ( ruleREALLiteral ) - // InternalApplicationConfiguration.g:10170:3: ruleREALLiteral + // InternalApplicationConfiguration.g:10175:2: ( ruleREALLiteral ) + // InternalApplicationConfiguration.g:10176:3: ruleREALLiteral { before(grammarAccess.getRealEnumerationAccess().getEntryREALLiteralParserRuleCall_2_1_1_0()); pushFollow(FOLLOW_2); @@ -30790,17 +30817,17 @@ public final void rule__RealEnumeration__EntryAssignment_2_1_1() throws Recognit // $ANTLR start "rule__StringEnumeration__EntryAssignment_2_0" - // InternalApplicationConfiguration.g:10179:1: rule__StringEnumeration__EntryAssignment_2_0 : ( RULE_STRING ) ; + // InternalApplicationConfiguration.g:10185:1: rule__StringEnumeration__EntryAssignment_2_0 : ( RULE_STRING ) ; public final void rule__StringEnumeration__EntryAssignment_2_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10183:1: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:10184:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:10189:1: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:10190:2: ( RULE_STRING ) { - // InternalApplicationConfiguration.g:10184:2: ( RULE_STRING ) - // InternalApplicationConfiguration.g:10185:3: RULE_STRING + // InternalApplicationConfiguration.g:10190:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:10191:3: RULE_STRING { before(grammarAccess.getStringEnumerationAccess().getEntrySTRINGTerminalRuleCall_2_0_0()); match(input,RULE_STRING,FOLLOW_2); @@ -30827,17 +30854,17 @@ public final void rule__StringEnumeration__EntryAssignment_2_0() throws Recognit // $ANTLR start "rule__StringEnumeration__EntryAssignment_2_1_1" - // InternalApplicationConfiguration.g:10194:1: rule__StringEnumeration__EntryAssignment_2_1_1 : ( RULE_STRING ) ; + // InternalApplicationConfiguration.g:10200:1: rule__StringEnumeration__EntryAssignment_2_1_1 : ( RULE_STRING ) ; public final void rule__StringEnumeration__EntryAssignment_2_1_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10198:1: ( ( RULE_STRING ) ) - // InternalApplicationConfiguration.g:10199:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:10204:1: ( ( RULE_STRING ) ) + // InternalApplicationConfiguration.g:10205:2: ( RULE_STRING ) { - // InternalApplicationConfiguration.g:10199:2: ( RULE_STRING ) - // InternalApplicationConfiguration.g:10200:3: RULE_STRING + // InternalApplicationConfiguration.g:10205:2: ( RULE_STRING ) + // InternalApplicationConfiguration.g:10206:3: RULE_STRING { before(grammarAccess.getStringEnumerationAccess().getEntrySTRINGTerminalRuleCall_2_1_1_0()); match(input,RULE_STRING,FOLLOW_2); @@ -30864,17 +30891,17 @@ public final void rule__StringEnumeration__EntryAssignment_2_1_1() throws Recogn // $ANTLR start "rule__ScopeDeclaration__NameAssignment_1" - // InternalApplicationConfiguration.g:10209:1: rule__ScopeDeclaration__NameAssignment_1 : ( RULE_ID ) ; + // InternalApplicationConfiguration.g:10215:1: rule__ScopeDeclaration__NameAssignment_1 : ( RULE_ID ) ; public final void rule__ScopeDeclaration__NameAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10213:1: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:10214:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:10219:1: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:10220:2: ( RULE_ID ) { - // InternalApplicationConfiguration.g:10214:2: ( RULE_ID ) - // InternalApplicationConfiguration.g:10215:3: RULE_ID + // InternalApplicationConfiguration.g:10220:2: ( RULE_ID ) + // InternalApplicationConfiguration.g:10221:3: RULE_ID { before(grammarAccess.getScopeDeclarationAccess().getNameIDTerminalRuleCall_1_0()); match(input,RULE_ID,FOLLOW_2); @@ -30901,17 +30928,17 @@ public final void rule__ScopeDeclaration__NameAssignment_1() throws RecognitionE // $ANTLR start "rule__ScopeDeclaration__SpecificationAssignment_2" - // InternalApplicationConfiguration.g:10224:1: rule__ScopeDeclaration__SpecificationAssignment_2 : ( ruleScopeSpecification ) ; + // InternalApplicationConfiguration.g:10230:1: rule__ScopeDeclaration__SpecificationAssignment_2 : ( ruleScopeSpecification ) ; public final void rule__ScopeDeclaration__SpecificationAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10228:1: ( ( ruleScopeSpecification ) ) - // InternalApplicationConfiguration.g:10229:2: ( ruleScopeSpecification ) + // InternalApplicationConfiguration.g:10234:1: ( ( ruleScopeSpecification ) ) + // InternalApplicationConfiguration.g:10235:2: ( ruleScopeSpecification ) { - // InternalApplicationConfiguration.g:10229:2: ( ruleScopeSpecification ) - // InternalApplicationConfiguration.g:10230:3: ruleScopeSpecification + // InternalApplicationConfiguration.g:10235:2: ( ruleScopeSpecification ) + // InternalApplicationConfiguration.g:10236:3: ruleScopeSpecification { before(grammarAccess.getScopeDeclarationAccess().getSpecificationScopeSpecificationParserRuleCall_2_0()); pushFollow(FOLLOW_2); @@ -30942,21 +30969,21 @@ public final void rule__ScopeDeclaration__SpecificationAssignment_2() throws Rec // $ANTLR start "rule__ScopeReference__ReferredAssignment" - // InternalApplicationConfiguration.g:10239:1: rule__ScopeReference__ReferredAssignment : ( ( RULE_ID ) ) ; + // InternalApplicationConfiguration.g:10245:1: rule__ScopeReference__ReferredAssignment : ( ( RULE_ID ) ) ; public final void rule__ScopeReference__ReferredAssignment() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10243:1: ( ( ( RULE_ID ) ) ) - // InternalApplicationConfiguration.g:10244:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:10249:1: ( ( ( RULE_ID ) ) ) + // InternalApplicationConfiguration.g:10250:2: ( ( RULE_ID ) ) { - // InternalApplicationConfiguration.g:10244:2: ( ( RULE_ID ) ) - // InternalApplicationConfiguration.g:10245:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:10250:2: ( ( RULE_ID ) ) + // InternalApplicationConfiguration.g:10251:3: ( RULE_ID ) { before(grammarAccess.getScopeReferenceAccess().getReferredScopeDeclarationCrossReference_0()); - // InternalApplicationConfiguration.g:10246:3: ( RULE_ID ) - // InternalApplicationConfiguration.g:10247:4: RULE_ID + // InternalApplicationConfiguration.g:10252:3: ( RULE_ID ) + // InternalApplicationConfiguration.g:10253:4: RULE_ID { before(grammarAccess.getScopeReferenceAccess().getReferredScopeDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); @@ -30987,17 +31014,17 @@ public final void rule__ScopeReference__ReferredAssignment() throws RecognitionE // $ANTLR start "rule__GenerationTask__MetamodelAssignment_3_0_2" - // InternalApplicationConfiguration.g:10258:1: rule__GenerationTask__MetamodelAssignment_3_0_2 : ( ruleMetamodel ) ; + // InternalApplicationConfiguration.g:10264:1: rule__GenerationTask__MetamodelAssignment_3_0_2 : ( ruleMetamodel ) ; public final void rule__GenerationTask__MetamodelAssignment_3_0_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10262:1: ( ( ruleMetamodel ) ) - // InternalApplicationConfiguration.g:10263:2: ( ruleMetamodel ) + // InternalApplicationConfiguration.g:10268:1: ( ( ruleMetamodel ) ) + // InternalApplicationConfiguration.g:10269:2: ( ruleMetamodel ) { - // InternalApplicationConfiguration.g:10263:2: ( ruleMetamodel ) - // InternalApplicationConfiguration.g:10264:3: ruleMetamodel + // InternalApplicationConfiguration.g:10269:2: ( ruleMetamodel ) + // InternalApplicationConfiguration.g:10270:3: ruleMetamodel { before(grammarAccess.getGenerationTaskAccess().getMetamodelMetamodelParserRuleCall_3_0_2_0()); pushFollow(FOLLOW_2); @@ -31028,17 +31055,17 @@ public final void rule__GenerationTask__MetamodelAssignment_3_0_2() throws Recog // $ANTLR start "rule__GenerationTask__PartialModelAssignment_3_1_2" - // InternalApplicationConfiguration.g:10273:1: rule__GenerationTask__PartialModelAssignment_3_1_2 : ( rulePartialModel ) ; + // InternalApplicationConfiguration.g:10279:1: rule__GenerationTask__PartialModelAssignment_3_1_2 : ( rulePartialModel ) ; public final void rule__GenerationTask__PartialModelAssignment_3_1_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10277:1: ( ( rulePartialModel ) ) - // InternalApplicationConfiguration.g:10278:2: ( rulePartialModel ) + // InternalApplicationConfiguration.g:10283:1: ( ( rulePartialModel ) ) + // InternalApplicationConfiguration.g:10284:2: ( rulePartialModel ) { - // InternalApplicationConfiguration.g:10278:2: ( rulePartialModel ) - // InternalApplicationConfiguration.g:10279:3: rulePartialModel + // InternalApplicationConfiguration.g:10284:2: ( rulePartialModel ) + // InternalApplicationConfiguration.g:10285:3: rulePartialModel { before(grammarAccess.getGenerationTaskAccess().getPartialModelPartialModelParserRuleCall_3_1_2_0()); pushFollow(FOLLOW_2); @@ -31069,17 +31096,17 @@ public final void rule__GenerationTask__PartialModelAssignment_3_1_2() throws Re // $ANTLR start "rule__GenerationTask__PatternsAssignment_3_2_2" - // InternalApplicationConfiguration.g:10288:1: rule__GenerationTask__PatternsAssignment_3_2_2 : ( ruleGraphPattern ) ; + // InternalApplicationConfiguration.g:10294:1: rule__GenerationTask__PatternsAssignment_3_2_2 : ( ruleGraphPattern ) ; public final void rule__GenerationTask__PatternsAssignment_3_2_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10292:1: ( ( ruleGraphPattern ) ) - // InternalApplicationConfiguration.g:10293:2: ( ruleGraphPattern ) + // InternalApplicationConfiguration.g:10298:1: ( ( ruleGraphPattern ) ) + // InternalApplicationConfiguration.g:10299:2: ( ruleGraphPattern ) { - // InternalApplicationConfiguration.g:10293:2: ( ruleGraphPattern ) - // InternalApplicationConfiguration.g:10294:3: ruleGraphPattern + // InternalApplicationConfiguration.g:10299:2: ( ruleGraphPattern ) + // InternalApplicationConfiguration.g:10300:3: ruleGraphPattern { before(grammarAccess.getGenerationTaskAccess().getPatternsGraphPatternParserRuleCall_3_2_2_0()); pushFollow(FOLLOW_2); @@ -31110,17 +31137,17 @@ public final void rule__GenerationTask__PatternsAssignment_3_2_2() throws Recogn // $ANTLR start "rule__GenerationTask__ScopeAssignment_3_3_2" - // InternalApplicationConfiguration.g:10303:1: rule__GenerationTask__ScopeAssignment_3_3_2 : ( ruleScope ) ; + // InternalApplicationConfiguration.g:10309:1: rule__GenerationTask__ScopeAssignment_3_3_2 : ( ruleScope ) ; public final void rule__GenerationTask__ScopeAssignment_3_3_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10307:1: ( ( ruleScope ) ) - // InternalApplicationConfiguration.g:10308:2: ( ruleScope ) + // InternalApplicationConfiguration.g:10313:1: ( ( ruleScope ) ) + // InternalApplicationConfiguration.g:10314:2: ( ruleScope ) { - // InternalApplicationConfiguration.g:10308:2: ( ruleScope ) - // InternalApplicationConfiguration.g:10309:3: ruleScope + // InternalApplicationConfiguration.g:10314:2: ( ruleScope ) + // InternalApplicationConfiguration.g:10315:3: ruleScope { before(grammarAccess.getGenerationTaskAccess().getScopeScopeParserRuleCall_3_3_2_0()); pushFollow(FOLLOW_2); @@ -31151,24 +31178,24 @@ public final void rule__GenerationTask__ScopeAssignment_3_3_2() throws Recogniti // $ANTLR start "rule__GenerationTask__NumberSpecifiedAssignment_3_4_0" - // InternalApplicationConfiguration.g:10318:1: rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 : ( ( 'number' ) ) ; + // InternalApplicationConfiguration.g:10324:1: rule__GenerationTask__NumberSpecifiedAssignment_3_4_0 : ( ( 'number' ) ) ; public final void rule__GenerationTask__NumberSpecifiedAssignment_3_4_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10322:1: ( ( ( 'number' ) ) ) - // InternalApplicationConfiguration.g:10323:2: ( ( 'number' ) ) + // InternalApplicationConfiguration.g:10328:1: ( ( ( 'number' ) ) ) + // InternalApplicationConfiguration.g:10329:2: ( ( 'number' ) ) { - // InternalApplicationConfiguration.g:10323:2: ( ( 'number' ) ) - // InternalApplicationConfiguration.g:10324:3: ( 'number' ) + // InternalApplicationConfiguration.g:10329:2: ( ( 'number' ) ) + // InternalApplicationConfiguration.g:10330:3: ( 'number' ) { before(grammarAccess.getGenerationTaskAccess().getNumberSpecifiedNumberKeyword_3_4_0_0()); - // InternalApplicationConfiguration.g:10325:3: ( 'number' ) - // InternalApplicationConfiguration.g:10326:4: 'number' + // InternalApplicationConfiguration.g:10331:3: ( 'number' ) + // InternalApplicationConfiguration.g:10332:4: 'number' { before(grammarAccess.getGenerationTaskAccess().getNumberSpecifiedNumberKeyword_3_4_0_0()); - match(input,56,FOLLOW_2); + match(input,57,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getNumberSpecifiedNumberKeyword_3_4_0_0()); } @@ -31196,17 +31223,17 @@ public final void rule__GenerationTask__NumberSpecifiedAssignment_3_4_0() throws // $ANTLR start "rule__GenerationTask__NumberAssignment_3_4_2" - // InternalApplicationConfiguration.g:10337:1: rule__GenerationTask__NumberAssignment_3_4_2 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:10343:1: rule__GenerationTask__NumberAssignment_3_4_2 : ( RULE_INT ) ; public final void rule__GenerationTask__NumberAssignment_3_4_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10341:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:10342:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10347:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:10348:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:10342:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:10343:3: RULE_INT + // InternalApplicationConfiguration.g:10348:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10349:3: RULE_INT { before(grammarAccess.getGenerationTaskAccess().getNumberINTTerminalRuleCall_3_4_2_0()); match(input,RULE_INT,FOLLOW_2); @@ -31233,24 +31260,24 @@ public final void rule__GenerationTask__NumberAssignment_3_4_2() throws Recognit // $ANTLR start "rule__GenerationTask__RunSpecifiedAssignment_3_5_0" - // InternalApplicationConfiguration.g:10352:1: rule__GenerationTask__RunSpecifiedAssignment_3_5_0 : ( ( 'runs' ) ) ; + // InternalApplicationConfiguration.g:10358:1: rule__GenerationTask__RunSpecifiedAssignment_3_5_0 : ( ( 'runs' ) ) ; public final void rule__GenerationTask__RunSpecifiedAssignment_3_5_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10356:1: ( ( ( 'runs' ) ) ) - // InternalApplicationConfiguration.g:10357:2: ( ( 'runs' ) ) + // InternalApplicationConfiguration.g:10362:1: ( ( ( 'runs' ) ) ) + // InternalApplicationConfiguration.g:10363:2: ( ( 'runs' ) ) { - // InternalApplicationConfiguration.g:10357:2: ( ( 'runs' ) ) - // InternalApplicationConfiguration.g:10358:3: ( 'runs' ) + // InternalApplicationConfiguration.g:10363:2: ( ( 'runs' ) ) + // InternalApplicationConfiguration.g:10364:3: ( 'runs' ) { before(grammarAccess.getGenerationTaskAccess().getRunSpecifiedRunsKeyword_3_5_0_0()); - // InternalApplicationConfiguration.g:10359:3: ( 'runs' ) - // InternalApplicationConfiguration.g:10360:4: 'runs' + // InternalApplicationConfiguration.g:10365:3: ( 'runs' ) + // InternalApplicationConfiguration.g:10366:4: 'runs' { before(grammarAccess.getGenerationTaskAccess().getRunSpecifiedRunsKeyword_3_5_0_0()); - match(input,57,FOLLOW_2); + match(input,58,FOLLOW_2); after(grammarAccess.getGenerationTaskAccess().getRunSpecifiedRunsKeyword_3_5_0_0()); } @@ -31278,17 +31305,17 @@ public final void rule__GenerationTask__RunSpecifiedAssignment_3_5_0() throws Re // $ANTLR start "rule__GenerationTask__RunsAssignment_3_5_2" - // InternalApplicationConfiguration.g:10371:1: rule__GenerationTask__RunsAssignment_3_5_2 : ( RULE_INT ) ; + // InternalApplicationConfiguration.g:10377:1: rule__GenerationTask__RunsAssignment_3_5_2 : ( RULE_INT ) ; public final void rule__GenerationTask__RunsAssignment_3_5_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10375:1: ( ( RULE_INT ) ) - // InternalApplicationConfiguration.g:10376:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10381:1: ( ( RULE_INT ) ) + // InternalApplicationConfiguration.g:10382:2: ( RULE_INT ) { - // InternalApplicationConfiguration.g:10376:2: ( RULE_INT ) - // InternalApplicationConfiguration.g:10377:3: RULE_INT + // InternalApplicationConfiguration.g:10382:2: ( RULE_INT ) + // InternalApplicationConfiguration.g:10383:3: RULE_INT { before(grammarAccess.getGenerationTaskAccess().getRunsINTTerminalRuleCall_3_5_2_0()); match(input,RULE_INT,FOLLOW_2); @@ -31315,17 +31342,17 @@ public final void rule__GenerationTask__RunsAssignment_3_5_2() throws Recognitio // $ANTLR start "rule__GenerationTask__SolverAssignment_3_6_2" - // InternalApplicationConfiguration.g:10386:1: rule__GenerationTask__SolverAssignment_3_6_2 : ( ruleSolver ) ; + // InternalApplicationConfiguration.g:10392:1: rule__GenerationTask__SolverAssignment_3_6_2 : ( ruleSolver ) ; public final void rule__GenerationTask__SolverAssignment_3_6_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10390:1: ( ( ruleSolver ) ) - // InternalApplicationConfiguration.g:10391:2: ( ruleSolver ) + // InternalApplicationConfiguration.g:10396:1: ( ( ruleSolver ) ) + // InternalApplicationConfiguration.g:10397:2: ( ruleSolver ) { - // InternalApplicationConfiguration.g:10391:2: ( ruleSolver ) - // InternalApplicationConfiguration.g:10392:3: ruleSolver + // InternalApplicationConfiguration.g:10397:2: ( ruleSolver ) + // InternalApplicationConfiguration.g:10398:3: ruleSolver { before(grammarAccess.getGenerationTaskAccess().getSolverSolverEnumRuleCall_3_6_2_0()); pushFollow(FOLLOW_2); @@ -31356,17 +31383,17 @@ public final void rule__GenerationTask__SolverAssignment_3_6_2() throws Recognit // $ANTLR start "rule__GenerationTask__ConfigAssignment_3_7_2" - // InternalApplicationConfiguration.g:10401:1: rule__GenerationTask__ConfigAssignment_3_7_2 : ( ruleConfig ) ; + // InternalApplicationConfiguration.g:10407:1: rule__GenerationTask__ConfigAssignment_3_7_2 : ( ruleConfig ) ; public final void rule__GenerationTask__ConfigAssignment_3_7_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10405:1: ( ( ruleConfig ) ) - // InternalApplicationConfiguration.g:10406:2: ( ruleConfig ) + // InternalApplicationConfiguration.g:10411:1: ( ( ruleConfig ) ) + // InternalApplicationConfiguration.g:10412:2: ( ruleConfig ) { - // InternalApplicationConfiguration.g:10406:2: ( ruleConfig ) - // InternalApplicationConfiguration.g:10407:3: ruleConfig + // InternalApplicationConfiguration.g:10412:2: ( ruleConfig ) + // InternalApplicationConfiguration.g:10413:3: ruleConfig { before(grammarAccess.getGenerationTaskAccess().getConfigConfigParserRuleCall_3_7_2_0()); pushFollow(FOLLOW_2); @@ -31397,17 +31424,17 @@ public final void rule__GenerationTask__ConfigAssignment_3_7_2() throws Recognit // $ANTLR start "rule__GenerationTask__DebugFolderAssignment_3_8_2" - // InternalApplicationConfiguration.g:10416:1: rule__GenerationTask__DebugFolderAssignment_3_8_2 : ( ruleFile ) ; + // InternalApplicationConfiguration.g:10422:1: rule__GenerationTask__DebugFolderAssignment_3_8_2 : ( ruleFile ) ; public final void rule__GenerationTask__DebugFolderAssignment_3_8_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10420:1: ( ( ruleFile ) ) - // InternalApplicationConfiguration.g:10421:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10426:1: ( ( ruleFile ) ) + // InternalApplicationConfiguration.g:10427:2: ( ruleFile ) { - // InternalApplicationConfiguration.g:10421:2: ( ruleFile ) - // InternalApplicationConfiguration.g:10422:3: ruleFile + // InternalApplicationConfiguration.g:10427:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10428:3: ruleFile { before(grammarAccess.getGenerationTaskAccess().getDebugFolderFileParserRuleCall_3_8_2_0()); pushFollow(FOLLOW_2); @@ -31438,17 +31465,17 @@ public final void rule__GenerationTask__DebugFolderAssignment_3_8_2() throws Rec // $ANTLR start "rule__GenerationTask__TargetLogFileAssignment_3_9_2" - // InternalApplicationConfiguration.g:10431:1: rule__GenerationTask__TargetLogFileAssignment_3_9_2 : ( ruleFile ) ; + // InternalApplicationConfiguration.g:10437:1: rule__GenerationTask__TargetLogFileAssignment_3_9_2 : ( ruleFile ) ; public final void rule__GenerationTask__TargetLogFileAssignment_3_9_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10435:1: ( ( ruleFile ) ) - // InternalApplicationConfiguration.g:10436:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10441:1: ( ( ruleFile ) ) + // InternalApplicationConfiguration.g:10442:2: ( ruleFile ) { - // InternalApplicationConfiguration.g:10436:2: ( ruleFile ) - // InternalApplicationConfiguration.g:10437:3: ruleFile + // InternalApplicationConfiguration.g:10442:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10443:3: ruleFile { before(grammarAccess.getGenerationTaskAccess().getTargetLogFileFileParserRuleCall_3_9_2_0()); pushFollow(FOLLOW_2); @@ -31479,17 +31506,17 @@ public final void rule__GenerationTask__TargetLogFileAssignment_3_9_2() throws R // $ANTLR start "rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2" - // InternalApplicationConfiguration.g:10446:1: rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 : ( ruleFile ) ; + // InternalApplicationConfiguration.g:10452:1: rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2 : ( ruleFile ) ; public final void rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10450:1: ( ( ruleFile ) ) - // InternalApplicationConfiguration.g:10451:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10456:1: ( ( ruleFile ) ) + // InternalApplicationConfiguration.g:10457:2: ( ruleFile ) { - // InternalApplicationConfiguration.g:10451:2: ( ruleFile ) - // InternalApplicationConfiguration.g:10452:3: ruleFile + // InternalApplicationConfiguration.g:10457:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10458:3: ruleFile { before(grammarAccess.getGenerationTaskAccess().getTargetStatisticsFileFileParserRuleCall_3_10_2_0()); pushFollow(FOLLOW_2); @@ -31520,17 +31547,17 @@ public final void rule__GenerationTask__TargetStatisticsFileAssignment_3_10_2() // $ANTLR start "rule__GenerationTask__TagetFolderAssignment_3_11_2" - // InternalApplicationConfiguration.g:10461:1: rule__GenerationTask__TagetFolderAssignment_3_11_2 : ( ruleFile ) ; + // InternalApplicationConfiguration.g:10467:1: rule__GenerationTask__TagetFolderAssignment_3_11_2 : ( ruleFile ) ; public final void rule__GenerationTask__TagetFolderAssignment_3_11_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalApplicationConfiguration.g:10465:1: ( ( ruleFile ) ) - // InternalApplicationConfiguration.g:10466:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10471:1: ( ( ruleFile ) ) + // InternalApplicationConfiguration.g:10472:2: ( ruleFile ) { - // InternalApplicationConfiguration.g:10466:2: ( ruleFile ) - // InternalApplicationConfiguration.g:10467:3: ruleFile + // InternalApplicationConfiguration.g:10472:2: ( ruleFile ) + // InternalApplicationConfiguration.g:10473:3: ruleFile { before(grammarAccess.getGenerationTaskAccess().getTagetFolderFileParserRuleCall_3_11_2_0()); pushFollow(FOLLOW_2); @@ -31576,8 +31603,8 @@ public final void rule__GenerationTask__TagetFolderAssignment_3_11_2() throws Re protected DFA67 dfa67 = new DFA67(this); protected DFA68 dfa68 = new DFA68(this); static final String dfa_1s = "\16\uffff"; - static final String dfa_2s = "\1\31\15\uffff"; - static final String dfa_3s = "\1\71\15\uffff"; + static final String dfa_2s = "\1\32\15\uffff"; + static final String dfa_3s = "\1\72\15\uffff"; static final String dfa_4s = "\1\uffff\14\1\1\2"; static final String dfa_5s = "\1\0\15\uffff}>"; static final String[] dfa_6s = { @@ -31618,7 +31645,7 @@ public DFA56(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8408:2: ( rule__GenerationTask__UnorderedGroup_3__0 )?"; + return "8414:2: ( rule__GenerationTask__UnorderedGroup_3__0 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -31631,31 +31658,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index56_0 = input.index(); input.rewind(); s = -1; - if ( LA56_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA56_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA56_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA56_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA56_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA56_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA56_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA56_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA56_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA56_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA56_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA56_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA56_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA56_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA56_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA56_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA56_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA56_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA56_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA56_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA56_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA56_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA56_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA56_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA56_0==25) ) {s = 13;} + else if ( (LA56_0==26) ) {s = 13;} input.seek(index56_0); @@ -31669,8 +31696,8 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc } } static final String dfa_7s = "\15\uffff"; - static final String dfa_8s = "\1\36\14\uffff"; - static final String dfa_9s = "\1\71\14\uffff"; + static final String dfa_8s = "\1\37\14\uffff"; + static final String dfa_9s = "\1\72\14\uffff"; static final String dfa_10s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14"; static final String dfa_11s = "\1\0\14\uffff}>"; static final String[] dfa_12s = { @@ -31710,7 +31737,7 @@ public DFA57(BaseRecognizer recognizer) { this.transition = dfa_12; } public String getDescription() { - return "8422:3: ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) )"; + return "8428:3: ( ({...}? => ( ( ( rule__GenerationTask__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_4__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_5__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_6__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_7__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_8__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_9__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_10__0 ) ) ) ) | ({...}? => ( ( ( rule__GenerationTask__Group_3_11__0 ) ) ) ) )"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -31723,29 +31750,29 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index57_0 = input.index(); input.rewind(); s = -1; - if ( LA57_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA57_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA57_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA57_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA57_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA57_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA57_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA57_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA57_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA57_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA57_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA57_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA57_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA57_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA57_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA57_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA57_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA57_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA57_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA57_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA57_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA57_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA57_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA57_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} input.seek(index57_0); @@ -31773,7 +31800,7 @@ public DFA58(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8617:2: ( rule__GenerationTask__UnorderedGroup_3__1 )?"; + return "8623:2: ( rule__GenerationTask__UnorderedGroup_3__1 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -31786,31 +31813,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index58_0 = input.index(); input.rewind(); s = -1; - if ( LA58_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA58_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA58_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA58_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA58_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA58_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA58_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA58_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA58_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA58_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA58_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA58_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA58_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA58_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA58_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA58_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA58_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA58_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA58_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA58_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA58_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA58_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA58_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA58_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA58_0==25) ) {s = 13;} + else if ( (LA58_0==26) ) {s = 13;} input.seek(index58_0); @@ -31838,7 +31865,7 @@ public DFA59(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8629:2: ( rule__GenerationTask__UnorderedGroup_3__2 )?"; + return "8635:2: ( rule__GenerationTask__UnorderedGroup_3__2 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -31851,31 +31878,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index59_0 = input.index(); input.rewind(); s = -1; - if ( LA59_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA59_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA59_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA59_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA59_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA59_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA59_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA59_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA59_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA59_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA59_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA59_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA59_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA59_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA59_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA59_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA59_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA59_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA59_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA59_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA59_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA59_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA59_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA59_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA59_0==25) ) {s = 13;} + else if ( (LA59_0==26) ) {s = 13;} input.seek(index59_0); @@ -31903,7 +31930,7 @@ public DFA60(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8641:2: ( rule__GenerationTask__UnorderedGroup_3__3 )?"; + return "8647:2: ( rule__GenerationTask__UnorderedGroup_3__3 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -31916,31 +31943,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index60_0 = input.index(); input.rewind(); s = -1; - if ( LA60_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA60_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA60_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA60_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA60_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA60_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA60_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA60_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA60_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA60_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA60_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA60_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA60_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA60_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA60_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA60_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA60_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA60_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA60_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA60_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA60_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA60_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA60_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA60_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA60_0==25) ) {s = 13;} + else if ( (LA60_0==26) ) {s = 13;} input.seek(index60_0); @@ -31968,7 +31995,7 @@ public DFA61(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8653:2: ( rule__GenerationTask__UnorderedGroup_3__4 )?"; + return "8659:2: ( rule__GenerationTask__UnorderedGroup_3__4 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -31981,31 +32008,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index61_0 = input.index(); input.rewind(); s = -1; - if ( LA61_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA61_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA61_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA61_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA61_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA61_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA61_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA61_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA61_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA61_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA61_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA61_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA61_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA61_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA61_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA61_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA61_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA61_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA61_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA61_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA61_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA61_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA61_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA61_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA61_0==25) ) {s = 13;} + else if ( (LA61_0==26) ) {s = 13;} input.seek(index61_0); @@ -32033,7 +32060,7 @@ public DFA62(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8665:2: ( rule__GenerationTask__UnorderedGroup_3__5 )?"; + return "8671:2: ( rule__GenerationTask__UnorderedGroup_3__5 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32046,31 +32073,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index62_0 = input.index(); input.rewind(); s = -1; - if ( LA62_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA62_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA62_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA62_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA62_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA62_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA62_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA62_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA62_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA62_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA62_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA62_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA62_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA62_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA62_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA62_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA62_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA62_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA62_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA62_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA62_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA62_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA62_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA62_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA62_0==25) ) {s = 13;} + else if ( (LA62_0==26) ) {s = 13;} input.seek(index62_0); @@ -32098,7 +32125,7 @@ public DFA63(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8677:2: ( rule__GenerationTask__UnorderedGroup_3__6 )?"; + return "8683:2: ( rule__GenerationTask__UnorderedGroup_3__6 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32111,31 +32138,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index63_0 = input.index(); input.rewind(); s = -1; - if ( LA63_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA63_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA63_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA63_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA63_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA63_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA63_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA63_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA63_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA63_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA63_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA63_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA63_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA63_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA63_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA63_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA63_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA63_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA63_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA63_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA63_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA63_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA63_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA63_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA63_0==25) ) {s = 13;} + else if ( (LA63_0==26) ) {s = 13;} input.seek(index63_0); @@ -32163,7 +32190,7 @@ public DFA64(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8689:2: ( rule__GenerationTask__UnorderedGroup_3__7 )?"; + return "8695:2: ( rule__GenerationTask__UnorderedGroup_3__7 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32176,31 +32203,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index64_0 = input.index(); input.rewind(); s = -1; - if ( LA64_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA64_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA64_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA64_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA64_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA64_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA64_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA64_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA64_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA64_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA64_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA64_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA64_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA64_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA64_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA64_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA64_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA64_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA64_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA64_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA64_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA64_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA64_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA64_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA64_0==25) ) {s = 13;} + else if ( (LA64_0==26) ) {s = 13;} input.seek(index64_0); @@ -32228,7 +32255,7 @@ public DFA65(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8701:2: ( rule__GenerationTask__UnorderedGroup_3__8 )?"; + return "8707:2: ( rule__GenerationTask__UnorderedGroup_3__8 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32241,31 +32268,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index65_0 = input.index(); input.rewind(); s = -1; - if ( LA65_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA65_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA65_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA65_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA65_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA65_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA65_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA65_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA65_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA65_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA65_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA65_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA65_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA65_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA65_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA65_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA65_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA65_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA65_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA65_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA65_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA65_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA65_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA65_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA65_0==25) ) {s = 13;} + else if ( (LA65_0==26) ) {s = 13;} input.seek(index65_0); @@ -32293,7 +32320,7 @@ public DFA66(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8713:2: ( rule__GenerationTask__UnorderedGroup_3__9 )?"; + return "8719:2: ( rule__GenerationTask__UnorderedGroup_3__9 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32306,31 +32333,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index66_0 = input.index(); input.rewind(); s = -1; - if ( LA66_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA66_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA66_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA66_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA66_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA66_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA66_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA66_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA66_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA66_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA66_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA66_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA66_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA66_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA66_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA66_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA66_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA66_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA66_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA66_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA66_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA66_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA66_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA66_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA66_0==25) ) {s = 13;} + else if ( (LA66_0==26) ) {s = 13;} input.seek(index66_0); @@ -32358,7 +32385,7 @@ public DFA67(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8725:2: ( rule__GenerationTask__UnorderedGroup_3__10 )?"; + return "8731:2: ( rule__GenerationTask__UnorderedGroup_3__10 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32371,31 +32398,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index67_0 = input.index(); input.rewind(); s = -1; - if ( LA67_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA67_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA67_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA67_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA67_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA67_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA67_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA67_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA67_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA67_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA67_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA67_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA67_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA67_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA67_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA67_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA67_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA67_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA67_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA67_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA67_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA67_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA67_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA67_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA67_0==25) ) {s = 13;} + else if ( (LA67_0==26) ) {s = 13;} input.seek(index67_0); @@ -32423,7 +32450,7 @@ public DFA68(BaseRecognizer recognizer) { this.transition = dfa_6; } public String getDescription() { - return "8737:2: ( rule__GenerationTask__UnorderedGroup_3__11 )?"; + return "8743:2: ( rule__GenerationTask__UnorderedGroup_3__11 )?"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -32436,31 +32463,31 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc int index68_0 = input.index(); input.rewind(); s = -1; - if ( LA68_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} + if ( LA68_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 0) ) {s = 1;} - else if ( LA68_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} + else if ( LA68_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 1) ) {s = 2;} - else if ( LA68_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} + else if ( LA68_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 2) ) {s = 3;} - else if ( LA68_0 == 46 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} + else if ( LA68_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 3) ) {s = 4;} - else if ( LA68_0 == 56 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} + else if ( LA68_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 4) ) {s = 5;} - else if ( LA68_0 == 57 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} + else if ( LA68_0 == 58 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 5) ) {s = 6;} - else if ( LA68_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} + else if ( LA68_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 6) ) {s = 7;} - else if ( LA68_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} + else if ( LA68_0 == 35 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 7) ) {s = 8;} - else if ( LA68_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} + else if ( LA68_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 8) ) {s = 9;} - else if ( LA68_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} + else if ( LA68_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 9) ) {s = 10;} - else if ( LA68_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} + else if ( LA68_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 10) ) {s = 11;} - else if ( LA68_0 == 53 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} + else if ( LA68_0 == 54 && getUnorderedGroupHelper().canSelect(grammarAccess.getGenerationTaskAccess().getUnorderedGroup_3(), 11) ) {s = 12;} - else if ( (LA68_0==25) ) {s = 13;} + else if ( (LA68_0==26) ) {s = 13;} input.seek(index68_0); @@ -32477,48 +32504,48 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L}); public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000C00740400000L}); - public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000080002L}); - public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000C00740400002L}); - public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000020000L}); - public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000020002L}); + public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0001800E80800000L}); + public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000100002L}); + public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0001800E80800002L}); + public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000040000L}); + public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000040002L}); public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000010L}); public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000020L}); - public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000100000L}); + public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000040L}); - public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000200000L}); - public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000800000L}); - public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000008000010L}); - public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000006000000L}); - public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000004000002L}); - public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000001000000L}); - public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000020000000L}); - public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000080000050L}); + public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000400000L}); + public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000001000000L}); + public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000010000010L}); + public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x000000000C000000L}); + public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000008000002L}); + public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000020000000L}); + public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000002000000L}); + public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000100000050L}); public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000050L}); - public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000003802000040L}); - public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000004000000L}); - public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000003800000040L}); + public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000007004000040L}); + public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000008000000L}); + public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000007000000040L}); public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000003800L}); - public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000004002000000L}); - public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000004000000000L}); - public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000008000000000L}); - public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0040000000800000L}); - public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0080000000000020L}); - public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000020000000000L}); - public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0080000001000020L}); - public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000080000000000L}); - public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000100000000000L}); - public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000010000000000L}); - public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000200000000000L}); - public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000002040020L}); - public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000040020L}); - public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000002000040L}); - public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x033F400640000000L}); - public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000002000000L}); - public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000001000010L}); - public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x000000000001C000L}); - public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x033F400640000002L}); + public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000008004000000L}); + public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000008000000000L}); + public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000010000000000L}); + public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0080000001000000L}); + public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0100000000000020L}); + public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000080000000000L}); + public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0100000002000020L}); + public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000100000000000L}); + public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000200000000000L}); + public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000400000000000L}); + public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000004080020L}); + public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000080020L}); + public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000004000040L}); + public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x067E800C80000000L}); + public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000004000000L}); + public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000002000010L}); + public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x000000000003C000L}); + public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x067E800C80000002L}); } 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 fae8ba45c..7b4e6966c 100644 Binary files a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin and b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin 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 e820bee53..0282a4b3e 100644 Binary files a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin and b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin differ diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/META-INF/MANIFEST.MF b/Application/hu.bme.mit.inf.dslreasoner.application.ui/META-INF/MANIFEST.MF index df5caadce..c3d4c18b4 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ui/META-INF/MANIFEST.MF +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/META-INF/MANIFEST.MF @@ -15,8 +15,8 @@ Require-Bundle: hu.bme.mit.inf.dslreasoner.application, org.eclipse.ui, org.eclipse.compare, org.eclipse.xtext.builder, - org.eclipse.xtend.lib;resolution:=optional, - org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib;bundle-version="2.14.0";resolution:=optional, + org.eclipse.xtext.xbase.lib;bundle-version="2.14.0", org.eclipse.viatra.addon.validation.runtime.ui;bundle-version="1.7.0" Import-Package: org.apache.log4j Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml b/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml index 099d69930..9f35e6da2 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml @@ -426,5 +426,5 @@ style="push"> - + diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml_gen b/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml_gen index fd03c81ef..9cb8f3d21 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml_gen +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/plugin.xml_gen @@ -26,11 +26,11 @@ - - + - - + + - - - - + + - - + - + - - - - - - + + + + + + @@ -204,6 +204,15 @@ + + + + @@ -388,12 +397,18 @@ class="hu.bme.mit.inf.dslreasoner.application.ui.ApplicationConfigurationExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator" extensions="vsconfig"> + + bindIContentProposalProvider() return ApplicationConfigurationProposalProvider.class; } + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public void configureIPreferenceStoreInitializer(Binder binder) { + binder.bind(IPreferenceStoreInitializer.class) + .annotatedWith(Names.named("RefactoringPreferences")) + .to(RefactoringPreferences.Initializer.class); + } + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 public Class bindIRenameStrategy() { return DefaultRenameStrategy.class; @@ -225,13 +232,6 @@ public Class bindIReferenceUpdater() { return DefaultReferenceUpdater.class; } - // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 - public void configureIPreferenceStoreInitializer(Binder binder) { - binder.bind(IPreferenceStoreInitializer.class) - .annotatedWith(Names.named("RefactoringPreferences")) - .to(RefactoringPreferences.Initializer.class); - } - // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 public Class bindIRenameRefactoringProvider() { return DefaultRenameRefactoringProvider.class; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/ApplicationConfigurationExecutableExtensionFactory.java b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/ApplicationConfigurationExecutableExtensionFactory.java index ae8454b8c..3c6d0c6cb 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/ApplicationConfigurationExecutableExtensionFactory.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/ApplicationConfigurationExecutableExtensionFactory.java @@ -1,10 +1,11 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.ui; import com.google.inject.Injector; import hu.bme.mit.inf.dslreasoner.application.ui.internal.ApplicationActivator; +import org.eclipse.core.runtime.Platform; import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory; import org.osgi.framework.Bundle; @@ -16,12 +17,13 @@ public class ApplicationConfigurationExecutableExtensionFactory extends Abstract @Override protected Bundle getBundle() { - return ApplicationActivator.getInstance().getBundle(); + return Platform.getBundle(ApplicationActivator.PLUGIN_ID); } @Override protected Injector getInjector() { - return ApplicationActivator.getInstance().getInjector(ApplicationActivator.HU_BME_MIT_INF_DSLREASONER_APPLICATION_APPLICATIONCONFIGURATION); + ApplicationActivator activator = ApplicationActivator.getInstance(); + return activator != null ? activator.getInjector(ApplicationActivator.HU_BME_MIT_INF_DSLREASONER_APPLICATION_APPLICATIONCONFIGURATION) : null; } - + } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/contentassist/AbstractApplicationConfigurationProposalProvider.java b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/contentassist/AbstractApplicationConfigurationProposalProvider.java index 514abf35f..1f1aea9f6 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/contentassist/AbstractApplicationConfigurationProposalProvider.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/contentassist/AbstractApplicationConfigurationProposalProvider.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.ui.contentassist; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/internal/ApplicationActivator.java b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/internal/ApplicationActivator.java index fb4f4cc09..cc015c7b3 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/internal/ApplicationActivator.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src-gen/hu/bme/mit/inf/dslreasoner/application/ui/internal/ApplicationActivator.java @@ -1,12 +1,11 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.ui.internal; import com.google.common.collect.Maps; import com.google.inject.Guice; import com.google.inject.Injector; -import com.google.inject.Module; import hu.bme.mit.inf.dslreasoner.application.ApplicationConfigurationRuntimeModule; import hu.bme.mit.inf.dslreasoner.application.ui.ApplicationConfigurationUiModule; import java.util.Collections; @@ -23,6 +22,7 @@ */ public class ApplicationActivator extends AbstractUIPlugin { + public static final String PLUGIN_ID = "hu.bme.mit.inf.dslreasoner.application.ui"; public static final String HU_BME_MIT_INF_DSLREASONER_APPLICATION_APPLICATIONCONFIGURATION = "hu.bme.mit.inf.dslreasoner.application.ApplicationConfiguration"; private static final Logger logger = Logger.getLogger(ApplicationActivator.class); @@ -60,10 +60,10 @@ public Injector getInjector(String language) { protected Injector createInjector(String language) { try { - Module runtimeModule = getRuntimeModule(language); - Module sharedStateModule = getSharedStateModule(); - Module uiModule = getUiModule(language); - Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule); + com.google.inject.Module runtimeModule = getRuntimeModule(language); + com.google.inject.Module sharedStateModule = getSharedStateModule(); + com.google.inject.Module uiModule = getUiModule(language); + com.google.inject.Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule); return Guice.createInjector(mergedModule); } catch (Exception e) { logger.error("Failed to create injector for " + language); @@ -72,22 +72,23 @@ protected Injector createInjector(String language) { } } - protected Module getRuntimeModule(String grammar) { + protected com.google.inject.Module getRuntimeModule(String grammar) { if (HU_BME_MIT_INF_DSLREASONER_APPLICATION_APPLICATIONCONFIGURATION.equals(grammar)) { return new ApplicationConfigurationRuntimeModule(); } throw new IllegalArgumentException(grammar); } - protected Module getUiModule(String grammar) { + protected com.google.inject.Module getUiModule(String grammar) { if (HU_BME_MIT_INF_DSLREASONER_APPLICATION_APPLICATIONCONFIGURATION.equals(grammar)) { return new ApplicationConfigurationUiModule(this); } throw new IllegalArgumentException(grammar); } - protected Module getSharedStateModule() { + protected com.google.inject.Module getSharedStateModule() { return new SharedStateModule(); } + } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/META-INF/MANIFEST.MF b/Application/hu.bme.mit.inf.dslreasoner.application/META-INF/MANIFEST.MF index 44b8c4534..eb929f2e0 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/META-INF/MANIFEST.MF +++ b/Application/hu.bme.mit.inf.dslreasoner.application/META-INF/MANIFEST.MF @@ -9,11 +9,11 @@ Require-Bundle: org.eclipse.xtext, org.eclipse.xtext.xbase, org.eclipse.equinox.common;bundle-version="3.5.0", org.eclipse.emf.ecore, - org.eclipse.xtext.xbase.lib, + org.eclipse.xtext.xbase.lib;bundle-version="2.14.0", org.eclipse.xtext.util, - org.eclipse.xtend.lib, + org.eclipse.xtend.lib;bundle-version="2.14.0", org.eclipse.emf.common, - org.antlr.runtime, + org.antlr.runtime;bundle-version="[3.2.0,3.2.1)", hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", hu.bme.mit.inf.dslreasoner.smt.reasoner;bundle-version="1.0.0", @@ -38,7 +38,8 @@ Require-Bundle: org.eclipse.xtext, org.eclipse.ui.workbench.texteditor, org.eclipse.ui.ide, org.eclipse.text, - org.eclipse.collections;bundle-version="9.2.0" + org.eclipse.collections;bundle-version="9.2.0", + ca.mcgill.ecse.dslreasoner.vampire.reasoner;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: hu.bme.mit.inf.dslreasoner.application, hu.bme.mit.inf.dslreasoner.application.applicationConfiguration, diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/model/generated/ApplicationConfiguration.ecore b/Application/hu.bme.mit.inf.dslreasoner.application/model/generated/ApplicationConfiguration.ecore index 6b3212796..f64254074 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/model/generated/ApplicationConfiguration.ecore +++ b/Application/hu.bme.mit.inf.dslreasoner.application/model/generated/ApplicationConfiguration.ecore @@ -130,6 +130,7 @@ + + complianceLevel="8.0" copyrightFields="false" runtimeVersion="2.20" usedGenPackages="platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/resource/org.eclipse.viatra.query.patternlanguage.emf/model/PatternLanguage.genmodel#//vql"> @@ -15,6 +15,7 @@ + diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/plugin.xml_gen b/Application/hu.bme.mit.inf.dslreasoner.application/plugin.xml_gen index 956abc6e3..4d80aa1fc 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/plugin.xml_gen +++ b/Application/hu.bme.mit.inf.dslreasoner.application/plugin.xml_gen @@ -2,7 +2,7 @@ - diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/AbstractApplicationConfigurationRuntimeModule.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/AbstractApplicationConfigurationRuntimeModule.java index 0a62d0b2b..dfa6c5ca2 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/AbstractApplicationConfigurationRuntimeModule.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/AbstractApplicationConfigurationRuntimeModule.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtextbin b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtextbin index e1f093808..512d938a5 100644 Binary files a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtextbin and b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtextbin differ diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfigurationStandaloneSetupGenerated.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfigurationStandaloneSetupGenerated.java index 30f88a598..bfb494052 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfigurationStandaloneSetupGenerated.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/ApplicationConfigurationStandaloneSetupGenerated.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPackageEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPackageEntry.java index 722084c8c..2a0150d0a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPackageEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPackageEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface AllPackageEntry extends MetamodelEntry * Returns the value of the 'Exclusion' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelElement}. * - *

- * If the meaning of the 'Exclusion' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Exclusion' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getAllPackageEntry_Exclusion() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPatternEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPatternEntry.java index ad3e9885f..2a0705c56 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPatternEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/AllPatternEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface AllPatternEntry extends PatternEntry * Returns the value of the 'Exclusuion' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PatternElement}. * - *

- * If the meaning of the 'Exclusuion' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Exclusuion' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getAllPatternEntry_Exclusuion() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationFactory.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationFactory.java index 0e44eb6ff..db869ca38 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationFactory.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationFactory.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationPackage.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationPackage.java index 794f56e52..e2499b2df 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationPackage.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ApplicationConfigurationPackage.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassReference.java index 7cfd12b83..63c175d11 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ClassReference extends TypeReference /** * Returns the value of the 'Element' containment reference. * - *

- * If the meaning of the 'Element' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Element' containment reference. * @see #setElement(MetamodelElement) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassTypeScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassTypeScope.java index 41f197659..43c3f992c 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassTypeScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ClassTypeScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ClassTypeScope extends TypeScope /** * Returns the value of the 'Type' containment reference. * - *

- * If the meaning of the 'Type' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Type' containment reference. * @see #setType(ClassReference) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Command.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Command.java index ada3e7e16..4d6dbba77 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Command.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Command.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Config.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Config.java index 0572c941e..7e7b51c59 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Config.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Config.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigDeclaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigDeclaration.java index 740b98b9a..8c0b116ca 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigDeclaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigDeclaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ConfigDeclaration extends Declaration /** * Returns the value of the 'Specification' containment reference. * - *

- * If the meaning of the 'Specification' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Specification' containment reference. * @see #setSpecification(ConfigSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigEntry.java index cd9cba69b..60836e701 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigReference.java index f8cb9d6ec..5c451da02 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ConfigReference extends Config /** * Returns the value of the 'Config' reference. * - *

- * If the meaning of the 'Config' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Config' reference. * @see #setConfig(ConfigDeclaration) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigSpecification.java index 93a884bba..2ed3d4d5f 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface ConfigSpecification extends Config * Returns the value of the 'Entries' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigEntry}. * - *

- * If the meaning of the 'Entries' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entries' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getConfigSpecification_Entries() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigurationScript.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigurationScript.java index 2f012f3ee..1de836637 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigurationScript.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ConfigurationScript.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -30,10 +30,6 @@ public interface ConfigurationScript extends EObject * Returns the value of the 'Imports' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Import}. * - *

- * If the meaning of the 'Imports' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Imports' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getConfigurationScript_Imports() @@ -46,10 +42,6 @@ public interface ConfigurationScript extends EObject * Returns the value of the 'Commands' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Command}. * - *

- * If the meaning of the 'Commands' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Commands' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getConfigurationScript_Commands() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/CustomEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/CustomEntry.java index 0971e99d3..252ad8939 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/CustomEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/CustomEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface CustomEntry extends ConfigEntry /** * Returns the value of the 'Key' attribute. * - *

- * If the meaning of the 'Key' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Key' attribute. * @see #setKey(String) @@ -52,10 +48,6 @@ public interface CustomEntry extends ConfigEntry /** * Returns the value of the 'Value' attribute. * - *

- * If the meaning of the 'Value' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Value' attribute. * @see #setValue(String) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Declaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Declaration.java index 5249b5e90..69ba9dcae 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Declaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Declaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface Declaration extends Command /** * Returns the value of the 'Name' attribute. * - *

- * If the meaning of the 'Name' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Name' attribute. * @see #setName(String) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentLevelSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentLevelSpecification.java index 7629d7597..92ac2024b 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentLevelSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentLevelSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -53,10 +53,6 @@ public enum DocumentLevelSpecification implements Enumerator /** * The 'None' literal value. * - *

- * If the meaning of 'None' literal object isn't clear, - * there really should be more of a description here... - *

* * @see #NONE * @model name="none" @@ -68,10 +64,6 @@ public enum DocumentLevelSpecification implements Enumerator /** * The 'Normal' literal value. * - *

- * If the meaning of 'Normal' literal object isn't clear, - * there really should be more of a description here... - *

* * @see #NORMAL * @model name="normal" @@ -83,10 +75,6 @@ public enum DocumentLevelSpecification implements Enumerator /** * The 'Full' literal value. * - *

- * If the meaning of 'Full' literal object isn't clear, - * there really should be more of a description here... - *

* * @see #FULL * @model name="full" @@ -217,6 +205,7 @@ private DocumentLevelSpecification(int value, String name, String literal) * * @generated */ + @Override public int getValue() { return value; @@ -227,6 +216,7 @@ public int getValue() * * @generated */ + @Override public String getName() { return name; @@ -237,6 +227,7 @@ public String getName() * * @generated */ + @Override public String getLiteral() { return literal; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentationEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentationEntry.java index 640323068..23d5c54d2 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentationEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/DocumentationEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface DocumentationEntry extends ConfigEntry * Returns the value of the 'Level' attribute. * The literals are from the enumeration {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.DocumentLevelSpecification}. * - *

- * If the meaning of the 'Level' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Level' attribute. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.DocumentLevelSpecification diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/EPackageImport.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/EPackageImport.java index f73e0bcdd..ec1f6549e 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/EPackageImport.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/EPackageImport.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface EPackageImport extends Import /** * Returns the value of the 'Imported Package' reference. * - *

- * If the meaning of the 'Imported Package' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Imported Package' reference. * @see #setImportedPackage(EPackage) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ExactNumber.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ExactNumber.java index c72580e57..03189fb7d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ExactNumber.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ExactNumber.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface ExactNumber extends NumberSpecification /** * Returns the value of the 'Exact Number' attribute. * - *

- * If the meaning of the 'Exact Number' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Exact Number' attribute. * @see #setExactNumber(int) @@ -52,10 +48,6 @@ public interface ExactNumber extends NumberSpecification /** * Returns the value of the 'Exact Unlimited' attribute. * - *

- * If the meaning of the 'Exact Unlimited' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Exact Unlimited' attribute. * @see #setExactUnlimited(boolean) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/File.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/File.java index 4dd48918a..61f79cb3a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/File.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/File.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileDeclaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileDeclaration.java index de7ee62e1..144bb95b1 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileDeclaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileDeclaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface FileDeclaration extends Declaration /** * Returns the value of the 'Specification' containment reference. * - *

- * If the meaning of the 'Specification' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Specification' containment reference. * @see #setSpecification(FileSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileReference.java index fc3f3762b..81a1d7694 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface FileReference extends File /** * Returns the value of the 'Referred' reference. * - *

- * If the meaning of the 'Referred' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Referred' reference. * @see #setReferred(FileDeclaration) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileSpecification.java index 1b2a09a27..1001cb7dc 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FileSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface FileSpecification extends File /** * Returns the value of the 'Path' attribute. * - *

- * If the meaning of the 'Path' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Path' attribute. * @see #setPath(String) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FolderEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FolderEntry.java index 05c8ceb90..d4e25f0f7 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FolderEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/FolderEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface FolderEntry extends PartialModelEntry * Returns the value of the 'Exclusion' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ModelEntry}. * - *

- * If the meaning of the 'Exclusion' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Exclusion' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getFolderEntry_Exclusion() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GenerationTask.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GenerationTask.java index 83ee824d4..fcfacbf2a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GenerationTask.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GenerationTask.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -38,10 +38,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Metamodel' containment reference. * - *

- * If the meaning of the 'Metamodel' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Metamodel' containment reference. * @see #setMetamodel(Metamodel) @@ -64,10 +60,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Partial Model' containment reference. * - *

- * If the meaning of the 'Partial Model' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Partial Model' containment reference. * @see #setPartialModel(PartialModel) @@ -90,10 +82,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Patterns' containment reference. * - *

- * If the meaning of the 'Patterns' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Patterns' containment reference. * @see #setPatterns(GraphPattern) @@ -116,10 +104,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Scope' containment reference. * - *

- * If the meaning of the 'Scope' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Scope' containment reference. * @see #setScope(Scope) @@ -142,10 +126,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Number Specified' attribute. * - *

- * If the meaning of the 'Number Specified' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Number Specified' attribute. * @see #setNumberSpecified(boolean) @@ -168,10 +148,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Number' attribute. * - *

- * If the meaning of the 'Number' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Number' attribute. * @see #setNumber(int) @@ -194,10 +170,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Run Specified' attribute. * - *

- * If the meaning of the 'Run Specified' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Run Specified' attribute. * @see #setRunSpecified(boolean) @@ -220,10 +192,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Runs' attribute. * - *

- * If the meaning of the 'Runs' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Runs' attribute. * @see #setRuns(int) @@ -247,10 +215,6 @@ public interface GenerationTask extends Task * Returns the value of the 'Solver' attribute. * The literals are from the enumeration {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Solver}. * - *

- * If the meaning of the 'Solver' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Solver' attribute. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.Solver @@ -275,10 +239,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Config' containment reference. * - *

- * If the meaning of the 'Config' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Config' containment reference. * @see #setConfig(Config) @@ -301,10 +261,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Debug Folder' containment reference. * - *

- * If the meaning of the 'Debug Folder' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Debug Folder' containment reference. * @see #setDebugFolder(File) @@ -327,10 +283,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Target Log File' containment reference. * - *

- * If the meaning of the 'Target Log File' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Target Log File' containment reference. * @see #setTargetLogFile(File) @@ -353,10 +305,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Target Statistics File' containment reference. * - *

- * If the meaning of the 'Target Statistics File' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Target Statistics File' containment reference. * @see #setTargetStatisticsFile(File) @@ -379,10 +327,6 @@ public interface GenerationTask extends Task /** * Returns the value of the 'Taget Folder' containment reference. * - *

- * If the meaning of the 'Taget Folder' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Taget Folder' containment reference. * @see #setTagetFolder(File) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPattern.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPattern.java index 99d187ea9..36b321cab 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPattern.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPattern.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternDeclaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternDeclaration.java index be0b962d7..a218994a2 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternDeclaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternDeclaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface GraphPatternDeclaration extends Declaration /** * Returns the value of the 'Specification' containment reference. * - *

- * If the meaning of the 'Specification' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Specification' containment reference. * @see #setSpecification(PatternSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternReference.java index 20a32a3ac..2fc43c5e1 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/GraphPatternReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface GraphPatternReference extends GraphPattern /** * Returns the value of the 'Referred' reference. * - *

- * If the meaning of the 'Referred' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Referred' reference. * @see #setReferred(GraphPatternDeclaration) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Import.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Import.java index 90f276598..ac14c3572 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Import.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Import.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntEnumberation.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntEnumberation.java index 3fffae8ef..5ab1c846d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntEnumberation.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntEnumberation.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface IntEnumberation extends NumberSpecification * Returns the value of the 'Entry' attribute list. * The list contents are of type {@link java.lang.Integer}. * - *

- * If the meaning of the 'Entry' attribute list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entry' attribute list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getIntEnumberation_Entry() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerReference.java index 9257cdb90..20cccf506 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerScope.java index 8d5752cb5..8277c6c5c 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerTypeScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerTypeScope.java index 8b8fc2dd5..5ad016661 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerTypeScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntegerTypeScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface IntegerTypeScope extends TypeScope /** * Returns the value of the 'Type' containment reference. * - *

- * If the meaning of the 'Type' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Type' containment reference. * @see #setType(IntegerReference) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntervallNumber.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntervallNumber.java index 33a1f773b..9153b0b83 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntervallNumber.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/IntervallNumber.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface IntervallNumber extends NumberSpecification /** * Returns the value of the 'Min' attribute. * - *

- * If the meaning of the 'Min' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Min' attribute. * @see #setMin(int) @@ -53,10 +49,6 @@ public interface IntervallNumber extends NumberSpecification /** * Returns the value of the 'Max Number' attribute. * - *

- * If the meaning of the 'Max Number' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Max Number' attribute. * @see #setMaxNumber(int) @@ -79,10 +71,6 @@ public interface IntervallNumber extends NumberSpecification /** * Returns the value of the 'Max Unlimited' attribute. * - *

- * If the meaning of the 'Max Unlimited' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Max Unlimited' attribute. * @see #setMaxUnlimited(boolean) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MemoryEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MemoryEntry.java index e370d6b62..ff783a3d5 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MemoryEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MemoryEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface MemoryEntry extends ConfigEntry /** * Returns the value of the 'Megabyte Limit' attribute. * - *

- * If the meaning of the 'Megabyte Limit' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Megabyte Limit' attribute. * @see #setMegabyteLimit(int) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Metamodel.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Metamodel.java index 76f354495..a48f56afe 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Metamodel.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Metamodel.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelDeclaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelDeclaration.java index c6c22075d..fb64b72d6 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelDeclaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelDeclaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface MetamodelDeclaration extends Declaration /** * Returns the value of the 'Specification' containment reference. * - *

- * If the meaning of the 'Specification' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Specification' containment reference. * @see #setSpecification(MetamodelSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelElement.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelElement.java index 41cf4f2d4..2d70ca30d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelElement.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelElement.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -28,10 +28,6 @@ public interface MetamodelElement extends MetamodelEntry /** * Returns the value of the 'Classifier' reference. * - *

- * If the meaning of the 'Classifier' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Classifier' reference. * @see #setClassifier(EClassifier) @@ -54,10 +50,6 @@ public interface MetamodelElement extends MetamodelEntry /** * Returns the value of the 'Feature' reference. * - *

- * If the meaning of the 'Feature' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Feature' reference. * @see #setFeature(ENamedElement) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelEntry.java index 59e3f4e0d..1c4020759 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface MetamodelEntry extends EObject /** * Returns the value of the 'Package' reference. * - *

- * If the meaning of the 'Package' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Package' reference. * @see #setPackage(EPackage) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelReference.java index c9e7e4436..ba32d7f6c 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface MetamodelReference extends Metamodel /** * Returns the value of the 'Referred' reference. * - *

- * If the meaning of the 'Referred' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Referred' reference. * @see #setReferred(MetamodelDeclaration) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelSpecification.java index 250db1eb4..b9e3ea466 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/MetamodelSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface MetamodelSpecification extends Metamodel * Returns the value of the 'Entries' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.MetamodelEntry}. * - *

- * If the meaning of the 'Entries' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entries' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getMetamodelSpecification_Entries() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ModelEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ModelEntry.java index 1a1fc229c..b49991329 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ModelEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ModelEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/NumberSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/NumberSpecification.java index bf6ebbb0e..7d56fe0f3 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/NumberSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/NumberSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectReference.java index 0e4f44919..7d79822e3 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectTypeScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectTypeScope.java index d65c42cde..a24d04704 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectTypeScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ObjectTypeScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ObjectTypeScope extends TypeScope /** * Returns the value of the 'Type' containment reference. * - *

- * If the meaning of the 'Type' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Type' containment reference. * @see #setType(ObjectReference) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModel.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModel.java index 786371d48..e96f4d4ba 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModel.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModel.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelDeclaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelDeclaration.java index c98183d5a..31895987f 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelDeclaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelDeclaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface PartialModelDeclaration extends Declaration /** * Returns the value of the 'Specification' containment reference. * - *

- * If the meaning of the 'Specification' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Specification' containment reference. * @see #setSpecification(PartialModelSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelEntry.java index 09bc08986..afe39a3d6 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface PartialModelEntry extends EObject /** * Returns the value of the 'Path' containment reference. * - *

- * If the meaning of the 'Path' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Path' containment reference. * @see #setPath(File) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelReference.java index b871e0a5d..b4a601b21 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface PartialModelReference extends PartialModel /** * Returns the value of the 'Referred' reference. * - *

- * If the meaning of the 'Referred' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Referred' reference. * @see #setReferred(PartialModelDeclaration) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelSpecification.java index c9668aab6..218941849 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PartialModelSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface PartialModelSpecification extends PartialModel * Returns the value of the 'Entry' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelEntry}. * - *

- * If the meaning of the 'Entry' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entry' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getPartialModelSpecification_Entry() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternElement.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternElement.java index 11e7de2eb..785289020 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternElement.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternElement.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface PatternElement extends PatternEntry /** * Returns the value of the 'Pattern' reference. * - *

- * If the meaning of the 'Pattern' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Pattern' reference. * @see #setPattern(Pattern) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternEntry.java index 2d7a21c99..8ebaf4e71 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -28,10 +28,6 @@ public interface PatternEntry extends EObject /** * Returns the value of the 'Package' reference. * - *

- * If the meaning of the 'Package' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Package' reference. * @see #setPackage(PatternModel) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternSpecification.java index 00b9b47af..f05b782da 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/PatternSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface PatternSpecification extends GraphPattern * Returns the value of the 'Entries' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PatternEntry}. * - *

- * If the meaning of the 'Entries' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entries' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getPatternSpecification_Entries() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealEnumeration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealEnumeration.java index 1ddc0f672..f2ffe1a0c 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealEnumeration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealEnumeration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -29,10 +29,6 @@ public interface RealEnumeration extends NumberSpecification * Returns the value of the 'Entry' attribute list. * The list contents are of type {@link java.math.BigDecimal}. * - *

- * If the meaning of the 'Entry' attribute list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entry' attribute list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getRealEnumeration_Entry() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealReference.java index 2faf26701..194fa82bc 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealScope.java index 002954b78..a7450638f 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealTypeScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealTypeScope.java index 240f129cc..db7d90965 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealTypeScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RealTypeScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface RealTypeScope extends TypeScope /** * Returns the value of the 'Type' containment reference. * - *

- * If the meaning of the 'Type' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Type' containment reference. * @see #setType(RealReference) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RuntimeEntry.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RuntimeEntry.java index 8c6a7076b..00833c19e 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RuntimeEntry.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/RuntimeEntry.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface RuntimeEntry extends ConfigEntry /** * Returns the value of the 'Millisec Limit' attribute. * - *

- * If the meaning of the 'Millisec Limit' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Millisec Limit' attribute. * @see #setMillisecLimit(int) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Scope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Scope.java index 8d21f69be..15c2fa81e 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Scope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Scope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeDeclaration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeDeclaration.java index 6928c79ff..e54f73d8f 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeDeclaration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeDeclaration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ScopeDeclaration extends Declaration /** * Returns the value of the 'Specification' containment reference. * - *

- * If the meaning of the 'Specification' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Specification' containment reference. * @see #setSpecification(ScopeSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeReference.java index a1e145407..329fb726c 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface ScopeReference extends Scope /** * Returns the value of the 'Referred' reference. * - *

- * If the meaning of the 'Referred' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Referred' reference. * @see #setReferred(ScopeDeclaration) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeSpecification.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeSpecification.java index 101a21513..82e3c33d1 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeSpecification.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ScopeSpecification.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface ScopeSpecification extends Scope * Returns the value of the 'Scopes' containment reference list. * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.TypeScope}. * - *

- * If the meaning of the 'Scopes' containment reference list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Scopes' containment reference list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getScopeSpecification_Scopes() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Solver.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Solver.java index e27504670..3830e0eb6 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Solver.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Solver.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -48,15 +48,21 @@ public enum Solver implements Enumerator * @generated * @ordered */ - VIATRA_SOLVER(2, "ViatraSolver", "ViatraSolver"); + VIATRA_SOLVER(2, "ViatraSolver", "ViatraSolver"), + + /** + * The 'TPTP Solver' literal object. + * + * + * @see #TPTP_SOLVER_VALUE + * @generated + * @ordered + */ + TPTP_SOLVER(3, "TPTPSolver", "TPTPSolver"); /** * The 'SMT Solver' literal value. * - *

- * If the meaning of 'SMT Solver' literal object isn't clear, - * there really should be more of a description here... - *

* * @see #SMT_SOLVER * @model name="SMTSolver" @@ -68,10 +74,6 @@ public enum Solver implements Enumerator /** * The 'Alloy Solver' literal value. * - *

- * If the meaning of 'Alloy Solver' literal object isn't clear, - * there really should be more of a description here... - *

* * @see #ALLOY_SOLVER * @model name="AlloySolver" @@ -83,10 +85,6 @@ public enum Solver implements Enumerator /** * The 'Viatra Solver' literal value. * - *

- * If the meaning of 'Viatra Solver' literal object isn't clear, - * there really should be more of a description here... - *

* * @see #VIATRA_SOLVER * @model name="ViatraSolver" @@ -95,6 +93,17 @@ public enum Solver implements Enumerator */ public static final int VIATRA_SOLVER_VALUE = 2; + /** + * The 'TPTP Solver' literal value. + * + * + * @see #TPTP_SOLVER + * @model name="TPTPSolver" + * @generated + * @ordered + */ + public static final int TPTP_SOLVER_VALUE = 3; + /** * An array of all the 'Solver' enumerators. * @@ -107,6 +116,7 @@ public enum Solver implements Enumerator SMT_SOLVER, ALLOY_SOLVER, VIATRA_SOLVER, + TPTP_SOLVER, }; /** @@ -174,6 +184,7 @@ public static Solver get(int value) case SMT_SOLVER_VALUE: return SMT_SOLVER; case ALLOY_SOLVER_VALUE: return ALLOY_SOLVER; case VIATRA_SOLVER_VALUE: return VIATRA_SOLVER; + case TPTP_SOLVER_VALUE: return TPTP_SOLVER; } return null; } @@ -217,6 +228,7 @@ private Solver(int value, String name, String literal) * * @generated */ + @Override public int getValue() { return value; @@ -227,6 +239,7 @@ public int getValue() * * @generated */ + @Override public String getName() { return name; @@ -237,6 +250,7 @@ public String getName() * * @generated */ + @Override public String getLiteral() { return literal; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringEnumeration.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringEnumeration.java index f075cc555..e97145054 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringEnumeration.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringEnumeration.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -27,10 +27,6 @@ public interface StringEnumeration extends NumberSpecification * Returns the value of the 'Entry' attribute list. * The list contents are of type {@link java.lang.String}. * - *

- * If the meaning of the 'Entry' attribute list isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Entry' attribute list. * @see hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage#getStringEnumeration_Entry() diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringReference.java index de11d5749..06dedb530 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringScope.java index 4ee46273f..3a274bdef 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringTypeScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringTypeScope.java index 4aa216675..9511ce038 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringTypeScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/StringTypeScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -25,10 +25,6 @@ public interface StringTypeScope extends TypeScope /** * Returns the value of the 'Type' containment reference. * - *

- * If the meaning of the 'Type' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Type' containment reference. * @see #setType(StringReference) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Task.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Task.java index 633c7deae..bd045a7df 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Task.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/Task.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeReference.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeReference.java index ca1080011..794c255cf 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeReference.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeReference.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeScope.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeScope.java index 914aecae9..0100b7cb3 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeScope.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/TypeScope.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -28,10 +28,6 @@ public interface TypeScope extends EObject /** * Returns the value of the 'Sets New' attribute. * - *

- * If the meaning of the 'Sets New' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Sets New' attribute. * @see #setSetsNew(boolean) @@ -54,10 +50,6 @@ public interface TypeScope extends EObject /** * Returns the value of the 'Sets Sum' attribute. * - *

- * If the meaning of the 'Sets Sum' attribute isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Sets Sum' attribute. * @see #setSetsSum(boolean) @@ -80,10 +72,6 @@ public interface TypeScope extends EObject /** * Returns the value of the 'Number' containment reference. * - *

- * If the meaning of the 'Number' containment reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Number' containment reference. * @see #setNumber(NumberSpecification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ViatraImport.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ViatraImport.java index c421cb083..3033557e0 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ViatraImport.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/ViatraImport.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration; @@ -26,10 +26,6 @@ public interface ViatraImport extends Import /** * Returns the value of the 'Imported Viatra' reference. * - *

- * If the meaning of the 'Imported Viatra' reference isn't clear, - * there really should be more of a description here... - *

* * @return the value of the 'Imported Viatra' reference. * @see #setImportedViatra(PatternModel) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPackageEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPackageEntryImpl.java index c69a5c6e5..f7f8dd05c 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPackageEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPackageEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getExclusion() { if (exclusion == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPatternEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPatternEntryImpl.java index 1418bad42..9c26d9c30 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPatternEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/AllPatternEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getExclusuion() { if (exclusuion == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationFactoryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationFactoryImpl.java index 7f485ec5b..9e1b5e404 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationFactoryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationFactoryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -181,6 +181,7 @@ public String convertToString(EDataType eDataType, Object instanceValue) * * @generated */ + @Override public ConfigurationScript createConfigurationScript() { ConfigurationScriptImpl configurationScript = new ConfigurationScriptImpl(); @@ -192,6 +193,7 @@ public ConfigurationScript createConfigurationScript() * * @generated */ + @Override public Command createCommand() { CommandImpl command = new CommandImpl(); @@ -203,6 +205,7 @@ public Command createCommand() * * @generated */ + @Override public Import createImport() { ImportImpl import_ = new ImportImpl(); @@ -214,6 +217,7 @@ public Import createImport() * * @generated */ + @Override public EPackageImport createEPackageImport() { EPackageImportImpl ePackageImport = new EPackageImportImpl(); @@ -225,6 +229,7 @@ public EPackageImport createEPackageImport() * * @generated */ + @Override public ViatraImport createViatraImport() { ViatraImportImpl viatraImport = new ViatraImportImpl(); @@ -236,6 +241,7 @@ public ViatraImport createViatraImport() * * @generated */ + @Override public Declaration createDeclaration() { DeclarationImpl declaration = new DeclarationImpl(); @@ -247,6 +253,7 @@ public Declaration createDeclaration() * * @generated */ + @Override public FileSpecification createFileSpecification() { FileSpecificationImpl fileSpecification = new FileSpecificationImpl(); @@ -258,6 +265,7 @@ public FileSpecification createFileSpecification() * * @generated */ + @Override public FileDeclaration createFileDeclaration() { FileDeclarationImpl fileDeclaration = new FileDeclarationImpl(); @@ -269,6 +277,7 @@ public FileDeclaration createFileDeclaration() * * @generated */ + @Override public FileReference createFileReference() { FileReferenceImpl fileReference = new FileReferenceImpl(); @@ -280,6 +289,7 @@ public FileReference createFileReference() * * @generated */ + @Override public File createFile() { FileImpl file = new FileImpl(); @@ -291,6 +301,7 @@ public File createFile() * * @generated */ + @Override public MetamodelSpecification createMetamodelSpecification() { MetamodelSpecificationImpl metamodelSpecification = new MetamodelSpecificationImpl(); @@ -302,6 +313,7 @@ public MetamodelSpecification createMetamodelSpecification() * * @generated */ + @Override public MetamodelEntry createMetamodelEntry() { MetamodelEntryImpl metamodelEntry = new MetamodelEntryImpl(); @@ -313,6 +325,7 @@ public MetamodelEntry createMetamodelEntry() * * @generated */ + @Override public AllPackageEntry createAllPackageEntry() { AllPackageEntryImpl allPackageEntry = new AllPackageEntryImpl(); @@ -324,6 +337,7 @@ public AllPackageEntry createAllPackageEntry() * * @generated */ + @Override public MetamodelElement createMetamodelElement() { MetamodelElementImpl metamodelElement = new MetamodelElementImpl(); @@ -335,6 +349,7 @@ public MetamodelElement createMetamodelElement() * * @generated */ + @Override public MetamodelDeclaration createMetamodelDeclaration() { MetamodelDeclarationImpl metamodelDeclaration = new MetamodelDeclarationImpl(); @@ -346,6 +361,7 @@ public MetamodelDeclaration createMetamodelDeclaration() * * @generated */ + @Override public MetamodelReference createMetamodelReference() { MetamodelReferenceImpl metamodelReference = new MetamodelReferenceImpl(); @@ -357,6 +373,7 @@ public MetamodelReference createMetamodelReference() * * @generated */ + @Override public Metamodel createMetamodel() { MetamodelImpl metamodel = new MetamodelImpl(); @@ -368,6 +385,7 @@ public Metamodel createMetamodel() * * @generated */ + @Override public PartialModelSpecification createPartialModelSpecification() { PartialModelSpecificationImpl partialModelSpecification = new PartialModelSpecificationImpl(); @@ -379,6 +397,7 @@ public PartialModelSpecification createPartialModelSpecification() * * @generated */ + @Override public PartialModelEntry createPartialModelEntry() { PartialModelEntryImpl partialModelEntry = new PartialModelEntryImpl(); @@ -390,6 +409,7 @@ public PartialModelEntry createPartialModelEntry() * * @generated */ + @Override public ModelEntry createModelEntry() { ModelEntryImpl modelEntry = new ModelEntryImpl(); @@ -401,6 +421,7 @@ public ModelEntry createModelEntry() * * @generated */ + @Override public FolderEntry createFolderEntry() { FolderEntryImpl folderEntry = new FolderEntryImpl(); @@ -412,6 +433,7 @@ public FolderEntry createFolderEntry() * * @generated */ + @Override public PartialModelDeclaration createPartialModelDeclaration() { PartialModelDeclarationImpl partialModelDeclaration = new PartialModelDeclarationImpl(); @@ -423,6 +445,7 @@ public PartialModelDeclaration createPartialModelDeclaration() * * @generated */ + @Override public PartialModelReference createPartialModelReference() { PartialModelReferenceImpl partialModelReference = new PartialModelReferenceImpl(); @@ -434,6 +457,7 @@ public PartialModelReference createPartialModelReference() * * @generated */ + @Override public PartialModel createPartialModel() { PartialModelImpl partialModel = new PartialModelImpl(); @@ -445,6 +469,7 @@ public PartialModel createPartialModel() * * @generated */ + @Override public PatternSpecification createPatternSpecification() { PatternSpecificationImpl patternSpecification = new PatternSpecificationImpl(); @@ -456,6 +481,7 @@ public PatternSpecification createPatternSpecification() * * @generated */ + @Override public PatternEntry createPatternEntry() { PatternEntryImpl patternEntry = new PatternEntryImpl(); @@ -467,6 +493,7 @@ public PatternEntry createPatternEntry() * * @generated */ + @Override public AllPatternEntry createAllPatternEntry() { AllPatternEntryImpl allPatternEntry = new AllPatternEntryImpl(); @@ -478,6 +505,7 @@ public AllPatternEntry createAllPatternEntry() * * @generated */ + @Override public PatternElement createPatternElement() { PatternElementImpl patternElement = new PatternElementImpl(); @@ -489,6 +517,7 @@ public PatternElement createPatternElement() * * @generated */ + @Override public GraphPatternDeclaration createGraphPatternDeclaration() { GraphPatternDeclarationImpl graphPatternDeclaration = new GraphPatternDeclarationImpl(); @@ -500,6 +529,7 @@ public GraphPatternDeclaration createGraphPatternDeclaration() * * @generated */ + @Override public GraphPatternReference createGraphPatternReference() { GraphPatternReferenceImpl graphPatternReference = new GraphPatternReferenceImpl(); @@ -511,6 +541,7 @@ public GraphPatternReference createGraphPatternReference() * * @generated */ + @Override public GraphPattern createGraphPattern() { GraphPatternImpl graphPattern = new GraphPatternImpl(); @@ -522,6 +553,7 @@ public GraphPattern createGraphPattern() * * @generated */ + @Override public ConfigSpecification createConfigSpecification() { ConfigSpecificationImpl configSpecification = new ConfigSpecificationImpl(); @@ -533,6 +565,7 @@ public ConfigSpecification createConfigSpecification() * * @generated */ + @Override public ConfigDeclaration createConfigDeclaration() { ConfigDeclarationImpl configDeclaration = new ConfigDeclarationImpl(); @@ -544,6 +577,7 @@ public ConfigDeclaration createConfigDeclaration() * * @generated */ + @Override public ConfigEntry createConfigEntry() { ConfigEntryImpl configEntry = new ConfigEntryImpl(); @@ -555,6 +589,7 @@ public ConfigEntry createConfigEntry() * * @generated */ + @Override public DocumentationEntry createDocumentationEntry() { DocumentationEntryImpl documentationEntry = new DocumentationEntryImpl(); @@ -566,6 +601,7 @@ public DocumentationEntry createDocumentationEntry() * * @generated */ + @Override public RuntimeEntry createRuntimeEntry() { RuntimeEntryImpl runtimeEntry = new RuntimeEntryImpl(); @@ -577,6 +613,7 @@ public RuntimeEntry createRuntimeEntry() * * @generated */ + @Override public MemoryEntry createMemoryEntry() { MemoryEntryImpl memoryEntry = new MemoryEntryImpl(); @@ -588,6 +625,7 @@ public MemoryEntry createMemoryEntry() * * @generated */ + @Override public CustomEntry createCustomEntry() { CustomEntryImpl customEntry = new CustomEntryImpl(); @@ -599,6 +637,7 @@ public CustomEntry createCustomEntry() * * @generated */ + @Override public ConfigReference createConfigReference() { ConfigReferenceImpl configReference = new ConfigReferenceImpl(); @@ -610,6 +649,7 @@ public ConfigReference createConfigReference() * * @generated */ + @Override public Config createConfig() { ConfigImpl config = new ConfigImpl(); @@ -621,6 +661,7 @@ public Config createConfig() * * @generated */ + @Override public ScopeSpecification createScopeSpecification() { ScopeSpecificationImpl scopeSpecification = new ScopeSpecificationImpl(); @@ -632,6 +673,7 @@ public ScopeSpecification createScopeSpecification() * * @generated */ + @Override public TypeScope createTypeScope() { TypeScopeImpl typeScope = new TypeScopeImpl(); @@ -643,6 +685,7 @@ public TypeScope createTypeScope() * * @generated */ + @Override public ClassTypeScope createClassTypeScope() { ClassTypeScopeImpl classTypeScope = new ClassTypeScopeImpl(); @@ -654,6 +697,7 @@ public ClassTypeScope createClassTypeScope() * * @generated */ + @Override public ObjectTypeScope createObjectTypeScope() { ObjectTypeScopeImpl objectTypeScope = new ObjectTypeScopeImpl(); @@ -665,6 +709,7 @@ public ObjectTypeScope createObjectTypeScope() * * @generated */ + @Override public IntegerTypeScope createIntegerTypeScope() { IntegerTypeScopeImpl integerTypeScope = new IntegerTypeScopeImpl(); @@ -676,6 +721,7 @@ public IntegerTypeScope createIntegerTypeScope() * * @generated */ + @Override public RealTypeScope createRealTypeScope() { RealTypeScopeImpl realTypeScope = new RealTypeScopeImpl(); @@ -687,6 +733,7 @@ public RealTypeScope createRealTypeScope() * * @generated */ + @Override public StringTypeScope createStringTypeScope() { StringTypeScopeImpl stringTypeScope = new StringTypeScopeImpl(); @@ -698,6 +745,7 @@ public StringTypeScope createStringTypeScope() * * @generated */ + @Override public TypeReference createTypeReference() { TypeReferenceImpl typeReference = new TypeReferenceImpl(); @@ -709,6 +757,7 @@ public TypeReference createTypeReference() * * @generated */ + @Override public ClassReference createClassReference() { ClassReferenceImpl classReference = new ClassReferenceImpl(); @@ -720,6 +769,7 @@ public ClassReference createClassReference() * * @generated */ + @Override public ObjectReference createObjectReference() { ObjectReferenceImpl objectReference = new ObjectReferenceImpl(); @@ -731,6 +781,7 @@ public ObjectReference createObjectReference() * * @generated */ + @Override public IntegerReference createIntegerReference() { IntegerReferenceImpl integerReference = new IntegerReferenceImpl(); @@ -742,6 +793,7 @@ public IntegerReference createIntegerReference() * * @generated */ + @Override public RealReference createRealReference() { RealReferenceImpl realReference = new RealReferenceImpl(); @@ -753,6 +805,7 @@ public RealReference createRealReference() * * @generated */ + @Override public StringReference createStringReference() { StringReferenceImpl stringReference = new StringReferenceImpl(); @@ -764,6 +817,7 @@ public StringReference createStringReference() * * @generated */ + @Override public NumberSpecification createNumberSpecification() { NumberSpecificationImpl numberSpecification = new NumberSpecificationImpl(); @@ -775,6 +829,7 @@ public NumberSpecification createNumberSpecification() * * @generated */ + @Override public ExactNumber createExactNumber() { ExactNumberImpl exactNumber = new ExactNumberImpl(); @@ -786,6 +841,7 @@ public ExactNumber createExactNumber() * * @generated */ + @Override public IntervallNumber createIntervallNumber() { IntervallNumberImpl intervallNumber = new IntervallNumberImpl(); @@ -797,6 +853,7 @@ public IntervallNumber createIntervallNumber() * * @generated */ + @Override public IntEnumberation createIntEnumberation() { IntEnumberationImpl intEnumberation = new IntEnumberationImpl(); @@ -808,6 +865,7 @@ public IntEnumberation createIntEnumberation() * * @generated */ + @Override public RealEnumeration createRealEnumeration() { RealEnumerationImpl realEnumeration = new RealEnumerationImpl(); @@ -819,6 +877,7 @@ public RealEnumeration createRealEnumeration() * * @generated */ + @Override public StringEnumeration createStringEnumeration() { StringEnumerationImpl stringEnumeration = new StringEnumerationImpl(); @@ -830,6 +889,7 @@ public StringEnumeration createStringEnumeration() * * @generated */ + @Override public ScopeDeclaration createScopeDeclaration() { ScopeDeclarationImpl scopeDeclaration = new ScopeDeclarationImpl(); @@ -841,6 +901,7 @@ public ScopeDeclaration createScopeDeclaration() * * @generated */ + @Override public ScopeReference createScopeReference() { ScopeReferenceImpl scopeReference = new ScopeReferenceImpl(); @@ -852,6 +913,7 @@ public ScopeReference createScopeReference() * * @generated */ + @Override public Scope createScope() { ScopeImpl scope = new ScopeImpl(); @@ -863,6 +925,7 @@ public Scope createScope() * * @generated */ + @Override public Task createTask() { TaskImpl task = new TaskImpl(); @@ -874,6 +937,7 @@ public Task createTask() * * @generated */ + @Override public GenerationTask createGenerationTask() { GenerationTaskImpl generationTask = new GenerationTaskImpl(); @@ -885,6 +949,7 @@ public GenerationTask createGenerationTask() * * @generated */ + @Override public IntegerScope createIntegerScope() { IntegerScopeImpl integerScope = new IntegerScopeImpl(); @@ -896,6 +961,7 @@ public IntegerScope createIntegerScope() * * @generated */ + @Override public RealScope createRealScope() { RealScopeImpl realScope = new RealScopeImpl(); @@ -907,6 +973,7 @@ public RealScope createRealScope() * * @generated */ + @Override public StringScope createStringScope() { StringScopeImpl stringScope = new StringScopeImpl(); @@ -962,6 +1029,7 @@ public String convertSolverToString(EDataType eDataType, Object instanceValue) * * @generated */ + @Override public ApplicationConfigurationPackage getApplicationConfigurationPackage() { return (ApplicationConfigurationPackage)getEPackage(); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationPackageImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationPackageImpl.java index d549ad849..dd1a5e815 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationPackageImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ApplicationConfigurationPackageImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -612,7 +612,7 @@ private ApplicationConfigurationPackageImpl() /** * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. - * + * *

This method is used to initialize {@link ApplicationConfigurationPackage#eINSTANCE} when that field is accessed. * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. * @@ -627,7 +627,8 @@ public static ApplicationConfigurationPackage init() if (isInited) return (ApplicationConfigurationPackage)EPackage.Registry.INSTANCE.getEPackage(ApplicationConfigurationPackage.eNS_URI); // Obtain or create and register package - ApplicationConfigurationPackageImpl theApplicationConfigurationPackage = (ApplicationConfigurationPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ApplicationConfigurationPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ApplicationConfigurationPackageImpl()); + Object registeredApplicationConfigurationPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + ApplicationConfigurationPackageImpl theApplicationConfigurationPackage = registeredApplicationConfigurationPackage instanceof ApplicationConfigurationPackageImpl ? (ApplicationConfigurationPackageImpl)registeredApplicationConfigurationPackage : new ApplicationConfigurationPackageImpl(); isInited = true; @@ -647,7 +648,6 @@ public static ApplicationConfigurationPackage init() // Mark meta-data to indicate it can't be changed theApplicationConfigurationPackage.freeze(); - // Update the registry and return the package EPackage.Registry.INSTANCE.put(ApplicationConfigurationPackage.eNS_URI, theApplicationConfigurationPackage); return theApplicationConfigurationPackage; @@ -658,6 +658,7 @@ public static ApplicationConfigurationPackage init() * * @generated */ + @Override public EClass getConfigurationScript() { return configurationScriptEClass; @@ -668,6 +669,7 @@ public EClass getConfigurationScript() * * @generated */ + @Override public EReference getConfigurationScript_Imports() { return (EReference)configurationScriptEClass.getEStructuralFeatures().get(0); @@ -678,6 +680,7 @@ public EReference getConfigurationScript_Imports() * * @generated */ + @Override public EReference getConfigurationScript_Commands() { return (EReference)configurationScriptEClass.getEStructuralFeatures().get(1); @@ -688,6 +691,7 @@ public EReference getConfigurationScript_Commands() * * @generated */ + @Override public EClass getCommand() { return commandEClass; @@ -698,6 +702,7 @@ public EClass getCommand() * * @generated */ + @Override public EClass getImport() { return importEClass; @@ -708,6 +713,7 @@ public EClass getImport() * * @generated */ + @Override public EClass getEPackageImport() { return ePackageImportEClass; @@ -718,6 +724,7 @@ public EClass getEPackageImport() * * @generated */ + @Override public EReference getEPackageImport_ImportedPackage() { return (EReference)ePackageImportEClass.getEStructuralFeatures().get(0); @@ -728,6 +735,7 @@ public EReference getEPackageImport_ImportedPackage() * * @generated */ + @Override public EClass getViatraImport() { return viatraImportEClass; @@ -738,6 +746,7 @@ public EClass getViatraImport() * * @generated */ + @Override public EReference getViatraImport_ImportedViatra() { return (EReference)viatraImportEClass.getEStructuralFeatures().get(0); @@ -748,6 +757,7 @@ public EReference getViatraImport_ImportedViatra() * * @generated */ + @Override public EClass getDeclaration() { return declarationEClass; @@ -758,6 +768,7 @@ public EClass getDeclaration() * * @generated */ + @Override public EAttribute getDeclaration_Name() { return (EAttribute)declarationEClass.getEStructuralFeatures().get(0); @@ -768,6 +779,7 @@ public EAttribute getDeclaration_Name() * * @generated */ + @Override public EClass getFileSpecification() { return fileSpecificationEClass; @@ -778,6 +790,7 @@ public EClass getFileSpecification() * * @generated */ + @Override public EAttribute getFileSpecification_Path() { return (EAttribute)fileSpecificationEClass.getEStructuralFeatures().get(0); @@ -788,6 +801,7 @@ public EAttribute getFileSpecification_Path() * * @generated */ + @Override public EClass getFileDeclaration() { return fileDeclarationEClass; @@ -798,6 +812,7 @@ public EClass getFileDeclaration() * * @generated */ + @Override public EReference getFileDeclaration_Specification() { return (EReference)fileDeclarationEClass.getEStructuralFeatures().get(0); @@ -808,6 +823,7 @@ public EReference getFileDeclaration_Specification() * * @generated */ + @Override public EClass getFileReference() { return fileReferenceEClass; @@ -818,6 +834,7 @@ public EClass getFileReference() * * @generated */ + @Override public EReference getFileReference_Referred() { return (EReference)fileReferenceEClass.getEStructuralFeatures().get(0); @@ -828,6 +845,7 @@ public EReference getFileReference_Referred() * * @generated */ + @Override public EClass getFile() { return fileEClass; @@ -838,6 +856,7 @@ public EClass getFile() * * @generated */ + @Override public EClass getMetamodelSpecification() { return metamodelSpecificationEClass; @@ -848,6 +867,7 @@ public EClass getMetamodelSpecification() * * @generated */ + @Override public EReference getMetamodelSpecification_Entries() { return (EReference)metamodelSpecificationEClass.getEStructuralFeatures().get(0); @@ -858,6 +878,7 @@ public EReference getMetamodelSpecification_Entries() * * @generated */ + @Override public EClass getMetamodelEntry() { return metamodelEntryEClass; @@ -868,6 +889,7 @@ public EClass getMetamodelEntry() * * @generated */ + @Override public EReference getMetamodelEntry_Package() { return (EReference)metamodelEntryEClass.getEStructuralFeatures().get(0); @@ -878,6 +900,7 @@ public EReference getMetamodelEntry_Package() * * @generated */ + @Override public EClass getAllPackageEntry() { return allPackageEntryEClass; @@ -888,6 +911,7 @@ public EClass getAllPackageEntry() * * @generated */ + @Override public EReference getAllPackageEntry_Exclusion() { return (EReference)allPackageEntryEClass.getEStructuralFeatures().get(0); @@ -898,6 +922,7 @@ public EReference getAllPackageEntry_Exclusion() * * @generated */ + @Override public EClass getMetamodelElement() { return metamodelElementEClass; @@ -908,6 +933,7 @@ public EClass getMetamodelElement() * * @generated */ + @Override public EReference getMetamodelElement_Classifier() { return (EReference)metamodelElementEClass.getEStructuralFeatures().get(0); @@ -918,6 +944,7 @@ public EReference getMetamodelElement_Classifier() * * @generated */ + @Override public EReference getMetamodelElement_Feature() { return (EReference)metamodelElementEClass.getEStructuralFeatures().get(1); @@ -928,6 +955,7 @@ public EReference getMetamodelElement_Feature() * * @generated */ + @Override public EClass getMetamodelDeclaration() { return metamodelDeclarationEClass; @@ -938,6 +966,7 @@ public EClass getMetamodelDeclaration() * * @generated */ + @Override public EReference getMetamodelDeclaration_Specification() { return (EReference)metamodelDeclarationEClass.getEStructuralFeatures().get(0); @@ -948,6 +977,7 @@ public EReference getMetamodelDeclaration_Specification() * * @generated */ + @Override public EClass getMetamodelReference() { return metamodelReferenceEClass; @@ -958,6 +988,7 @@ public EClass getMetamodelReference() * * @generated */ + @Override public EReference getMetamodelReference_Referred() { return (EReference)metamodelReferenceEClass.getEStructuralFeatures().get(0); @@ -968,6 +999,7 @@ public EReference getMetamodelReference_Referred() * * @generated */ + @Override public EClass getMetamodel() { return metamodelEClass; @@ -978,6 +1010,7 @@ public EClass getMetamodel() * * @generated */ + @Override public EClass getPartialModelSpecification() { return partialModelSpecificationEClass; @@ -988,6 +1021,7 @@ public EClass getPartialModelSpecification() * * @generated */ + @Override public EReference getPartialModelSpecification_Entry() { return (EReference)partialModelSpecificationEClass.getEStructuralFeatures().get(0); @@ -998,6 +1032,7 @@ public EReference getPartialModelSpecification_Entry() * * @generated */ + @Override public EClass getPartialModelEntry() { return partialModelEntryEClass; @@ -1008,6 +1043,7 @@ public EClass getPartialModelEntry() * * @generated */ + @Override public EReference getPartialModelEntry_Path() { return (EReference)partialModelEntryEClass.getEStructuralFeatures().get(0); @@ -1018,6 +1054,7 @@ public EReference getPartialModelEntry_Path() * * @generated */ + @Override public EClass getModelEntry() { return modelEntryEClass; @@ -1028,6 +1065,7 @@ public EClass getModelEntry() * * @generated */ + @Override public EClass getFolderEntry() { return folderEntryEClass; @@ -1038,6 +1076,7 @@ public EClass getFolderEntry() * * @generated */ + @Override public EReference getFolderEntry_Exclusion() { return (EReference)folderEntryEClass.getEStructuralFeatures().get(0); @@ -1048,6 +1087,7 @@ public EReference getFolderEntry_Exclusion() * * @generated */ + @Override public EClass getPartialModelDeclaration() { return partialModelDeclarationEClass; @@ -1058,6 +1098,7 @@ public EClass getPartialModelDeclaration() * * @generated */ + @Override public EReference getPartialModelDeclaration_Specification() { return (EReference)partialModelDeclarationEClass.getEStructuralFeatures().get(0); @@ -1068,6 +1109,7 @@ public EReference getPartialModelDeclaration_Specification() * * @generated */ + @Override public EClass getPartialModelReference() { return partialModelReferenceEClass; @@ -1078,6 +1120,7 @@ public EClass getPartialModelReference() * * @generated */ + @Override public EReference getPartialModelReference_Referred() { return (EReference)partialModelReferenceEClass.getEStructuralFeatures().get(0); @@ -1088,6 +1131,7 @@ public EReference getPartialModelReference_Referred() * * @generated */ + @Override public EClass getPartialModel() { return partialModelEClass; @@ -1098,6 +1142,7 @@ public EClass getPartialModel() * * @generated */ + @Override public EClass getPatternSpecification() { return patternSpecificationEClass; @@ -1108,6 +1153,7 @@ public EClass getPatternSpecification() * * @generated */ + @Override public EReference getPatternSpecification_Entries() { return (EReference)patternSpecificationEClass.getEStructuralFeatures().get(0); @@ -1118,6 +1164,7 @@ public EReference getPatternSpecification_Entries() * * @generated */ + @Override public EClass getPatternEntry() { return patternEntryEClass; @@ -1128,6 +1175,7 @@ public EClass getPatternEntry() * * @generated */ + @Override public EReference getPatternEntry_Package() { return (EReference)patternEntryEClass.getEStructuralFeatures().get(0); @@ -1138,6 +1186,7 @@ public EReference getPatternEntry_Package() * * @generated */ + @Override public EClass getAllPatternEntry() { return allPatternEntryEClass; @@ -1148,6 +1197,7 @@ public EClass getAllPatternEntry() * * @generated */ + @Override public EReference getAllPatternEntry_Exclusuion() { return (EReference)allPatternEntryEClass.getEStructuralFeatures().get(0); @@ -1158,6 +1208,7 @@ public EReference getAllPatternEntry_Exclusuion() * * @generated */ + @Override public EClass getPatternElement() { return patternElementEClass; @@ -1168,6 +1219,7 @@ public EClass getPatternElement() * * @generated */ + @Override public EReference getPatternElement_Pattern() { return (EReference)patternElementEClass.getEStructuralFeatures().get(0); @@ -1178,6 +1230,7 @@ public EReference getPatternElement_Pattern() * * @generated */ + @Override public EClass getGraphPatternDeclaration() { return graphPatternDeclarationEClass; @@ -1188,6 +1241,7 @@ public EClass getGraphPatternDeclaration() * * @generated */ + @Override public EReference getGraphPatternDeclaration_Specification() { return (EReference)graphPatternDeclarationEClass.getEStructuralFeatures().get(0); @@ -1198,6 +1252,7 @@ public EReference getGraphPatternDeclaration_Specification() * * @generated */ + @Override public EClass getGraphPatternReference() { return graphPatternReferenceEClass; @@ -1208,6 +1263,7 @@ public EClass getGraphPatternReference() * * @generated */ + @Override public EReference getGraphPatternReference_Referred() { return (EReference)graphPatternReferenceEClass.getEStructuralFeatures().get(0); @@ -1218,6 +1274,7 @@ public EReference getGraphPatternReference_Referred() * * @generated */ + @Override public EClass getGraphPattern() { return graphPatternEClass; @@ -1228,6 +1285,7 @@ public EClass getGraphPattern() * * @generated */ + @Override public EClass getConfigSpecification() { return configSpecificationEClass; @@ -1238,6 +1296,7 @@ public EClass getConfigSpecification() * * @generated */ + @Override public EReference getConfigSpecification_Entries() { return (EReference)configSpecificationEClass.getEStructuralFeatures().get(0); @@ -1248,6 +1307,7 @@ public EReference getConfigSpecification_Entries() * * @generated */ + @Override public EClass getConfigDeclaration() { return configDeclarationEClass; @@ -1258,6 +1318,7 @@ public EClass getConfigDeclaration() * * @generated */ + @Override public EReference getConfigDeclaration_Specification() { return (EReference)configDeclarationEClass.getEStructuralFeatures().get(0); @@ -1268,6 +1329,7 @@ public EReference getConfigDeclaration_Specification() * * @generated */ + @Override public EClass getConfigEntry() { return configEntryEClass; @@ -1278,6 +1340,7 @@ public EClass getConfigEntry() * * @generated */ + @Override public EClass getDocumentationEntry() { return documentationEntryEClass; @@ -1288,6 +1351,7 @@ public EClass getDocumentationEntry() * * @generated */ + @Override public EAttribute getDocumentationEntry_Level() { return (EAttribute)documentationEntryEClass.getEStructuralFeatures().get(0); @@ -1298,6 +1362,7 @@ public EAttribute getDocumentationEntry_Level() * * @generated */ + @Override public EClass getRuntimeEntry() { return runtimeEntryEClass; @@ -1308,6 +1373,7 @@ public EClass getRuntimeEntry() * * @generated */ + @Override public EAttribute getRuntimeEntry_MillisecLimit() { return (EAttribute)runtimeEntryEClass.getEStructuralFeatures().get(0); @@ -1318,6 +1384,7 @@ public EAttribute getRuntimeEntry_MillisecLimit() * * @generated */ + @Override public EClass getMemoryEntry() { return memoryEntryEClass; @@ -1328,6 +1395,7 @@ public EClass getMemoryEntry() * * @generated */ + @Override public EAttribute getMemoryEntry_MegabyteLimit() { return (EAttribute)memoryEntryEClass.getEStructuralFeatures().get(0); @@ -1338,6 +1406,7 @@ public EAttribute getMemoryEntry_MegabyteLimit() * * @generated */ + @Override public EClass getCustomEntry() { return customEntryEClass; @@ -1348,6 +1417,7 @@ public EClass getCustomEntry() * * @generated */ + @Override public EAttribute getCustomEntry_Key() { return (EAttribute)customEntryEClass.getEStructuralFeatures().get(0); @@ -1358,6 +1428,7 @@ public EAttribute getCustomEntry_Key() * * @generated */ + @Override public EAttribute getCustomEntry_Value() { return (EAttribute)customEntryEClass.getEStructuralFeatures().get(1); @@ -1368,6 +1439,7 @@ public EAttribute getCustomEntry_Value() * * @generated */ + @Override public EClass getConfigReference() { return configReferenceEClass; @@ -1378,6 +1450,7 @@ public EClass getConfigReference() * * @generated */ + @Override public EReference getConfigReference_Config() { return (EReference)configReferenceEClass.getEStructuralFeatures().get(0); @@ -1388,6 +1461,7 @@ public EReference getConfigReference_Config() * * @generated */ + @Override public EClass getConfig() { return configEClass; @@ -1398,6 +1472,7 @@ public EClass getConfig() * * @generated */ + @Override public EClass getScopeSpecification() { return scopeSpecificationEClass; @@ -1408,6 +1483,7 @@ public EClass getScopeSpecification() * * @generated */ + @Override public EReference getScopeSpecification_Scopes() { return (EReference)scopeSpecificationEClass.getEStructuralFeatures().get(0); @@ -1418,6 +1494,7 @@ public EReference getScopeSpecification_Scopes() * * @generated */ + @Override public EClass getTypeScope() { return typeScopeEClass; @@ -1428,6 +1505,7 @@ public EClass getTypeScope() * * @generated */ + @Override public EAttribute getTypeScope_SetsNew() { return (EAttribute)typeScopeEClass.getEStructuralFeatures().get(0); @@ -1438,6 +1516,7 @@ public EAttribute getTypeScope_SetsNew() * * @generated */ + @Override public EAttribute getTypeScope_SetsSum() { return (EAttribute)typeScopeEClass.getEStructuralFeatures().get(1); @@ -1448,6 +1527,7 @@ public EAttribute getTypeScope_SetsSum() * * @generated */ + @Override public EReference getTypeScope_Number() { return (EReference)typeScopeEClass.getEStructuralFeatures().get(2); @@ -1458,6 +1538,7 @@ public EReference getTypeScope_Number() * * @generated */ + @Override public EClass getClassTypeScope() { return classTypeScopeEClass; @@ -1468,6 +1549,7 @@ public EClass getClassTypeScope() * * @generated */ + @Override public EReference getClassTypeScope_Type() { return (EReference)classTypeScopeEClass.getEStructuralFeatures().get(0); @@ -1478,6 +1560,7 @@ public EReference getClassTypeScope_Type() * * @generated */ + @Override public EClass getObjectTypeScope() { return objectTypeScopeEClass; @@ -1488,6 +1571,7 @@ public EClass getObjectTypeScope() * * @generated */ + @Override public EReference getObjectTypeScope_Type() { return (EReference)objectTypeScopeEClass.getEStructuralFeatures().get(0); @@ -1498,6 +1582,7 @@ public EReference getObjectTypeScope_Type() * * @generated */ + @Override public EClass getIntegerTypeScope() { return integerTypeScopeEClass; @@ -1508,6 +1593,7 @@ public EClass getIntegerTypeScope() * * @generated */ + @Override public EReference getIntegerTypeScope_Type() { return (EReference)integerTypeScopeEClass.getEStructuralFeatures().get(0); @@ -1518,6 +1604,7 @@ public EReference getIntegerTypeScope_Type() * * @generated */ + @Override public EClass getRealTypeScope() { return realTypeScopeEClass; @@ -1528,6 +1615,7 @@ public EClass getRealTypeScope() * * @generated */ + @Override public EReference getRealTypeScope_Type() { return (EReference)realTypeScopeEClass.getEStructuralFeatures().get(0); @@ -1538,6 +1626,7 @@ public EReference getRealTypeScope_Type() * * @generated */ + @Override public EClass getStringTypeScope() { return stringTypeScopeEClass; @@ -1548,6 +1637,7 @@ public EClass getStringTypeScope() * * @generated */ + @Override public EReference getStringTypeScope_Type() { return (EReference)stringTypeScopeEClass.getEStructuralFeatures().get(0); @@ -1558,6 +1648,7 @@ public EReference getStringTypeScope_Type() * * @generated */ + @Override public EClass getTypeReference() { return typeReferenceEClass; @@ -1568,6 +1659,7 @@ public EClass getTypeReference() * * @generated */ + @Override public EClass getClassReference() { return classReferenceEClass; @@ -1578,6 +1670,7 @@ public EClass getClassReference() * * @generated */ + @Override public EReference getClassReference_Element() { return (EReference)classReferenceEClass.getEStructuralFeatures().get(0); @@ -1588,6 +1681,7 @@ public EReference getClassReference_Element() * * @generated */ + @Override public EClass getObjectReference() { return objectReferenceEClass; @@ -1598,6 +1692,7 @@ public EClass getObjectReference() * * @generated */ + @Override public EClass getIntegerReference() { return integerReferenceEClass; @@ -1608,6 +1703,7 @@ public EClass getIntegerReference() * * @generated */ + @Override public EClass getRealReference() { return realReferenceEClass; @@ -1618,6 +1714,7 @@ public EClass getRealReference() * * @generated */ + @Override public EClass getStringReference() { return stringReferenceEClass; @@ -1628,6 +1725,7 @@ public EClass getStringReference() * * @generated */ + @Override public EClass getNumberSpecification() { return numberSpecificationEClass; @@ -1638,6 +1736,7 @@ public EClass getNumberSpecification() * * @generated */ + @Override public EClass getExactNumber() { return exactNumberEClass; @@ -1648,6 +1747,7 @@ public EClass getExactNumber() * * @generated */ + @Override public EAttribute getExactNumber_ExactNumber() { return (EAttribute)exactNumberEClass.getEStructuralFeatures().get(0); @@ -1658,6 +1758,7 @@ public EAttribute getExactNumber_ExactNumber() * * @generated */ + @Override public EAttribute getExactNumber_ExactUnlimited() { return (EAttribute)exactNumberEClass.getEStructuralFeatures().get(1); @@ -1668,6 +1769,7 @@ public EAttribute getExactNumber_ExactUnlimited() * * @generated */ + @Override public EClass getIntervallNumber() { return intervallNumberEClass; @@ -1678,6 +1780,7 @@ public EClass getIntervallNumber() * * @generated */ + @Override public EAttribute getIntervallNumber_Min() { return (EAttribute)intervallNumberEClass.getEStructuralFeatures().get(0); @@ -1688,6 +1791,7 @@ public EAttribute getIntervallNumber_Min() * * @generated */ + @Override public EAttribute getIntervallNumber_MaxNumber() { return (EAttribute)intervallNumberEClass.getEStructuralFeatures().get(1); @@ -1698,6 +1802,7 @@ public EAttribute getIntervallNumber_MaxNumber() * * @generated */ + @Override public EAttribute getIntervallNumber_MaxUnlimited() { return (EAttribute)intervallNumberEClass.getEStructuralFeatures().get(2); @@ -1708,6 +1813,7 @@ public EAttribute getIntervallNumber_MaxUnlimited() * * @generated */ + @Override public EClass getIntEnumberation() { return intEnumberationEClass; @@ -1718,6 +1824,7 @@ public EClass getIntEnumberation() * * @generated */ + @Override public EAttribute getIntEnumberation_Entry() { return (EAttribute)intEnumberationEClass.getEStructuralFeatures().get(0); @@ -1728,6 +1835,7 @@ public EAttribute getIntEnumberation_Entry() * * @generated */ + @Override public EClass getRealEnumeration() { return realEnumerationEClass; @@ -1738,6 +1846,7 @@ public EClass getRealEnumeration() * * @generated */ + @Override public EAttribute getRealEnumeration_Entry() { return (EAttribute)realEnumerationEClass.getEStructuralFeatures().get(0); @@ -1748,6 +1857,7 @@ public EAttribute getRealEnumeration_Entry() * * @generated */ + @Override public EClass getStringEnumeration() { return stringEnumerationEClass; @@ -1758,6 +1868,7 @@ public EClass getStringEnumeration() * * @generated */ + @Override public EAttribute getStringEnumeration_Entry() { return (EAttribute)stringEnumerationEClass.getEStructuralFeatures().get(0); @@ -1768,6 +1879,7 @@ public EAttribute getStringEnumeration_Entry() * * @generated */ + @Override public EClass getScopeDeclaration() { return scopeDeclarationEClass; @@ -1778,6 +1890,7 @@ public EClass getScopeDeclaration() * * @generated */ + @Override public EReference getScopeDeclaration_Specification() { return (EReference)scopeDeclarationEClass.getEStructuralFeatures().get(0); @@ -1788,6 +1901,7 @@ public EReference getScopeDeclaration_Specification() * * @generated */ + @Override public EClass getScopeReference() { return scopeReferenceEClass; @@ -1798,6 +1912,7 @@ public EClass getScopeReference() * * @generated */ + @Override public EReference getScopeReference_Referred() { return (EReference)scopeReferenceEClass.getEStructuralFeatures().get(0); @@ -1808,6 +1923,7 @@ public EReference getScopeReference_Referred() * * @generated */ + @Override public EClass getScope() { return scopeEClass; @@ -1818,6 +1934,7 @@ public EClass getScope() * * @generated */ + @Override public EClass getTask() { return taskEClass; @@ -1828,6 +1945,7 @@ public EClass getTask() * * @generated */ + @Override public EClass getGenerationTask() { return generationTaskEClass; @@ -1838,6 +1956,7 @@ public EClass getGenerationTask() * * @generated */ + @Override public EReference getGenerationTask_Metamodel() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(0); @@ -1848,6 +1967,7 @@ public EReference getGenerationTask_Metamodel() * * @generated */ + @Override public EReference getGenerationTask_PartialModel() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(1); @@ -1858,6 +1978,7 @@ public EReference getGenerationTask_PartialModel() * * @generated */ + @Override public EReference getGenerationTask_Patterns() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(2); @@ -1868,6 +1989,7 @@ public EReference getGenerationTask_Patterns() * * @generated */ + @Override public EReference getGenerationTask_Scope() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(3); @@ -1878,6 +2000,7 @@ public EReference getGenerationTask_Scope() * * @generated */ + @Override public EAttribute getGenerationTask_NumberSpecified() { return (EAttribute)generationTaskEClass.getEStructuralFeatures().get(4); @@ -1888,6 +2011,7 @@ public EAttribute getGenerationTask_NumberSpecified() * * @generated */ + @Override public EAttribute getGenerationTask_Number() { return (EAttribute)generationTaskEClass.getEStructuralFeatures().get(5); @@ -1898,6 +2022,7 @@ public EAttribute getGenerationTask_Number() * * @generated */ + @Override public EAttribute getGenerationTask_RunSpecified() { return (EAttribute)generationTaskEClass.getEStructuralFeatures().get(6); @@ -1908,6 +2033,7 @@ public EAttribute getGenerationTask_RunSpecified() * * @generated */ + @Override public EAttribute getGenerationTask_Runs() { return (EAttribute)generationTaskEClass.getEStructuralFeatures().get(7); @@ -1918,6 +2044,7 @@ public EAttribute getGenerationTask_Runs() * * @generated */ + @Override public EAttribute getGenerationTask_Solver() { return (EAttribute)generationTaskEClass.getEStructuralFeatures().get(8); @@ -1928,6 +2055,7 @@ public EAttribute getGenerationTask_Solver() * * @generated */ + @Override public EReference getGenerationTask_Config() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(9); @@ -1938,6 +2066,7 @@ public EReference getGenerationTask_Config() * * @generated */ + @Override public EReference getGenerationTask_DebugFolder() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(10); @@ -1948,6 +2077,7 @@ public EReference getGenerationTask_DebugFolder() * * @generated */ + @Override public EReference getGenerationTask_TargetLogFile() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(11); @@ -1958,6 +2088,7 @@ public EReference getGenerationTask_TargetLogFile() * * @generated */ + @Override public EReference getGenerationTask_TargetStatisticsFile() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(12); @@ -1968,6 +2099,7 @@ public EReference getGenerationTask_TargetStatisticsFile() * * @generated */ + @Override public EReference getGenerationTask_TagetFolder() { return (EReference)generationTaskEClass.getEStructuralFeatures().get(13); @@ -1978,6 +2110,7 @@ public EReference getGenerationTask_TagetFolder() * * @generated */ + @Override public EClass getIntegerScope() { return integerScopeEClass; @@ -1988,6 +2121,7 @@ public EClass getIntegerScope() * * @generated */ + @Override public EClass getRealScope() { return realScopeEClass; @@ -1998,6 +2132,7 @@ public EClass getRealScope() * * @generated */ + @Override public EClass getStringScope() { return stringScopeEClass; @@ -2008,6 +2143,7 @@ public EClass getStringScope() * * @generated */ + @Override public EEnum getDocumentLevelSpecification() { return documentLevelSpecificationEEnum; @@ -2018,6 +2154,7 @@ public EEnum getDocumentLevelSpecification() * * @generated */ + @Override public EEnum getSolver() { return solverEEnum; @@ -2028,6 +2165,7 @@ public EEnum getSolver() * * @generated */ + @Override public ApplicationConfigurationFactory getApplicationConfigurationFactory() { return (ApplicationConfigurationFactory)getEFactoryInstance(); @@ -2558,6 +2696,7 @@ public void initializePackageContents() addEEnumLiteral(solverEEnum, Solver.SMT_SOLVER); addEEnumLiteral(solverEEnum, Solver.ALLOY_SOLVER); addEEnumLiteral(solverEEnum, Solver.VIATRA_SOLVER); + addEEnumLiteral(solverEEnum, Solver.TPTP_SOLVER); // Create resource createResource(eNS_URI); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassReferenceImpl.java index d95d291da..3caf25c04 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public MetamodelElement getElement() { return element; @@ -93,6 +94,7 @@ public NotificationChain basicSetElement(MetamodelElement newElement, Notificati * * @generated */ + @Override public void setElement(MetamodelElement newElement) { if (newElement != element) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassTypeScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassTypeScopeImpl.java index 4eef1c028..cbaa50af9 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassTypeScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ClassTypeScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public ClassReference getType() { return type; @@ -93,6 +94,7 @@ public NotificationChain basicSetType(ClassReference newType, NotificationChain * * @generated */ + @Override public void setType(ClassReference newType) { if (newType != type) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CommandImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CommandImpl.java index c7912c0c7..669176b5a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CommandImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CommandImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigDeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigDeclarationImpl.java index af0e7c174..a7e9e0ca8 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigDeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigDeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public ConfigSpecification getSpecification() { return specification; @@ -93,6 +94,7 @@ public NotificationChain basicSetSpecification(ConfigSpecification newSpecificat * * @generated */ + @Override public void setSpecification(ConfigSpecification newSpecification) { if (newSpecification != specification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigEntryImpl.java index 5c9dee49e..4be87b6de 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigImpl.java index c69dd47be..19ac6a05b 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigReferenceImpl.java index dbe6aed63..5bae4cf5a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public ConfigDeclaration getConfig() { if (config != null && config.eIsProxy()) @@ -95,6 +96,7 @@ public ConfigDeclaration basicGetConfig() * * @generated */ + @Override public void setConfig(ConfigDeclaration newConfig) { ConfigDeclaration oldConfig = config; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigSpecificationImpl.java index d4eda0377..662510195 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntries() { if (entries == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigurationScriptImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigurationScriptImpl.java index 9a4bb3a04..a45f68c26 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigurationScriptImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ConfigurationScriptImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -84,6 +84,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getImports() { if (imports == null) @@ -98,6 +99,7 @@ public EList getImports() * * @generated */ + @Override public EList getCommands() { if (commands == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CustomEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CustomEntryImpl.java index b6a387008..b8fdeb0ab 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CustomEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/CustomEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -94,6 +94,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public String getKey() { return key; @@ -104,6 +105,7 @@ public String getKey() * * @generated */ + @Override public void setKey(String newKey) { String oldKey = key; @@ -117,6 +119,7 @@ public void setKey(String newKey) * * @generated */ + @Override public String getValue() { return value; @@ -127,6 +130,7 @@ public String getValue() * * @generated */ + @Override public void setValue(String newValue) { String oldValue = value; @@ -221,7 +225,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (key: "); result.append(key); result.append(", value: "); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DeclarationImpl.java index 15de42f07..5eae552bc 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -73,6 +73,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public String getName() { return name; @@ -83,6 +84,7 @@ public String getName() * * @generated */ + @Override public void setName(String newName) { String oldName = name; @@ -167,7 +169,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (name: "); result.append(name); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DocumentationEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DocumentationEntryImpl.java index 3ea641302..79b25430a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DocumentationEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/DocumentationEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -74,6 +74,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public DocumentLevelSpecification getLevel() { return level; @@ -84,6 +85,7 @@ public DocumentLevelSpecification getLevel() * * @generated */ + @Override public void setLevel(DocumentLevelSpecification newLevel) { DocumentLevelSpecification oldLevel = level; @@ -168,7 +170,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (level: "); result.append(level); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/EPackageImportImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/EPackageImportImpl.java index 1496e0058..5192a52ca 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/EPackageImportImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/EPackageImportImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EPackage getImportedPackage() { if (importedPackage != null && importedPackage.eIsProxy()) @@ -95,6 +96,7 @@ public EPackage basicGetImportedPackage() * * @generated */ + @Override public void setImportedPackage(EPackage newImportedPackage) { EPackage oldImportedPackage = importedPackage; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ExactNumberImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ExactNumberImpl.java index dcd48fa2c..bf33c471f 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ExactNumberImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ExactNumberImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -94,6 +94,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public int getExactNumber() { return exactNumber; @@ -104,6 +105,7 @@ public int getExactNumber() * * @generated */ + @Override public void setExactNumber(int newExactNumber) { int oldExactNumber = exactNumber; @@ -117,6 +119,7 @@ public void setExactNumber(int newExactNumber) * * @generated */ + @Override public boolean isExactUnlimited() { return exactUnlimited; @@ -127,6 +130,7 @@ public boolean isExactUnlimited() * * @generated */ + @Override public void setExactUnlimited(boolean newExactUnlimited) { boolean oldExactUnlimited = exactUnlimited; @@ -221,7 +225,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (exactNumber: "); result.append(exactNumber); result.append(", exactUnlimited: "); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileDeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileDeclarationImpl.java index 16efc6854..6860497c4 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileDeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileDeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public FileSpecification getSpecification() { return specification; @@ -93,6 +94,7 @@ public NotificationChain basicSetSpecification(FileSpecification newSpecificatio * * @generated */ + @Override public void setSpecification(FileSpecification newSpecification) { if (newSpecification != specification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileImpl.java index a67c62107..4c32277a4 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileReferenceImpl.java index ef9ae5003..cb3b8f231 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public FileDeclaration getReferred() { if (referred != null && referred.eIsProxy()) @@ -95,6 +96,7 @@ public FileDeclaration basicGetReferred() * * @generated */ + @Override public void setReferred(FileDeclaration newReferred) { FileDeclaration oldReferred = referred; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileSpecificationImpl.java index 3b728d0e3..65364312b 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FileSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -73,6 +73,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public String getPath() { return path; @@ -83,6 +84,7 @@ public String getPath() * * @generated */ + @Override public void setPath(String newPath) { String oldPath = path; @@ -167,7 +169,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (path: "); result.append(path); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FolderEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FolderEntryImpl.java index 63bf5f585..deddbe741 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FolderEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/FolderEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getExclusion() { if (exclusion == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GenerationTaskImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GenerationTaskImpl.java index 41874b354..b2df645a6 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GenerationTaskImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GenerationTaskImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -265,6 +265,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public Metamodel getMetamodel() { return metamodel; @@ -292,6 +293,7 @@ public NotificationChain basicSetMetamodel(Metamodel newMetamodel, NotificationC * * @generated */ + @Override public void setMetamodel(Metamodel newMetamodel) { if (newMetamodel != metamodel) @@ -313,6 +315,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public PartialModel getPartialModel() { return partialModel; @@ -340,6 +343,7 @@ public NotificationChain basicSetPartialModel(PartialModel newPartialModel, Noti * * @generated */ + @Override public void setPartialModel(PartialModel newPartialModel) { if (newPartialModel != partialModel) @@ -361,6 +365,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public GraphPattern getPatterns() { return patterns; @@ -388,6 +393,7 @@ public NotificationChain basicSetPatterns(GraphPattern newPatterns, Notification * * @generated */ + @Override public void setPatterns(GraphPattern newPatterns) { if (newPatterns != patterns) @@ -409,6 +415,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public Scope getScope() { return scope; @@ -436,6 +443,7 @@ public NotificationChain basicSetScope(Scope newScope, NotificationChain msgs) * * @generated */ + @Override public void setScope(Scope newScope) { if (newScope != scope) @@ -457,6 +465,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public boolean isNumberSpecified() { return numberSpecified; @@ -467,6 +476,7 @@ public boolean isNumberSpecified() * * @generated */ + @Override public void setNumberSpecified(boolean newNumberSpecified) { boolean oldNumberSpecified = numberSpecified; @@ -480,6 +490,7 @@ public void setNumberSpecified(boolean newNumberSpecified) * * @generated */ + @Override public int getNumber() { return number; @@ -490,6 +501,7 @@ public int getNumber() * * @generated */ + @Override public void setNumber(int newNumber) { int oldNumber = number; @@ -503,6 +515,7 @@ public void setNumber(int newNumber) * * @generated */ + @Override public boolean isRunSpecified() { return runSpecified; @@ -513,6 +526,7 @@ public boolean isRunSpecified() * * @generated */ + @Override public void setRunSpecified(boolean newRunSpecified) { boolean oldRunSpecified = runSpecified; @@ -526,6 +540,7 @@ public void setRunSpecified(boolean newRunSpecified) * * @generated */ + @Override public int getRuns() { return runs; @@ -536,6 +551,7 @@ public int getRuns() * * @generated */ + @Override public void setRuns(int newRuns) { int oldRuns = runs; @@ -549,6 +565,7 @@ public void setRuns(int newRuns) * * @generated */ + @Override public Solver getSolver() { return solver; @@ -559,6 +576,7 @@ public Solver getSolver() * * @generated */ + @Override public void setSolver(Solver newSolver) { Solver oldSolver = solver; @@ -572,6 +590,7 @@ public void setSolver(Solver newSolver) * * @generated */ + @Override public Config getConfig() { return config; @@ -599,6 +618,7 @@ public NotificationChain basicSetConfig(Config newConfig, NotificationChain msgs * * @generated */ + @Override public void setConfig(Config newConfig) { if (newConfig != config) @@ -620,6 +640,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public File getDebugFolder() { return debugFolder; @@ -647,6 +668,7 @@ public NotificationChain basicSetDebugFolder(File newDebugFolder, NotificationCh * * @generated */ + @Override public void setDebugFolder(File newDebugFolder) { if (newDebugFolder != debugFolder) @@ -668,6 +690,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public File getTargetLogFile() { return targetLogFile; @@ -695,6 +718,7 @@ public NotificationChain basicSetTargetLogFile(File newTargetLogFile, Notificati * * @generated */ + @Override public void setTargetLogFile(File newTargetLogFile) { if (newTargetLogFile != targetLogFile) @@ -716,6 +740,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public File getTargetStatisticsFile() { return targetStatisticsFile; @@ -743,6 +768,7 @@ public NotificationChain basicSetTargetStatisticsFile(File newTargetStatisticsFi * * @generated */ + @Override public void setTargetStatisticsFile(File newTargetStatisticsFile) { if (newTargetStatisticsFile != targetStatisticsFile) @@ -764,6 +790,7 @@ else if (eNotificationRequired()) * * @generated */ + @Override public File getTagetFolder() { return tagetFolder; @@ -791,6 +818,7 @@ public NotificationChain basicSetTagetFolder(File newTagetFolder, NotificationCh * * @generated */ + @Override public void setTagetFolder(File newTagetFolder) { if (newTagetFolder != tagetFolder) @@ -1045,7 +1073,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (numberSpecified: "); result.append(numberSpecified); result.append(", number: "); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternDeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternDeclarationImpl.java index 894b951ec..5a2393017 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternDeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternDeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public PatternSpecification getSpecification() { return specification; @@ -93,6 +94,7 @@ public NotificationChain basicSetSpecification(PatternSpecification newSpecifica * * @generated */ + @Override public void setSpecification(PatternSpecification newSpecification) { if (newSpecification != specification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternImpl.java index 88512fdea..45a44d921 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternReferenceImpl.java index 390933530..efd945a6a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/GraphPatternReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public GraphPatternDeclaration getReferred() { if (referred != null && referred.eIsProxy()) @@ -95,6 +96,7 @@ public GraphPatternDeclaration basicGetReferred() * * @generated */ + @Override public void setReferred(GraphPatternDeclaration newReferred) { GraphPatternDeclaration oldReferred = referred; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ImportImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ImportImpl.java index 3618fbba6..b2ec8a643 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ImportImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ImportImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntEnumberationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntEnumberationImpl.java index 0d851bc70..13af71e60 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntEnumberationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntEnumberationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntry() { if (entry == null) @@ -152,7 +153,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (entry: "); result.append(entry); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerReferenceImpl.java index b35e0d17d..a04ea7d8d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerScopeImpl.java index 6ccbcda57..3958c8f3d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerTypeScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerTypeScopeImpl.java index 438d59bc9..c5f3dde83 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerTypeScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntegerTypeScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public IntegerReference getType() { return type; @@ -93,6 +94,7 @@ public NotificationChain basicSetType(IntegerReference newType, NotificationChai * * @generated */ + @Override public void setType(IntegerReference newType) { if (newType != type) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntervallNumberImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntervallNumberImpl.java index 98a96254b..dcbaed1d9 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntervallNumberImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/IntervallNumberImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -115,6 +115,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public int getMin() { return min; @@ -125,6 +126,7 @@ public int getMin() * * @generated */ + @Override public void setMin(int newMin) { int oldMin = min; @@ -138,6 +140,7 @@ public void setMin(int newMin) * * @generated */ + @Override public int getMaxNumber() { return maxNumber; @@ -148,6 +151,7 @@ public int getMaxNumber() * * @generated */ + @Override public void setMaxNumber(int newMaxNumber) { int oldMaxNumber = maxNumber; @@ -161,6 +165,7 @@ public void setMaxNumber(int newMaxNumber) * * @generated */ + @Override public boolean isMaxUnlimited() { return maxUnlimited; @@ -171,6 +176,7 @@ public boolean isMaxUnlimited() * * @generated */ + @Override public void setMaxUnlimited(boolean newMaxUnlimited) { boolean oldMaxUnlimited = maxUnlimited; @@ -275,7 +281,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (min: "); result.append(min); result.append(", maxNumber: "); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MemoryEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MemoryEntryImpl.java index 6595f13f2..1379e2ea7 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MemoryEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MemoryEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -73,6 +73,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public int getMegabyteLimit() { return megabyteLimit; @@ -83,6 +84,7 @@ public int getMegabyteLimit() * * @generated */ + @Override public void setMegabyteLimit(int newMegabyteLimit) { int oldMegabyteLimit = megabyteLimit; @@ -167,7 +169,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (megabyteLimit: "); result.append(megabyteLimit); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelDeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelDeclarationImpl.java index b6da09afd..59495fb5f 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelDeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelDeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public MetamodelSpecification getSpecification() { return specification; @@ -93,6 +94,7 @@ public NotificationChain basicSetSpecification(MetamodelSpecification newSpecifi * * @generated */ + @Override public void setSpecification(MetamodelSpecification newSpecification) { if (newSpecification != specification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelElementImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelElementImpl.java index 3395381ec..045814f78 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelElementImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelElementImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -77,6 +77,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EClassifier getClassifier() { if (classifier != null && classifier.eIsProxy()) @@ -107,6 +108,7 @@ public EClassifier basicGetClassifier() * * @generated */ + @Override public void setClassifier(EClassifier newClassifier) { EClassifier oldClassifier = classifier; @@ -120,6 +122,7 @@ public void setClassifier(EClassifier newClassifier) * * @generated */ + @Override public ENamedElement getFeature() { if (feature != null && feature.eIsProxy()) @@ -150,6 +153,7 @@ public ENamedElement basicGetFeature() * * @generated */ + @Override public void setFeature(ENamedElement newFeature) { ENamedElement oldFeature = feature; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelEntryImpl.java index af250b5b0..94d09a825 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EPackage getPackage() { if (package_ != null && package_.eIsProxy()) @@ -96,6 +97,7 @@ public EPackage basicGetPackage() * * @generated */ + @Override public void setPackage(EPackage newPackage) { EPackage oldPackage = package_; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelImpl.java index bca115957..3446fcf41 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelReferenceImpl.java index fb93bf8da..7556f0142 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public MetamodelDeclaration getReferred() { if (referred != null && referred.eIsProxy()) @@ -95,6 +96,7 @@ public MetamodelDeclaration basicGetReferred() * * @generated */ + @Override public void setReferred(MetamodelDeclaration newReferred) { MetamodelDeclaration oldReferred = referred; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelSpecificationImpl.java index 412b46e65..3d04a4471 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/MetamodelSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntries() { if (entries == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ModelEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ModelEntryImpl.java index 58c052fee..c716cbe19 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ModelEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ModelEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/NumberSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/NumberSpecificationImpl.java index 124df0f66..9b6a8c8fd 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/NumberSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/NumberSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectReferenceImpl.java index 9a014ed65..ea84742bf 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectTypeScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectTypeScopeImpl.java index 51b9262b8..764381ff4 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectTypeScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ObjectTypeScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public ObjectReference getType() { return type; @@ -93,6 +94,7 @@ public NotificationChain basicSetType(ObjectReference newType, NotificationChain * * @generated */ + @Override public void setType(ObjectReference newType) { if (newType != type) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelDeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelDeclarationImpl.java index 2932fa6e6..385e4251a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelDeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelDeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public PartialModelSpecification getSpecification() { return specification; @@ -93,6 +94,7 @@ public NotificationChain basicSetSpecification(PartialModelSpecification newSpec * * @generated */ + @Override public void setSpecification(PartialModelSpecification newSpecification) { if (newSpecification != specification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelEntryImpl.java index 23571a76f..c37b4f0e2 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -67,6 +67,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public File getPath() { return path; @@ -94,6 +95,7 @@ public NotificationChain basicSetPath(File newPath, NotificationChain msgs) * * @generated */ + @Override public void setPath(File newPath) { if (newPath != path) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelImpl.java index ccccd0cb0..208630763 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelReferenceImpl.java index 1af7e8ad8..7aea4c330 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public PartialModelDeclaration getReferred() { if (referred != null && referred.eIsProxy()) @@ -95,6 +96,7 @@ public PartialModelDeclaration basicGetReferred() * * @generated */ + @Override public void setReferred(PartialModelDeclaration newReferred) { PartialModelDeclaration oldReferred = referred; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelSpecificationImpl.java index 5098cc3de..8cbbfc750 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PartialModelSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntry() { if (entry == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternElementImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternElementImpl.java index 553916518..74f93f354 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternElementImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternElementImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public Pattern getPattern() { if (pattern != null && pattern.eIsProxy()) @@ -96,6 +97,7 @@ public Pattern basicGetPattern() * * @generated */ + @Override public void setPattern(Pattern newPattern) { Pattern oldPattern = pattern; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternEntryImpl.java index d00accaea..8d1df054d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -67,6 +67,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public PatternModel getPackage() { if (package_ != null && package_.eIsProxy()) @@ -97,6 +98,7 @@ public PatternModel basicGetPackage() * * @generated */ + @Override public void setPackage(PatternModel newPackage) { PatternModel oldPackage = package_; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternSpecificationImpl.java index 410ad21ce..4f1d658ba 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/PatternSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntries() { if (entries == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealEnumerationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealEnumerationImpl.java index d19d0bfb2..3f816602d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealEnumerationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealEnumerationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -67,6 +67,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntry() { if (entry == null) @@ -154,7 +155,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (entry: "); result.append(entry); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealReferenceImpl.java index e34982fc9..bb84a7a0e 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealScopeImpl.java index a936da126..0c0565617 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealTypeScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealTypeScopeImpl.java index dc3d6fc90..d0e208eab 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealTypeScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RealTypeScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public RealReference getType() { return type; @@ -93,6 +94,7 @@ public NotificationChain basicSetType(RealReference newType, NotificationChain m * * @generated */ + @Override public void setType(RealReference newType) { if (newType != type) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RuntimeEntryImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RuntimeEntryImpl.java index 9abb14483..cf1f7277e 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RuntimeEntryImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/RuntimeEntryImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -73,6 +73,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public int getMillisecLimit() { return millisecLimit; @@ -83,6 +84,7 @@ public int getMillisecLimit() * * @generated */ + @Override public void setMillisecLimit(int newMillisecLimit) { int oldMillisecLimit = millisecLimit; @@ -167,7 +169,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (millisecLimit: "); result.append(millisecLimit); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeDeclarationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeDeclarationImpl.java index c731abbb7..f511fd58a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeDeclarationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeDeclarationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public ScopeSpecification getSpecification() { return specification; @@ -93,6 +94,7 @@ public NotificationChain basicSetSpecification(ScopeSpecification newSpecificati * * @generated */ + @Override public void setSpecification(ScopeSpecification newSpecification) { if (newSpecification != specification) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeImpl.java index 92309b907..60c413617 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeReferenceImpl.java index 74f1c2352..20690057a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public ScopeDeclaration getReferred() { if (referred != null && referred.eIsProxy()) @@ -95,6 +96,7 @@ public ScopeDeclaration basicGetReferred() * * @generated */ + @Override public void setReferred(ScopeDeclaration newReferred) { ScopeDeclaration oldReferred = referred; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeSpecificationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeSpecificationImpl.java index b9e4f045b..fa2dc2fa4 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeSpecificationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ScopeSpecificationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -70,6 +70,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getScopes() { if (scopes == null) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringEnumerationImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringEnumerationImpl.java index 7e72525a6..d70993777 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringEnumerationImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringEnumerationImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -65,6 +65,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public EList getEntry() { if (entry == null) @@ -152,7 +153,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (entry: "); result.append(entry); result.append(')'); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringReferenceImpl.java index c6b295151..fdadc0410 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringScopeImpl.java index c9c60e7be..73954749d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringTypeScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringTypeScopeImpl.java index 1f0f0b2ed..ca34c8564 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringTypeScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/StringTypeScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public StringReference getType() { return type; @@ -93,6 +94,7 @@ public NotificationChain basicSetType(StringReference newType, NotificationChain * * @generated */ + @Override public void setType(StringReference newType) { if (newType != type) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TaskImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TaskImpl.java index ace0d0697..566ad8a8a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TaskImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TaskImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeReferenceImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeReferenceImpl.java index 93ad169af..eecca2dc6 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeReferenceImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeReferenceImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeScopeImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeScopeImpl.java index 9ae4fe6e2..7f88e02da 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeScopeImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/TypeScopeImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -109,6 +109,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public boolean isSetsNew() { return setsNew; @@ -119,6 +120,7 @@ public boolean isSetsNew() * * @generated */ + @Override public void setSetsNew(boolean newSetsNew) { boolean oldSetsNew = setsNew; @@ -132,6 +134,7 @@ public void setSetsNew(boolean newSetsNew) * * @generated */ + @Override public boolean isSetsSum() { return setsSum; @@ -142,6 +145,7 @@ public boolean isSetsSum() * * @generated */ + @Override public void setSetsSum(boolean newSetsSum) { boolean oldSetsSum = setsSum; @@ -155,6 +159,7 @@ public void setSetsSum(boolean newSetsSum) * * @generated */ + @Override public NumberSpecification getNumber() { return number; @@ -182,6 +187,7 @@ public NotificationChain basicSetNumber(NumberSpecification newNumber, Notificat * * @generated */ + @Override public void setNumber(NumberSpecification newNumber) { if (newNumber != number) @@ -310,7 +316,7 @@ public String toString() { if (eIsProxy()) return super.toString(); - StringBuffer result = new StringBuffer(super.toString()); + StringBuilder result = new StringBuilder(super.toString()); result.append(" (setsNew: "); result.append(setsNew); result.append(", setsSum: "); diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ViatraImportImpl.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ViatraImportImpl.java index 1cd028454..bb635f63d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ViatraImportImpl.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/impl/ViatraImportImpl.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.impl; @@ -66,6 +66,7 @@ protected EClass eStaticClass() * * @generated */ + @Override public PatternModel getImportedViatra() { if (importedViatra != null && importedViatra.eIsProxy()) @@ -96,6 +97,7 @@ public PatternModel basicGetImportedViatra() * * @generated */ + @Override public void setImportedViatra(PatternModel newImportedViatra) { PatternModel oldImportedViatra = importedViatra; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationAdapterFactory.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationAdapterFactory.java index 836d841fc..e577ddd2d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationAdapterFactory.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationAdapterFactory.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.util; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationSwitch.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationSwitch.java index 313fce87f..417a3ad19 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationSwitch.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/applicationConfiguration/util/ApplicationConfigurationSwitch.java @@ -1,5 +1,5 @@ /** - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.util; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationAntlrTokenFileProvider.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationAntlrTokenFileProvider.java index 725ca8fb7..fb9b562ab 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationAntlrTokenFileProvider.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationAntlrTokenFileProvider.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.parser.antlr; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationParser.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationParser.java index fa6ff883d..f1d6ae3ad 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationParser.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/ApplicationConfigurationParser.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.parser.antlr; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.g b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.g index 455e7054d..a532dabf2 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.g +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.g @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ grammar InternalApplicationConfiguration; @@ -4285,6 +4285,14 @@ ruleSolver returns [Enumerator current=null] newLeafNode(enumLiteral_2, grammarAccess.getSolverAccess().getViatraSolverEnumLiteralDeclaration_2()); } ) + | + ( + enumLiteral_3='TPTPSolver' + { + $current = grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3().getEnumLiteral().getInstance(); + newLeafNode(enumLiteral_3, grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3()); + } + ) ) ; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.tokens b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.tokens index 96730dbf7..fe0abab9d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.tokens +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfiguration.tokens @@ -11,6 +11,7 @@ '>'=35 'AlloySolver'=56 'SMTSolver'=55 +'TPTPSolver'=58 'ViatraSolver'=57 'config'=28 'constraints'=27 @@ -99,3 +100,4 @@ T__54=54 T__55=55 T__56=56 T__57=57 +T__58=58 diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationLexer.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationLexer.java index 6e214569e..f7343ead1 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationLexer.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationLexer.java @@ -25,6 +25,7 @@ public class InternalApplicationConfigurationLexer extends Lexer { public static final int T__13=13; public static final int T__57=57; public static final int T__14=14; + public static final int T__58=58; public static final int T__51=51; public static final int T__52=52; public static final int T__53=53; @@ -1058,15 +1059,36 @@ public final void mT__57() throws RecognitionException { } // $ANTLR end "T__57" + // $ANTLR start "T__58" + public final void mT__58() throws RecognitionException { + try { + int _type = T__58; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalApplicationConfiguration.g:58:7: ( 'TPTPSolver' ) + // InternalApplicationConfiguration.g:58:9: 'TPTPSolver' + { + match("TPTPSolver"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__58" + // $ANTLR start "RULE_ID" public final void mRULE_ID() throws RecognitionException { try { int _type = RULE_ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4291:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) - // InternalApplicationConfiguration.g:4291:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalApplicationConfiguration.g:4299:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalApplicationConfiguration.g:4299:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* { - // InternalApplicationConfiguration.g:4291:11: ( '^' )? + // InternalApplicationConfiguration.g:4299:11: ( '^' )? int alt1=2; int LA1_0 = input.LA(1); @@ -1075,7 +1097,7 @@ public final void mRULE_ID() throws RecognitionException { } switch (alt1) { case 1 : - // InternalApplicationConfiguration.g:4291:11: '^' + // InternalApplicationConfiguration.g:4299:11: '^' { match('^'); @@ -1093,7 +1115,7 @@ public final void mRULE_ID() throws RecognitionException { recover(mse); throw mse;} - // InternalApplicationConfiguration.g:4291:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalApplicationConfiguration.g:4299:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* loop2: do { int alt2=2; @@ -1142,10 +1164,10 @@ public final void mRULE_INT() throws RecognitionException { try { int _type = RULE_INT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4293:10: ( ( '0' .. '9' )+ ) - // InternalApplicationConfiguration.g:4293:12: ( '0' .. '9' )+ + // InternalApplicationConfiguration.g:4301:10: ( ( '0' .. '9' )+ ) + // InternalApplicationConfiguration.g:4301:12: ( '0' .. '9' )+ { - // InternalApplicationConfiguration.g:4293:12: ( '0' .. '9' )+ + // InternalApplicationConfiguration.g:4301:12: ( '0' .. '9' )+ int cnt3=0; loop3: do { @@ -1159,7 +1181,7 @@ public final void mRULE_INT() throws RecognitionException { switch (alt3) { case 1 : - // InternalApplicationConfiguration.g:4293:13: '0' .. '9' + // InternalApplicationConfiguration.g:4301:13: '0' .. '9' { matchRange('0','9'); @@ -1191,10 +1213,10 @@ public final void mRULE_STRING() throws RecognitionException { try { int _type = RULE_STRING; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4295:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) - // InternalApplicationConfiguration.g:4295:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalApplicationConfiguration.g:4303:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalApplicationConfiguration.g:4303:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) { - // InternalApplicationConfiguration.g:4295:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalApplicationConfiguration.g:4303:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) int alt6=2; int LA6_0 = input.LA(1); @@ -1212,10 +1234,10 @@ else if ( (LA6_0=='\'') ) { } switch (alt6) { case 1 : - // InternalApplicationConfiguration.g:4295:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + // InternalApplicationConfiguration.g:4303:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' { match('\"'); - // InternalApplicationConfiguration.g:4295:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + // InternalApplicationConfiguration.g:4303:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* loop4: do { int alt4=3; @@ -1231,7 +1253,7 @@ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>= switch (alt4) { case 1 : - // InternalApplicationConfiguration.g:4295:21: '\\\\' . + // InternalApplicationConfiguration.g:4303:21: '\\\\' . { match('\\'); matchAny(); @@ -1239,7 +1261,7 @@ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>= } break; case 2 : - // InternalApplicationConfiguration.g:4295:28: ~ ( ( '\\\\' | '\"' ) ) + // InternalApplicationConfiguration.g:4303:28: ~ ( ( '\\\\' | '\"' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1264,10 +1286,10 @@ else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>= } break; case 2 : - // InternalApplicationConfiguration.g:4295:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + // InternalApplicationConfiguration.g:4303:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' { match('\''); - // InternalApplicationConfiguration.g:4295:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + // InternalApplicationConfiguration.g:4303:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* loop5: do { int alt5=3; @@ -1283,7 +1305,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>= switch (alt5) { case 1 : - // InternalApplicationConfiguration.g:4295:54: '\\\\' . + // InternalApplicationConfiguration.g:4303:54: '\\\\' . { match('\\'); matchAny(); @@ -1291,7 +1313,7 @@ else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>= } break; case 2 : - // InternalApplicationConfiguration.g:4295:61: ~ ( ( '\\\\' | '\\'' ) ) + // InternalApplicationConfiguration.g:4303:61: ~ ( ( '\\\\' | '\\'' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1334,12 +1356,12 @@ public final void mRULE_ML_COMMENT() throws RecognitionException { try { int _type = RULE_ML_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4297:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) - // InternalApplicationConfiguration.g:4297:19: '/*' ( options {greedy=false; } : . )* '*/' + // InternalApplicationConfiguration.g:4305:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalApplicationConfiguration.g:4305:19: '/*' ( options {greedy=false; } : . )* '*/' { match("/*"); - // InternalApplicationConfiguration.g:4297:24: ( options {greedy=false; } : . )* + // InternalApplicationConfiguration.g:4305:24: ( options {greedy=false; } : . )* loop7: do { int alt7=2; @@ -1364,7 +1386,7 @@ else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) { switch (alt7) { case 1 : - // InternalApplicationConfiguration.g:4297:52: . + // InternalApplicationConfiguration.g:4305:52: . { matchAny(); @@ -1394,12 +1416,12 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { try { int _type = RULE_SL_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4299:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) - // InternalApplicationConfiguration.g:4299:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + // InternalApplicationConfiguration.g:4307:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalApplicationConfiguration.g:4307:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? { match("//"); - // InternalApplicationConfiguration.g:4299:24: (~ ( ( '\\n' | '\\r' ) ) )* + // InternalApplicationConfiguration.g:4307:24: (~ ( ( '\\n' | '\\r' ) ) )* loop8: do { int alt8=2; @@ -1412,7 +1434,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { switch (alt8) { case 1 : - // InternalApplicationConfiguration.g:4299:24: ~ ( ( '\\n' | '\\r' ) ) + // InternalApplicationConfiguration.g:4307:24: ~ ( ( '\\n' | '\\r' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1432,7 +1454,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { } } while (true); - // InternalApplicationConfiguration.g:4299:40: ( ( '\\r' )? '\\n' )? + // InternalApplicationConfiguration.g:4307:40: ( ( '\\r' )? '\\n' )? int alt10=2; int LA10_0 = input.LA(1); @@ -1441,9 +1463,9 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { } switch (alt10) { case 1 : - // InternalApplicationConfiguration.g:4299:41: ( '\\r' )? '\\n' + // InternalApplicationConfiguration.g:4307:41: ( '\\r' )? '\\n' { - // InternalApplicationConfiguration.g:4299:41: ( '\\r' )? + // InternalApplicationConfiguration.g:4307:41: ( '\\r' )? int alt9=2; int LA9_0 = input.LA(1); @@ -1452,7 +1474,7 @@ public final void mRULE_SL_COMMENT() throws RecognitionException { } switch (alt9) { case 1 : - // InternalApplicationConfiguration.g:4299:41: '\\r' + // InternalApplicationConfiguration.g:4307:41: '\\r' { match('\r'); @@ -1484,10 +1506,10 @@ public final void mRULE_WS() throws RecognitionException { try { int _type = RULE_WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4301:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // InternalApplicationConfiguration.g:4301:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalApplicationConfiguration.g:4309:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalApplicationConfiguration.g:4309:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // InternalApplicationConfiguration.g:4301:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalApplicationConfiguration.g:4309:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt11=0; loop11: do { @@ -1541,8 +1563,8 @@ public final void mRULE_ANY_OTHER() throws RecognitionException { try { int _type = RULE_ANY_OTHER; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalApplicationConfiguration.g:4303:16: ( . ) - // InternalApplicationConfiguration.g:4303:18: . + // InternalApplicationConfiguration.g:4311:16: ( . ) + // InternalApplicationConfiguration.g:4311:18: . { matchAny(); @@ -1557,8 +1579,8 @@ public final void mRULE_ANY_OTHER() throws RecognitionException { // $ANTLR end "RULE_ANY_OTHER" public void mTokens() throws RecognitionException { - // InternalApplicationConfiguration.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) - int alt12=54; + // InternalApplicationConfiguration.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) + int alt12=55; alt12 = dfa12.predict(input); switch (alt12) { case 1 : @@ -1891,49 +1913,56 @@ public void mTokens() throws RecognitionException { } break; case 48 : - // InternalApplicationConfiguration.g:1:292: RULE_ID + // InternalApplicationConfiguration.g:1:292: T__58 { - mRULE_ID(); + mT__58(); } break; case 49 : - // InternalApplicationConfiguration.g:1:300: RULE_INT + // InternalApplicationConfiguration.g:1:298: RULE_ID { - mRULE_INT(); + mRULE_ID(); } break; case 50 : - // InternalApplicationConfiguration.g:1:309: RULE_STRING + // InternalApplicationConfiguration.g:1:306: RULE_INT { - mRULE_STRING(); + mRULE_INT(); } break; case 51 : - // InternalApplicationConfiguration.g:1:321: RULE_ML_COMMENT + // InternalApplicationConfiguration.g:1:315: RULE_STRING { - mRULE_ML_COMMENT(); + mRULE_STRING(); } break; case 52 : - // InternalApplicationConfiguration.g:1:337: RULE_SL_COMMENT + // InternalApplicationConfiguration.g:1:327: RULE_ML_COMMENT { - mRULE_SL_COMMENT(); + mRULE_ML_COMMENT(); } break; case 53 : - // InternalApplicationConfiguration.g:1:353: RULE_WS + // InternalApplicationConfiguration.g:1:343: RULE_SL_COMMENT { - mRULE_WS(); + mRULE_SL_COMMENT(); } break; case 54 : - // InternalApplicationConfiguration.g:1:361: RULE_ANY_OTHER + // InternalApplicationConfiguration.g:1:359: RULE_WS + { + mRULE_WS(); + + } + break; + case 55 : + // InternalApplicationConfiguration.g:1:367: RULE_ANY_OTHER { mRULE_ANY_OTHER(); @@ -1947,106 +1976,105 @@ public void mTokens() throws RecognitionException { protected DFA12 dfa12 = new DFA12(this); static final String DFA12_eotS = - "\1\uffff\1\47\1\uffff\4\53\4\uffff\1\53\1\45\4\53\1\uffff\1\45\2\uffff\2\53\1\uffff\6\53\1\45\2\uffff\3\45\5\uffff\2\53\1\uffff\6\53\4\uffff\1\53\1\uffff\6\53\4\uffff\5\53\1\uffff\6\53\5\uffff\1\53\1\163\14\53\1\u0082\21\53\1\uffff\3\53\1\u0098\1\53\1\u009a\7\53\2\uffff\1\53\1\u00a3\1\u00a4\1\u00a5\1\u00a6\20\53\1\uffff\1\53\1\uffff\10\53\4\uffff\4\53\1\u00c4\2\53\1\u00c7\4\53\1\u00cc\2\53\1\u00cf\1\u00d0\3\53\1\u00d4\1\u00d5\1\53\1\u00d7\1\53\1\u00d9\1\u00da\1\u00db\1\53\1\uffff\1\u00dd\1\53\1\uffff\1\u00df\3\53\1\uffff\2\53\2\uffff\1\u00e5\2\53\2\uffff\1\53\1\uffff\1\u00e9\3\uffff\1\53\1\uffff\1\53\1\uffff\3\53\1\u00ef\1\53\2\uffff\2\53\1\uffff\1\53\1\u00f4\3\53\1\uffff\1\u00f8\1\u00f9\2\53\1\uffff\1\u00fc\2\53\2\uffff\1\53\1\u0100\1\uffff\2\53\1\u0103\1\uffff\1\u0104\1\53\2\uffff\1\u0106\1\uffff"; + "\1\uffff\1\50\1\uffff\4\54\4\uffff\1\54\1\46\4\54\1\uffff\1\46\2\uffff\2\54\1\uffff\7\54\1\46\2\uffff\3\46\5\uffff\2\54\1\uffff\6\54\4\uffff\1\54\1\uffff\6\54\4\uffff\5\54\1\uffff\7\54\5\uffff\1\54\1\166\14\54\1\u0085\22\54\1\uffff\3\54\1\u009c\1\54\1\u009e\7\54\2\uffff\1\54\1\u00a7\1\u00a8\1\u00a9\1\u00aa\21\54\1\uffff\1\54\1\uffff\10\54\4\uffff\4\54\1\u00c9\2\54\1\u00cc\5\54\1\u00d2\2\54\1\u00d5\1\u00d6\3\54\1\u00da\1\u00db\1\54\1\u00dd\1\54\1\u00df\1\u00e0\1\u00e1\1\54\1\uffff\1\u00e3\1\54\1\uffff\1\u00e5\4\54\1\uffff\2\54\2\uffff\1\u00ec\2\54\2\uffff\1\54\1\uffff\1\u00f0\3\uffff\1\54\1\uffff\1\54\1\uffff\4\54\1\u00f7\1\54\2\uffff\2\54\1\uffff\1\54\1\u00fc\4\54\1\uffff\1\u0101\1\u0102\2\54\1\uffff\1\u0105\3\54\2\uffff\1\54\1\u010a\1\uffff\2\54\1\u010d\1\u010e\1\uffff\1\u010f\1\54\3\uffff\1\u0111\1\uffff"; static final String DFA12_eofS = - "\u0107\uffff"; + "\u0112\uffff"; static final String DFA12_minS = - "\1\0\1\56\1\uffff\1\155\1\160\2\151\4\uffff\1\141\1\72\1\145\2\157\1\145\1\uffff\1\75\2\uffff\1\157\1\143\1\uffff\2\145\1\165\1\115\1\154\1\151\1\101\2\uffff\2\0\1\52\5\uffff\1\160\1\164\1\uffff\1\141\1\143\1\141\3\154\4\uffff\1\143\1\uffff\1\155\1\144\1\156\1\147\1\156\1\141\4\uffff\1\144\1\155\1\141\1\157\1\154\1\uffff\1\156\1\142\1\164\1\124\1\154\1\141\5\uffff\1\157\1\60\1\143\1\154\1\164\1\145\1\144\1\154\1\153\1\164\1\141\1\157\1\145\1\146\1\55\1\163\1\154\2\145\1\155\1\142\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\123\1\157\1\164\1\162\1\uffff\1\153\1\165\1\162\1\60\1\145\1\60\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\4\60\1\141\1\145\1\156\1\151\2\145\1\162\1\147\1\165\1\157\1\171\1\162\1\164\1\141\1\144\1\141\1\uffff\1\162\1\uffff\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\4\uffff\1\154\1\162\1\147\1\163\1\60\1\162\1\141\1\60\1\164\1\154\1\123\1\141\1\60\1\147\1\151\2\60\1\145\1\154\1\144\2\60\1\141\1\60\1\145\3\60\1\164\1\uffff\1\60\1\164\1\uffff\1\60\1\166\1\157\1\123\1\uffff\1\145\1\156\2\uffff\1\60\1\55\1\145\2\uffff\1\151\1\uffff\1\60\3\uffff\1\151\1\uffff\1\145\1\uffff\1\145\1\154\1\157\1\60\1\147\2\uffff\1\154\1\156\1\uffff\1\143\1\60\1\162\1\166\1\154\1\uffff\2\60\1\164\1\163\1\uffff\1\60\1\145\1\166\2\uffff\1\163\1\60\1\uffff\1\162\1\145\1\60\1\uffff\1\60\1\162\2\uffff\1\60\1\uffff"; + "\1\0\1\56\1\uffff\1\155\1\160\2\151\4\uffff\1\141\1\72\1\145\2\157\1\145\1\uffff\1\75\2\uffff\1\157\1\143\1\uffff\2\145\1\165\1\115\1\154\1\151\1\120\1\101\2\uffff\2\0\1\52\5\uffff\1\160\1\164\1\uffff\1\141\1\143\1\141\3\154\4\uffff\1\143\1\uffff\1\155\1\144\1\156\1\147\1\156\1\141\4\uffff\1\144\1\155\1\141\1\157\1\154\1\uffff\1\156\1\142\1\164\1\124\1\154\1\141\1\124\5\uffff\1\157\1\60\1\143\1\154\1\164\1\145\1\144\1\154\1\153\1\164\1\141\1\157\1\145\1\146\1\55\1\163\1\154\2\145\1\155\1\142\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\123\1\157\1\164\1\120\1\162\1\uffff\1\153\1\165\1\162\1\60\1\145\1\60\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\4\60\1\141\1\145\1\156\1\151\2\145\1\162\1\147\1\165\1\157\1\171\1\162\1\123\1\164\1\141\1\144\1\141\1\uffff\1\162\1\uffff\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\4\uffff\1\154\1\162\1\147\1\163\1\60\1\162\1\141\1\60\1\164\1\154\1\123\1\141\1\157\1\60\1\147\1\151\2\60\1\145\1\154\1\144\2\60\1\141\1\60\1\145\3\60\1\164\1\uffff\1\60\1\164\1\uffff\1\60\1\166\1\157\1\123\1\154\1\uffff\1\145\1\156\2\uffff\1\60\1\55\1\145\2\uffff\1\151\1\uffff\1\60\3\uffff\1\151\1\uffff\1\145\1\uffff\1\145\1\154\1\157\1\166\1\60\1\147\2\uffff\1\154\1\156\1\uffff\1\143\1\60\1\162\1\166\1\154\1\145\1\uffff\2\60\1\164\1\163\1\uffff\1\60\1\145\1\166\1\162\2\uffff\1\163\1\60\1\uffff\1\162\1\145\2\60\1\uffff\1\60\1\162\3\uffff\1\60\1\uffff"; static final String DFA12_maxS = - "\1\uffff\1\56\1\uffff\1\156\1\170\1\151\1\165\4\uffff\1\141\1\72\3\157\1\165\1\uffff\1\75\2\uffff\1\165\1\164\1\uffff\2\145\1\165\1\115\1\154\1\151\1\172\2\uffff\2\uffff\1\57\5\uffff\1\160\1\164\1\uffff\1\141\1\143\1\141\3\154\4\uffff\1\162\1\uffff\1\164\1\144\1\156\1\147\1\156\1\141\4\uffff\1\162\1\155\1\162\1\157\1\154\1\uffff\1\156\1\142\1\164\1\124\1\154\1\141\5\uffff\1\157\1\172\1\143\1\154\1\164\1\145\1\144\1\154\1\153\1\164\1\141\1\157\1\145\1\163\1\172\1\164\1\154\2\145\1\155\1\142\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\123\1\157\1\164\1\162\1\uffff\1\153\1\165\1\162\1\172\1\145\1\172\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\4\172\1\141\1\145\1\156\1\151\2\145\1\162\1\147\1\165\1\157\1\171\1\162\1\164\1\141\1\144\1\141\1\uffff\1\162\1\uffff\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\4\uffff\1\154\1\162\1\147\1\163\1\172\1\162\1\141\1\172\1\164\1\154\1\123\1\141\1\172\1\147\1\151\2\172\1\145\1\154\1\144\2\172\1\141\1\172\1\145\3\172\1\164\1\uffff\1\172\1\164\1\uffff\1\172\1\166\1\157\1\123\1\uffff\1\145\1\156\2\uffff\1\172\1\55\1\145\2\uffff\1\151\1\uffff\1\172\3\uffff\1\151\1\uffff\1\145\1\uffff\1\145\1\154\1\157\1\172\1\147\2\uffff\1\154\1\156\1\uffff\1\143\1\172\1\162\1\166\1\154\1\uffff\2\172\1\164\1\163\1\uffff\1\172\1\145\1\166\2\uffff\1\163\1\172\1\uffff\1\162\1\145\1\172\1\uffff\1\172\1\162\2\uffff\1\172\1\uffff"; + "\1\uffff\1\56\1\uffff\1\156\1\170\1\151\1\165\4\uffff\1\141\1\72\3\157\1\165\1\uffff\1\75\2\uffff\1\165\1\164\1\uffff\2\145\1\165\1\115\1\154\1\151\1\120\1\172\2\uffff\2\uffff\1\57\5\uffff\1\160\1\164\1\uffff\1\141\1\143\1\141\3\154\4\uffff\1\162\1\uffff\1\164\1\144\1\156\1\147\1\156\1\141\4\uffff\1\162\1\155\1\162\1\157\1\154\1\uffff\1\156\1\142\1\164\1\124\1\154\1\141\1\124\5\uffff\1\157\1\172\1\143\1\154\1\164\1\145\1\144\1\154\1\153\1\164\1\141\1\157\1\145\1\163\1\172\1\164\1\154\2\145\1\155\1\142\1\151\1\164\1\160\1\166\1\145\1\165\1\160\1\123\1\157\1\164\1\120\1\162\1\uffff\1\153\1\165\1\162\1\172\1\145\1\172\1\141\1\151\1\155\1\162\1\154\1\164\1\151\2\uffff\1\151\4\172\1\141\1\145\1\156\1\151\2\145\1\162\1\147\1\165\1\157\1\171\1\162\1\123\1\164\1\141\1\144\1\141\1\uffff\1\162\1\uffff\1\147\1\141\1\157\1\171\1\163\1\162\1\147\1\155\4\uffff\1\154\1\162\1\147\1\163\1\172\1\162\1\141\1\172\1\164\1\154\1\123\1\141\1\157\1\172\1\147\1\151\2\172\1\145\1\154\1\144\2\172\1\141\1\172\1\145\3\172\1\164\1\uffff\1\172\1\164\1\uffff\1\172\1\166\1\157\1\123\1\154\1\uffff\1\145\1\156\2\uffff\1\172\1\55\1\145\2\uffff\1\151\1\uffff\1\172\3\uffff\1\151\1\uffff\1\145\1\uffff\1\145\1\154\1\157\1\166\1\172\1\147\2\uffff\1\154\1\156\1\uffff\1\143\1\172\1\162\1\166\1\154\1\145\1\uffff\2\172\1\164\1\163\1\uffff\1\172\1\145\1\166\1\162\2\uffff\1\163\1\172\1\uffff\1\162\1\145\2\172\1\uffff\1\172\1\162\3\uffff\1\172\1\uffff"; static final String DFA12_acceptS = - "\2\uffff\1\2\4\uffff\1\7\1\10\1\11\1\12\6\uffff\1\26\1\uffff\1\30\1\31\2\uffff\1\36\7\uffff\1\60\1\61\3\uffff\1\65\1\66\1\37\1\1\1\2\2\uffff\1\60\6\uffff\1\7\1\10\1\11\1\12\1\uffff\1\15\6\uffff\1\26\1\27\1\30\1\31\5\uffff\1\36\6\uffff\1\61\1\62\1\63\1\64\1\65\40\uffff\1\33\15\uffff\1\23\1\47\25\uffff\1\6\1\uffff\1\54\10\uffff\1\44\1\34\1\32\1\52\35\uffff\1\40\2\uffff\1\46\4\uffff\1\3\2\uffff\1\5\1\17\3\uffff\1\25\1\20\1\uffff\1\22\1\uffff\1\53\1\43\1\35\1\uffff\1\45\1\uffff\1\51\5\uffff\1\13\1\42\2\uffff\1\24\5\uffff\1\4\4\uffff\1\41\3\uffff\1\14\1\16\2\uffff\1\55\3\uffff\1\50\2\uffff\1\21\1\56\1\uffff\1\57"; + "\2\uffff\1\2\4\uffff\1\7\1\10\1\11\1\12\6\uffff\1\26\1\uffff\1\30\1\31\2\uffff\1\36\10\uffff\1\61\1\62\3\uffff\1\66\1\67\1\37\1\1\1\2\2\uffff\1\61\6\uffff\1\7\1\10\1\11\1\12\1\uffff\1\15\6\uffff\1\26\1\27\1\30\1\31\5\uffff\1\36\7\uffff\1\62\1\63\1\64\1\65\1\66\41\uffff\1\33\15\uffff\1\23\1\47\26\uffff\1\6\1\uffff\1\54\10\uffff\1\44\1\34\1\32\1\52\36\uffff\1\40\2\uffff\1\46\5\uffff\1\3\2\uffff\1\5\1\17\3\uffff\1\25\1\20\1\uffff\1\22\1\uffff\1\53\1\43\1\35\1\uffff\1\45\1\uffff\1\51\6\uffff\1\13\1\42\2\uffff\1\24\6\uffff\1\4\4\uffff\1\41\4\uffff\1\14\1\16\2\uffff\1\55\4\uffff\1\50\2\uffff\1\60\1\21\1\56\1\uffff\1\57"; static final String DFA12_specialS = - "\1\1\40\uffff\1\2\1\0\u00e4\uffff}>"; + "\1\0\41\uffff\1\1\1\2\u00ee\uffff}>"; static final String[] DFA12_transitionS = { - "\11\45\2\44\2\45\1\44\22\45\1\44\1\45\1\41\1\21\3\45\1\42\2\45\1\27\1\22\1\11\1\2\1\1\1\43\12\40\1\14\1\45\1\23\1\7\1\24\2\45\1\34\21\37\1\33\2\37\1\35\4\37\3\45\1\36\1\37\1\45\2\37\1\16\1\31\1\4\1\6\1\30\1\37\1\3\2\37\1\17\1\15\1\25\1\32\1\13\1\37\1\20\1\26\2\37\1\5\4\37\1\10\1\45\1\12\uff82\45", - "\1\46", + "\11\46\2\45\2\46\1\45\22\46\1\45\1\46\1\42\1\21\3\46\1\43\2\46\1\27\1\22\1\11\1\2\1\1\1\44\12\41\1\14\1\46\1\23\1\7\1\24\2\46\1\34\21\40\1\33\1\36\1\40\1\35\4\40\3\46\1\37\1\40\1\46\2\40\1\16\1\31\1\4\1\6\1\30\1\40\1\3\2\40\1\17\1\15\1\25\1\32\1\13\1\40\1\20\1\26\2\40\1\5\4\40\1\10\1\46\1\12\uff82\46", + "\1\47", "", - "\1\51\1\52", - "\1\54\7\uffff\1\55", - "\1\56", - "\1\57\5\uffff\1\60\5\uffff\1\61", + "\1\52\1\53", + "\1\55\7\uffff\1\56", + "\1\57", + "\1\60\5\uffff\1\61\5\uffff\1\62", "", "", "", "", - "\1\66", "\1\67", - "\1\70\11\uffff\1\71", - "\1\72", + "\1\70", + "\1\71\11\uffff\1\72", "\1\73", - "\1\75\17\uffff\1\74", + "\1\74", + "\1\76\17\uffff\1\75", "", - "\1\77", + "\1\100", "", "", - "\1\102\5\uffff\1\103", - "\1\105\13\uffff\1\106\4\uffff\1\104", + "\1\103\5\uffff\1\104", + "\1\106\13\uffff\1\107\4\uffff\1\105", "", - "\1\110", "\1\111", "\1\112", "\1\113", "\1\114", "\1\115", - "\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\116", + "\1\117", + "\32\54\4\uffff\1\54\1\uffff\32\54", "", "", - "\0\117", - "\0\117", - "\1\120\4\uffff\1\121", + "\0\121", + "\0\121", + "\1\122\4\uffff\1\123", "", "", "", "", "", - "\1\123", - "\1\124", - "", "\1\125", "\1\126", + "", "\1\127", "\1\130", "\1\131", "\1\132", + "\1\133", + "\1\134", "", "", "", "", - "\1\133\16\uffff\1\134", + "\1\135\16\uffff\1\136", "", - "\1\136\6\uffff\1\135", - "\1\137", - "\1\140", + "\1\140\6\uffff\1\137", "\1\141", "\1\142", "\1\143", + "\1\144", + "\1\145", "", "", "", "", - "\1\144\11\uffff\1\145\3\uffff\1\146", - "\1\147", - "\1\151\20\uffff\1\150", - "\1\152", - "\1\153", - "", + "\1\146\11\uffff\1\147\3\uffff\1\150", + "\1\151", + "\1\153\20\uffff\1\152", "\1\154", "\1\155", + "", "\1\156", "\1\157", "\1\160", "\1\161", + "\1\162", + "\1\163", + "\1\164", "", "", "", "", "", - "\1\162", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\164", "\1\165", - "\1\166", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\167", "\1\170", "\1\171", @@ -2055,12 +2083,12 @@ public void mTokens() throws RecognitionException { "\1\174", "\1\175", "\1\176", - "\1\u0080\14\uffff\1\177", - "\1\u0081\2\uffff\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\u0084\1\u0083", - "\1\u0085", - "\1\u0086", - "\1\u0087", + "\1\177", + "\1\u0080", + "\1\u0081", + "\1\u0083\14\uffff\1\u0082", + "\1\u0084\2\uffff\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\1\u0087\1\u0086", "\1\u0088", "\1\u0089", "\1\u008a", @@ -2074,31 +2102,31 @@ public void mTokens() throws RecognitionException { "\1\u0092", "\1\u0093", "\1\u0094", - "", "\1\u0095", "\1\u0096", "\1\u0097", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u0098", + "", "\1\u0099", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u009a", "\1\u009b", - "\1\u009c", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u009d", - "\1\u009e", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u009f", "\1\u00a0", "\1\u00a1", + "\1\u00a2", + "\1\u00a3", + "\1\u00a4", + "\1\u00a5", "", "", - "\1\u00a2", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\u00a7", - "\1\u00a8", - "\1\u00a9", - "\1\u00aa", + "\1\u00a6", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00ab", "\1\u00ac", "\1\u00ad", @@ -2111,116 +2139,128 @@ public void mTokens() throws RecognitionException { "\1\u00b4", "\1\u00b5", "\1\u00b6", - "", "\1\u00b7", - "", "\1\u00b8", "\1\u00b9", "\1\u00ba", "\1\u00bb", + "", "\1\u00bc", + "", "\1\u00bd", "\1\u00be", "\1\u00bf", - "", - "", - "", - "", "\1\u00c0", "\1\u00c1", "\1\u00c2", "\1\u00c3", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00c4", + "", + "", + "", + "", "\1\u00c5", "\1\u00c6", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00c7", "\1\u00c8", - "\1\u00c9", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00ca", "\1\u00cb", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00cd", "\1\u00ce", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00cf", + "\1\u00d0", "\1\u00d1", - "\1\u00d2", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00d3", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\u00d6", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00d4", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\1\u00d7", "\1\u00d8", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00d9", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00dc", - "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00de", - "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\u00e0", - "\1\u00e1", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00e2", "", - "\1\u00e3", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00e4", "", - "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00e6", "\1\u00e7", - "", - "", "\1\u00e8", - "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "", - "", + "\1\u00e9", "", "\1\u00ea", - "", "\1\u00eb", "", - "\1\u00ec", + "", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00ed", "\1\u00ee", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\u00f0", + "", + "", + "\1\u00ef", + "", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "", "", "", "\1\u00f1", + "", "\1\u00f2", "", "\1\u00f3", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00f4", "\1\u00f5", "\1\u00f6", - "\1\u00f7", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\1\u00f8", + "", "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00f9", "\1\u00fa", - "\1\u00fb", "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\1\u00fb", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "\1\u00fd", "\1\u00fe", + "\1\u00ff", + "\1\u0100", "", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\1\u0103", + "\1\u0104", "", - "\1\u00ff", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\1\u0106", + "\1\u0107", + "\1\u0108", + "", + "", + "\1\u0109", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "", + "\1\u010b", + "\1\u010c", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "", - "\1\u0101", - "\1\u0102", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", + "\1\u0110", "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", - "\1\u0105", "", "", - "\12\53\7\uffff\32\53\4\uffff\1\53\1\uffff\32\53", + "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54", "" }; @@ -2254,23 +2294,13 @@ public DFA12(BaseRecognizer recognizer) { this.transition = DFA12_transition; } public String getDescription() { - return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; + return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { IntStream input = _input; int _s = s; switch ( s ) { case 0 : - int LA12_34 = input.LA(1); - - s = -1; - if ( ((LA12_34>='\u0000' && LA12_34<='\uFFFF')) ) {s = 79;} - - else s = 37; - - if ( s>=0 ) return s; - break; - case 1 : int LA12_0 = input.LA(1); s = -1; @@ -2332,31 +2362,43 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc else if ( (LA12_0=='V') ) {s = 29;} - else if ( (LA12_0=='^') ) {s = 30;} + else if ( (LA12_0=='T') ) {s = 30;} + + else if ( (LA12_0=='^') ) {s = 31;} - else if ( ((LA12_0>='B' && LA12_0<='R')||(LA12_0>='T' && LA12_0<='U')||(LA12_0>='W' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='b')||LA12_0=='h'||(LA12_0>='j' && LA12_0<='k')||LA12_0=='q'||(LA12_0>='t' && LA12_0<='u')||(LA12_0>='w' && LA12_0<='z')) ) {s = 31;} + else if ( ((LA12_0>='B' && LA12_0<='R')||LA12_0=='U'||(LA12_0>='W' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='b')||LA12_0=='h'||(LA12_0>='j' && LA12_0<='k')||LA12_0=='q'||(LA12_0>='t' && LA12_0<='u')||(LA12_0>='w' && LA12_0<='z')) ) {s = 32;} - else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 32;} + else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 33;} - else if ( (LA12_0=='\"') ) {s = 33;} + else if ( (LA12_0=='\"') ) {s = 34;} - else if ( (LA12_0=='\'') ) {s = 34;} + else if ( (LA12_0=='\'') ) {s = 35;} - else if ( (LA12_0=='/') ) {s = 35;} + else if ( (LA12_0=='/') ) {s = 36;} - else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 36;} + else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 37;} + + else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='$' && LA12_0<='&')||(LA12_0>='(' && LA12_0<=')')||LA12_0==';'||(LA12_0>='?' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 38;} + + if ( s>=0 ) return s; + break; + case 1 : + int LA12_34 = input.LA(1); + + s = -1; + if ( ((LA12_34>='\u0000' && LA12_34<='\uFFFF')) ) {s = 81;} - else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='$' && LA12_0<='&')||(LA12_0>='(' && LA12_0<=')')||LA12_0==';'||(LA12_0>='?' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 37;} + else s = 38; if ( s>=0 ) return s; break; case 2 : - int LA12_33 = input.LA(1); + int LA12_35 = input.LA(1); s = -1; - if ( ((LA12_33>='\u0000' && LA12_33<='\uFFFF')) ) {s = 79;} + if ( ((LA12_35>='\u0000' && LA12_35<='\uFFFF')) ) {s = 81;} - else s = 37; + else s = 38; if ( s>=0 ) return s; break; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationParser.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationParser.java index 015e5da90..2d03a3fbb 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationParser.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/parser/antlr/internal/InternalApplicationConfigurationParser.java @@ -22,7 +22,7 @@ @SuppressWarnings("all") public class InternalApplicationConfigurationParser extends AbstractInternalAntlrParser { public static final String[] tokenNames = new String[] { - "", "", "", "", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'.'", "'-'", "'import'", "'epackage'", "'viatra'", "'file'", "'='", "'{'", "','", "'}'", "'package'", "'excluding'", "'::'", "'metamodel'", "'folder'", "'models'", "'constraints'", "'config'", "'log-level'", "'runtime'", "'memory'", "'#'", "'+='", "'<'", "'>'", "'node'", "'int'", "'real'", "'string'", "'*'", "'..'", "'scope'", "'generate'", "'partial-model'", "'number'", "'runs'", "'solver'", "'debug'", "'log'", "'statistics'", "'output'", "'none'", "'normal'", "'full'", "'SMTSolver'", "'AlloySolver'", "'ViatraSolver'" + "", "", "", "", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'.'", "'-'", "'import'", "'epackage'", "'viatra'", "'file'", "'='", "'{'", "','", "'}'", "'package'", "'excluding'", "'::'", "'metamodel'", "'folder'", "'models'", "'constraints'", "'config'", "'log-level'", "'runtime'", "'memory'", "'#'", "'+='", "'<'", "'>'", "'node'", "'int'", "'real'", "'string'", "'*'", "'..'", "'scope'", "'generate'", "'partial-model'", "'number'", "'runs'", "'solver'", "'debug'", "'log'", "'statistics'", "'output'", "'none'", "'normal'", "'full'", "'SMTSolver'", "'AlloySolver'", "'ViatraSolver'", "'TPTPSolver'" }; public static final int T__50=50; public static final int T__19=19; @@ -37,6 +37,7 @@ public class InternalApplicationConfigurationParser extends AbstractInternalAntl public static final int T__13=13; public static final int T__57=57; public static final int T__14=14; + public static final int T__58=58; public static final int T__51=51; public static final int T__52=52; public static final int T__53=53; @@ -11403,23 +11404,24 @@ public final Enumerator ruleDocumentLevelSpecification() throws RecognitionExcep // $ANTLR start "ruleSolver" - // InternalApplicationConfiguration.g:4257:1: ruleSolver returns [Enumerator current=null] : ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) ) ; + // InternalApplicationConfiguration.g:4257:1: ruleSolver returns [Enumerator current=null] : ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) | (enumLiteral_3= 'TPTPSolver' ) ) ; public final Enumerator ruleSolver() throws RecognitionException { Enumerator current = null; Token enumLiteral_0=null; Token enumLiteral_1=null; Token enumLiteral_2=null; + Token enumLiteral_3=null; enterRule(); try { - // InternalApplicationConfiguration.g:4263:2: ( ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) ) ) - // InternalApplicationConfiguration.g:4264:2: ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) ) + // InternalApplicationConfiguration.g:4263:2: ( ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) | (enumLiteral_3= 'TPTPSolver' ) ) ) + // InternalApplicationConfiguration.g:4264:2: ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) | (enumLiteral_3= 'TPTPSolver' ) ) { - // InternalApplicationConfiguration.g:4264:2: ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) ) - int alt56=3; + // InternalApplicationConfiguration.g:4264:2: ( (enumLiteral_0= 'SMTSolver' ) | (enumLiteral_1= 'AlloySolver' ) | (enumLiteral_2= 'ViatraSolver' ) | (enumLiteral_3= 'TPTPSolver' ) ) + int alt56=4; switch ( input.LA(1) ) { case 55: { @@ -11436,6 +11438,11 @@ public final Enumerator ruleSolver() throws RecognitionException { alt56=3; } break; + case 58: + { + alt56=4; + } + break; default: NoViableAltException nvae = new NoViableAltException("", 56, 0, input); @@ -11493,6 +11500,23 @@ public final Enumerator ruleSolver() throws RecognitionException { } + } + break; + case 4 : + // InternalApplicationConfiguration.g:4289:3: (enumLiteral_3= 'TPTPSolver' ) + { + // InternalApplicationConfiguration.g:4289:3: (enumLiteral_3= 'TPTPSolver' ) + // InternalApplicationConfiguration.g:4290:4: enumLiteral_3= 'TPTPSolver' + { + enumLiteral_3=(Token)match(input,58,FOLLOW_2); + + current = grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3().getEnumLiteral().getInstance(); + newLeafNode(enumLiteral_3, grammarAccess.getSolverAccess().getTPTPSolverEnumLiteralDeclaration_3()); + + + } + + } break; @@ -11655,6 +11679,6 @@ public int specialStateTransition(int s, IntStream _input) throws NoViableAltExc public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000100040L}); public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x000FF40019100000L}); public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000040010L}); - public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0380000000000000L}); + public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0780000000000000L}); } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/scoping/AbstractApplicationConfigurationScopeProvider.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/scoping/AbstractApplicationConfigurationScopeProvider.java index 045846b5c..2e7de4fc1 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/scoping/AbstractApplicationConfigurationScopeProvider.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/scoping/AbstractApplicationConfigurationScopeProvider.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.scoping; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSemanticSequencer.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSemanticSequencer.java index 96e5a0e21..ff341a50b 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSemanticSequencer.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSemanticSequencer.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.serializer; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSyntacticSequencer.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSyntacticSequencer.java index 098fe405b..948f728aa 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSyntacticSequencer.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/serializer/ApplicationConfigurationSyntacticSequencer.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.serializer; diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/services/ApplicationConfigurationGrammarAccess.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/services/ApplicationConfigurationGrammarAccess.java index 47166823c..cdcafecb0 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/services/ApplicationConfigurationGrammarAccess.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/services/ApplicationConfigurationGrammarAccess.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.services; @@ -1471,7 +1471,7 @@ public class ClassTypeScopeElements extends AbstractParserRuleElementFinder { //ClassReference public RuleCall getTypeClassReferenceParserRuleCall_1_0() { return cTypeClassReferenceParserRuleCall_1_0; } - //setsNew?='+=' | setsSum?='=' + //(setsNew?='+=' | setsSum?='=') public Alternatives getAlternatives_2() { return cAlternatives_2; } //setsNew?='+=' @@ -1486,7 +1486,7 @@ public class ClassTypeScopeElements extends AbstractParserRuleElementFinder { //'=' public Keyword getSetsSumEqualsSignKeyword_2_1_0() { return cSetsSumEqualsSignKeyword_2_1_0; } - //number=ExactNumber | number=IntervallNumber + //(number=ExactNumber | number=IntervallNumber) public Alternatives getAlternatives_3() { return cAlternatives_3; } //number=ExactNumber @@ -1534,7 +1534,7 @@ public class ObjectTypeScopeElements extends AbstractParserRuleElementFinder { //ObjectReference public RuleCall getTypeObjectReferenceParserRuleCall_1_0() { return cTypeObjectReferenceParserRuleCall_1_0; } - //setsNew?='+=' | setsSum?='=' + //(setsNew?='+=' | setsSum?='=') public Alternatives getAlternatives_2() { return cAlternatives_2; } //setsNew?='+=' @@ -1549,7 +1549,7 @@ public class ObjectTypeScopeElements extends AbstractParserRuleElementFinder { //'=' public Keyword getSetsSumEqualsSignKeyword_2_1_0() { return cSetsSumEqualsSignKeyword_2_1_0; } - //number=ExactNumber | number=IntervallNumber + //(number=ExactNumber | number=IntervallNumber) public Alternatives getAlternatives_3() { return cAlternatives_3; } //number=ExactNumber @@ -1601,7 +1601,7 @@ public class IntegerTypeScopeElements extends AbstractParserRuleElementFinder { //IntegerReference public RuleCall getTypeIntegerReferenceParserRuleCall_1_0() { return cTypeIntegerReferenceParserRuleCall_1_0; } - //setsNew?='+=' | setsSum?='=' + //(setsNew?='+=' | setsSum?='=') public Alternatives getAlternatives_2() { return cAlternatives_2; } //setsNew?='+=' @@ -1616,7 +1616,7 @@ public class IntegerTypeScopeElements extends AbstractParserRuleElementFinder { //'=' public Keyword getSetsSumEqualsSignKeyword_2_1_0() { return cSetsSumEqualsSignKeyword_2_1_0; } - //number=ExactNumber | number=IntervallNumber | number=IntEnumberation + //(number=ExactNumber | number=IntervallNumber | number=IntEnumberation) public Alternatives getAlternatives_3() { return cAlternatives_3; } //number=ExactNumber @@ -1674,7 +1674,7 @@ public class RealTypeScopeElements extends AbstractParserRuleElementFinder { //RealReference public RuleCall getTypeRealReferenceParserRuleCall_1_0() { return cTypeRealReferenceParserRuleCall_1_0; } - //setsNew?='+=' | setsSum?='=' + //(setsNew?='+=' | setsSum?='=') public Alternatives getAlternatives_2() { return cAlternatives_2; } //setsNew?='+=' @@ -1689,7 +1689,7 @@ public class RealTypeScopeElements extends AbstractParserRuleElementFinder { //'=' public Keyword getSetsSumEqualsSignKeyword_2_1_0() { return cSetsSumEqualsSignKeyword_2_1_0; } - //number=ExactNumber | number=IntervallNumber | number=RealEnumeration + //(number=ExactNumber | number=IntervallNumber | number=RealEnumeration) public Alternatives getAlternatives_3() { return cAlternatives_3; } //number=ExactNumber @@ -1747,7 +1747,7 @@ public class StringTypeScopeElements extends AbstractParserRuleElementFinder { //StringReference public RuleCall getTypeStringReferenceParserRuleCall_1_0() { return cTypeStringReferenceParserRuleCall_1_0; } - //setsNew?='+=' | setsSum?='=' + //(setsNew?='+=' | setsSum?='=') public Alternatives getAlternatives_2() { return cAlternatives_2; } //setsNew?='+=' @@ -1762,7 +1762,7 @@ public class StringTypeScopeElements extends AbstractParserRuleElementFinder { //'=' public Keyword getSetsSumEqualsSignKeyword_2_1_0() { return cSetsSumEqualsSignKeyword_2_1_0; } - //number=ExactNumber | number=IntervallNumber | number=StringEnumeration + //(number=ExactNumber | number=IntervallNumber | number=StringEnumeration) public Alternatives getAlternatives_3() { return cAlternatives_3; } //number=ExactNumber @@ -2003,7 +2003,7 @@ public class IntervallNumberElements extends AbstractParserRuleElementFinder { //'..' public Keyword getFullStopFullStopKeyword_1() { return cFullStopFullStopKeyword_1; } - //maxNumber=INT | maxUnlimited?='*' + //(maxNumber=INT | maxUnlimited?='*') public Alternatives getAlternatives_2() { return cAlternatives_2; } //maxNumber=INT @@ -2346,11 +2346,11 @@ public class GenerationTaskElements extends AbstractParserRuleElementFinder { //'{' public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; } - //('metamodel' '=' metamodel=Metamodel)? & ('partial-model' '=' partialModel=PartialModel)? & ('constraints' '=' + //(('metamodel' '=' metamodel=Metamodel)? & ('partial-model' '=' partialModel=PartialModel)? & ('constraints' '=' //patterns=GraphPattern)? & ('scope' '=' scope=Scope)? & (numberSpecified?='number' '=' number=INT)? & //(runSpecified?='runs' '=' runs=INT)? & ('solver' '=' solver=Solver)? & ('config' '=' config=Config)? & ('debug' '=' //debugFolder=File)? & ('log' '=' targetLogFile=File)? & ('statistics' '=' targetStatisticsFile=File)? & ('output' '=' - //tagetFolder=File)? + //tagetFolder=File)?) public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; } //('metamodel' '=' metamodel=Metamodel)? @@ -2587,12 +2587,14 @@ public class SolverElements extends AbstractEnumRuleElementFinder { private final Keyword cAlloySolverAlloySolverKeyword_1_0 = (Keyword)cAlloySolverEnumLiteralDeclaration_1.eContents().get(0); private final EnumLiteralDeclaration cViatraSolverEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2); private final Keyword cViatraSolverViatraSolverKeyword_2_0 = (Keyword)cViatraSolverEnumLiteralDeclaration_2.eContents().get(0); + private final EnumLiteralDeclaration cTPTPSolverEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3); + private final Keyword cTPTPSolverTPTPSolverKeyword_3_0 = (Keyword)cTPTPSolverEnumLiteralDeclaration_3.eContents().get(0); //enum Solver: - // SMTSolver | AlloySolver | ViatraSolver; + // SMTSolver | AlloySolver | ViatraSolver | TPTPSolver; public EnumRule getRule() { return rule; } - //SMTSolver | AlloySolver | ViatraSolver + //SMTSolver | AlloySolver | ViatraSolver | TPTPSolver public Alternatives getAlternatives() { return cAlternatives; } //SMTSolver @@ -2612,6 +2614,12 @@ public class SolverElements extends AbstractEnumRuleElementFinder { //"ViatraSolver" public Keyword getViatraSolverViatraSolverKeyword_2_0() { return cViatraSolverViatraSolverKeyword_2_0; } + + //TPTPSolver + public EnumLiteralDeclaration getTPTPSolverEnumLiteralDeclaration_3() { return cTPTPSolverEnumLiteralDeclaration_3; } + + //"TPTPSolver" + public Keyword getTPTPSolverTPTPSolverKeyword_3_0() { return cTPTPSolverTPTPSolverKeyword_3_0; } } private final ConfigurationScriptElements pConfigurationScript; @@ -3263,7 +3271,7 @@ public ParserRule getConfigRule() { } //enum Solver: - // SMTSolver | AlloySolver | ViatraSolver; + // SMTSolver | AlloySolver | ViatraSolver | TPTPSolver; public SolverElements getSolverAccess() { return eSolver; } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/validation/AbstractApplicationConfigurationValidator.java b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/validation/AbstractApplicationConfigurationValidator.java index 0ba1447c5..ad783d330 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/validation/AbstractApplicationConfigurationValidator.java +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src-gen/hu/bme/mit/inf/dslreasoner/application/validation/AbstractApplicationConfigurationValidator.java @@ -1,5 +1,5 @@ /* - * generated by Xtext 2.12.0 + * generated by Xtext 2.21.0 */ package hu.bme.mit.inf.dslreasoner.application.validation; @@ -16,5 +16,4 @@ protected List getEPackages() { result.add(hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ApplicationConfigurationPackage.eINSTANCE); return result; } - } diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext index 6af317236..95dfe5a1d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext @@ -26,7 +26,7 @@ Import: EPackageImport | ViatraImport; EPackageImport: "import" "epackage" importedPackage=[ecore::EPackage|STRING]; ViatraImport: "import" "viatra" importedViatra=[viatra::PatternModel|STRING]; - + /////////////////////////////////////////////////// // Declaration /////////////////////////////////////////////////// @@ -95,8 +95,8 @@ GraphPattern: GraphPatternReference|PatternSpecification; ConfigSpecification: {ConfigSpecification}'{' (entries += ConfigEntry ("," entries += ConfigEntry)*)? '}'; -ConfigDeclaration : - 'config' name = ID specification = ConfigSpecification +ConfigDeclaration : + 'config' name = ID specification = ConfigSpecification ; ConfigEntry: DocumentationEntry | RuntimeEntry | MemoryEntry | CustomEntry; DocumentationEntry: "log-level" '=' level = DocumentLevelSpecification; enum DocumentLevelSpecification: none | normal | full; @@ -107,7 +107,7 @@ CustomEntry: key = STRING "=" value = STRING; ConfigReference: config = [ConfigDeclaration]; Config: ConfigSpecification | ConfigReference; -enum Solver: SMTSolver | AlloySolver | ViatraSolver; +enum Solver: SMTSolver | AlloySolver | ViatraSolver | TPTPSolver; ScopeSpecification: {ScopeSpecification} '{' (scopes += TypeScope (',' scopes += TypeScope)*)? diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend index 2fe69a47e..b2241fe29 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend @@ -15,31 +15,29 @@ import org.eclipse.xtext.xbase.lib.Functions.Function1 import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualiser import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.SolverConfiguration +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver +import java.util.prefs.BackingStoreException class SolverLoader { def loadSolver(Solver solver, Map config) { - switch(solver) { + switch (solver) { case ALLOY_SOLVER: return new AlloySolver case SMT_SOLVER: return new SMTSolver case VIATRA_SOLVER: return new ViatraReasoner + case TPTP_SOLVER: return new VampireSolver } } - - - - private def Optional getAsType( - Map config, - String key, - ScriptConsole console, - Function1 parser, - Class requestedType) - { - if(config.containsKey(key)) { + + private def Optional getAsType(Map config, String key, ScriptConsole console, + Function1 parser, Class requestedType) { + if (config.containsKey(key)) { val stringValue = config.get(key) - try{ + try { val parsedValue = parser.apply(stringValue) return Optional.of(parsedValue) - } catch(Exception e) { + } catch (Exception e) { console.writeError('''Unable to parse configuration value for "«key»" to «requestedType.simpleName»!''') return Optional::empty } @@ -47,103 +45,128 @@ class SolverLoader { return Optional::empty } } + private def getAsInteger(Map config, String key, ScriptConsole console) { - return getAsType(config,key,console,[x|Integer.parseInt(x)],Integer) + return getAsType(config, key, console, [x|Integer.parseInt(x)], Integer) } + private def getAsBoolean(Map config, String key, ScriptConsole console) { - return getAsType(config,key,console,[x|Boolean.parseBoolean(x)],Boolean) + return getAsType(config, key, console, [x|Boolean.parseBoolean(x)], Boolean) } + private def getAsDouble(Map config, String key, ScriptConsole console) { - return getAsType(config,key,console,[x|Double.parseDouble(x)],Double) + return getAsType(config, key, console, [x|Double.parseDouble(x)], Double) } - - def loadSolverConfig( - Solver solver, - Map config, - ScriptConsole console) - { - if(solver === Solver::ALLOY_SOLVER) { - return new AlloySolverConfiguration => [c| - config.getAsInteger("symmetry",console) - .ifPresent[c.symmetry = it] - config.getAsType("solver",console,[x|AlloyBackendSolver::valueOf(x)],AlloyBackendSolver) - .ifPresent[c.solver = it] + + def loadSolverConfig(Solver solver, Map config, ScriptConsole console) { + if (solver === Solver::ALLOY_SOLVER) { + return new AlloySolverConfiguration => [ c | + config.getAsInteger("symmetry", console).ifPresent[c.symmetry = it] + config.getAsType("solver", console, [x|AlloyBackendSolver::valueOf(x)], AlloyBackendSolver).ifPresent [ + c.solver = it + ] ] - } else if(solver === Solver::SMT_SOLVER) { - return new SmtSolverConfiguration => [c| - config.getAsBoolean("fixRandomSeed",console).ifPresent[c.fixRandomSeed = it] - config.getAsType("path",console,[it],String).ifPresent[c.solverPath = it] + } else if (solver === Solver::SMT_SOLVER) { + return new SmtSolverConfiguration => [ c | + config.getAsBoolean("fixRandomSeed", console).ifPresent[c.fixRandomSeed = it] + config.getAsType("path", console, [it], String).ifPresent[c.solverPath = it] ] - } else if(solver === Solver::VIATRA_SOLVER) { - return new ViatraReasonerConfiguration => [c| + } else if (solver === Solver::TPTP_SOLVER) { + return new VampireSolverConfiguration => [ c | + try { + val stringValue = config.get("solver") + c.solver = switch stringValue { + case "cvc4": BackendSolver::CVC4 + case "vampire": BackendSolver::VAMPIRE + case "vampire-local": BackendSolver::LOCVAMP + default: throw new Exception + } + } catch (Exception e) { + console.writeError('''Incorrect Solver specification, using default.''') + } + if (c.solver != BackendSolver::LOCVAMP) c.server = true + + ] + } else if (solver === Solver::VIATRA_SOLVER) { + return new ViatraReasonerConfiguration => [ c | c.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualiser - if(config.containsKey("diversity-range")) { + if (config.containsKey("diversity-range")) { val stringValue = config.get("diversity-range") - try{ + try { val range = Integer.parseInt(stringValue) c.diversityRequirement = new DiversityDescriptor => [ it.ensureDiversity = true it.range = range ] - } catch (NumberFormatException e) {console.writeError('''Malformed number format: «e.message»''')} + } catch (NumberFormatException e) { + console.writeError('''Malformed number format: «e.message»''') + } } - if(config.containsKey("numeric-solver-at-end")) { + if (config.containsKey("numeric-solver-at-end")) { val stringValue = config.get("numeric-solver-at-end") - if(stringValue.equals("true")) { + if (stringValue.equals("true")) { println("numeric-solver-at-end") c.runIntermediateNumericalConsistencyChecks = false } } - if(config.containsKey("fitness-punishSize")) { + if (config.containsKey("fitness-punishSize")) { val stringValue = config.get("fitness-punishSize") try { c.punishSize = Boolean.parseBoolean(stringValue) - } catch(Exception e) {} + } catch (Exception e) { + } } - if(config.containsKey("fitness-scope")) { + if (config.containsKey("fitness-scope")) { val stringValue = config.get("fitness-scope") try { c.scopeWeight = Integer.parseInt(stringValue) - } catch(Exception e) {} + } catch (Exception e) { + } } - if(config.containsKey("fitness-missing-containent")) { + if (config.containsKey("fitness-missing-containent")) { val stringValue = config.get("fitness-missing-containent") try { c.conaintmentWeight = Integer.parseInt(stringValue) - } catch(Exception e) {} + } catch (Exception e) { + } } - if(config.containsKey("fitness-missing-noncontainent")) { + if (config.containsKey("fitness-missing-noncontainent")) { val stringValue = config.get("fitness-missing-noncontainent") try { c.nonContainmentWeight = Integer.parseInt(stringValue) - } catch(Exception e) {} + } catch (Exception e) { + } } - if(config.containsKey("fitness-missing-wf")) { + if (config.containsKey("fitness-missing-wf")) { val stringValue = config.get("fitness-missing-wf") try { c.unfinishedWFWeight = Integer.parseInt(stringValue) - } catch(Exception e) {} + } catch (Exception e) { + } } - if(config.containsKey("fitness-objectCreationCosts")) { + if (config.containsKey("fitness-objectCreationCosts")) { val stringValue = config.get("fitness-objectCreationCosts") try { c.calculateObjectCreationCosts = Boolean.parseBoolean(stringValue) - } catch(Exception e) {} + } catch (Exception e) { + } } ] } else { throw new UnsupportedOperationException('''Unknown solver: «solver»''') } } - - def dispatch void setRunIndex(AlloySolverConfiguration config, Map parameters, int runIndex, ScriptConsole console) { - parameters.getAsBoolean("randomize",console).ifPresent[ - if(it) { - config.randomise = runIndex-1 + + def dispatch void setRunIndex(AlloySolverConfiguration config, Map parameters, int runIndex, + ScriptConsole console) { + parameters.getAsBoolean("randomize", console).ifPresent [ + if (it) { + config.randomise = runIndex - 1 } ] } - def dispatch void setRunIndex(LogicSolverConfiguration config, Map parameters, int runIndex, ScriptConsole console) { - + + def dispatch void setRunIndex(LogicSolverConfiguration config, Map parameters, int runIndex, + ScriptConsole console) { } -} \ No newline at end of file +} diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/start-application-umontreal.launch b/Application/hu.bme.mit.inf.dslreasoner.application/start-application-umontreal.launch new file mode 100644 index 000000000..abff69ee5 --- /dev/null +++ b/Application/hu.bme.mit.inf.dslreasoner.application/start-application-umontreal.launch @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/Function.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/Function.java index 5b484066c..0a4e6361d 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/Function.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/Function.java @@ -51,11 +51,23 @@ public interface Function extends FunctionalElement { * * @return the value of the 'Type' attribute. * @see functionalarchitecture.FunctionType + * @see #setType(FunctionType) * @see functionalarchitecture.FunctionalarchitecturePackage#getFunction_Type() - * @model required="true" transient="true" changeable="false" volatile="true" derived="true" + * @model required="true" transient="true" volatile="true" * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='hu.bme.mit.inf.dslreasoner.domains.transima.fam.type'" * @generated */ FunctionType getType(); + /** + * Sets the value of the '{@link functionalarchitecture.Function#getType Type}' attribute. + * + * + * @param value the new value of the 'Type' attribute. + * @see functionalarchitecture.FunctionType + * @see #getType() + * @generated + */ + void setType(FunctionType value); + } // Function diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalData.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalData.java index 39639f995..23b7b9a05 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalData.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalData.java @@ -15,6 +15,7 @@ *

    *
  • {@link functionalarchitecture.FunctionalData#getTerminator Terminator}
  • *
  • {@link functionalarchitecture.FunctionalData#getInterface Interface}
  • + *
  • {@link functionalarchitecture.FunctionalData#getValue Value}
  • *
* * @see functionalarchitecture.FunctionalarchitecturePackage#getFunctionalData() @@ -60,13 +61,13 @@ public interface FunctionalData extends EObject { *

* * @return the value of the 'Interface' container reference. - * @see #setInterface(FunctionalInterface) + * @see #setInterface(functionalarchitecture.FunctionalInterface) * @see functionalarchitecture.FunctionalarchitecturePackage#getFunctionalData_Interface() * @see functionalarchitecture.FunctionalInterface#getData * @model opposite="data" transient="false" * @generated */ - FunctionalInterface getInterface(); + functionalarchitecture.FunctionalInterface getInterface(); /** * Sets the value of the '{@link functionalarchitecture.FunctionalData#getInterface Interface}' container reference. @@ -76,6 +77,32 @@ public interface FunctionalData extends EObject { * @see #getInterface() * @generated */ - void setInterface(FunctionalInterface value); + void setInterface(functionalarchitecture.FunctionalInterface value); + + /** + * Returns the value of the 'Value' attribute. + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(int) + * @see functionalarchitecture.FunctionalarchitecturePackage#getFunctionalData_Value() + * @model required="true" + * @generated + */ + int getValue(); + + /** + * Sets the value of the '{@link functionalarchitecture.FunctionalData#getValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(int value); } // FunctionalData diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalElement.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalElement.java index f5a2ff19c..1fb9b9b81 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalElement.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalElement.java @@ -33,13 +33,13 @@ public interface FunctionalElement extends EObject { *

* * @return the value of the 'Interface' containment reference. - * @see #setInterface(FunctionalInterface) + * @see #setInterface(functionalarchitecture.FunctionalInterface) * @see functionalarchitecture.FunctionalarchitecturePackage#getFunctionalElement_Interface() * @see functionalarchitecture.FunctionalInterface#getElement * @model opposite="element" containment="true" * @generated */ - FunctionalInterface getInterface(); + functionalarchitecture.FunctionalInterface getInterface(); /** * Sets the value of the '{@link functionalarchitecture.FunctionalElement#getInterface Interface}' containment reference. @@ -49,7 +49,7 @@ public interface FunctionalElement extends EObject { * @see #getInterface() * @generated */ - void setInterface(FunctionalInterface value); + void setInterface(functionalarchitecture.FunctionalInterface value); /** * Returns the value of the 'Model' reference. @@ -62,7 +62,7 @@ public interface FunctionalElement extends EObject { * @return the value of the 'Model' reference. * @see #setModel(FunctionalArchitectureModel) * @see functionalarchitecture.FunctionalarchitecturePackage#getFunctionalElement_Model() - * @model required="true" transient="true" volatile="true" derived="true" + * @model required="true" transient="true" volatile="true" * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='hu.bme.mit.inf.dslreasoner.domains.transima.fam.model'" * @generated */ diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalarchitecturePackage.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalarchitecturePackage.java index ac0d910e7..dee2cc598 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalarchitecturePackage.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/FunctionalarchitecturePackage.java @@ -380,6 +380,15 @@ public interface FunctionalarchitecturePackage extends EPackage { */ int FUNCTIONAL_DATA__INTERFACE = 1; + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_DATA__VALUE = 2; + /** * The number of structural features of the 'Functional Data' class. * @@ -387,7 +396,7 @@ public interface FunctionalarchitecturePackage extends EPackage { * @generated * @ordered */ - int FUNCTIONAL_DATA_FEATURE_COUNT = 2; + int FUNCTIONAL_DATA_FEATURE_COUNT = 3; /** * The number of operations of the 'Functional Data' class. @@ -426,6 +435,15 @@ public interface FunctionalarchitecturePackage extends EPackage { */ int FUNCTIONAL_INPUT__INTERFACE = FUNCTIONAL_DATA__INTERFACE; + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INPUT__VALUE = FUNCTIONAL_DATA__VALUE; + /** * The feature id for the 'Incoming Links' reference list. * @@ -481,6 +499,15 @@ public interface FunctionalarchitecturePackage extends EPackage { */ int FUNCTIONAL_OUTPUT__INTERFACE = FUNCTIONAL_DATA__INTERFACE; + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_OUTPUT__VALUE = FUNCTIONAL_DATA__VALUE; + /** * The feature id for the 'Outgoing Links' containment reference list. * @@ -774,6 +801,17 @@ public interface FunctionalarchitecturePackage extends EPackage { */ EReference getFunctionalData_Interface(); + /** + * Returns the meta object for the attribute '{@link functionalarchitecture.FunctionalData#getValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see functionalarchitecture.FunctionalData#getValue() + * @see #getFunctionalData() + * @generated + */ + EAttribute getFunctionalData_Value(); + /** * Returns the meta object for enum '{@link functionalarchitecture.FunctionType Function Type}'. * @@ -1017,6 +1055,14 @@ interface Literals { */ EReference FUNCTIONAL_DATA__INTERFACE = eINSTANCE.getFunctionalData_Interface(); + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute FUNCTIONAL_DATA__VALUE = eINSTANCE.getFunctionalData_Value(); + /** * The meta object literal for the '{@link functionalarchitecture.FunctionType Function Type}' enum. * diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionImpl.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionImpl.java index 46736c8cc..2262094e4 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionImpl.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionImpl.java @@ -95,6 +95,15 @@ public FunctionType getType() { return (FunctionType)TYPE__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false); } + /** + * + * + * @generated + */ + public void setType(FunctionType newType) { + TYPE__ESETTING_DELEGATE.dynamicSet(this, null, 0, newType); + } + /** * * @@ -153,6 +162,9 @@ public void eSet(int featureID, Object newValue) { getSubElements().clear(); getSubElements().addAll((Collection)newValue); return; + case FunctionalarchitecturePackage.FUNCTION__TYPE: + setType((FunctionType)newValue); + return; } super.eSet(featureID, newValue); } @@ -168,6 +180,9 @@ public void eUnset(int featureID) { case FunctionalarchitecturePackage.FUNCTION__SUB_ELEMENTS: getSubElements().clear(); return; + case FunctionalarchitecturePackage.FUNCTION__TYPE: + TYPE__ESETTING_DELEGATE.dynamicUnset(this, null, 0); + return; } super.eUnset(featureID); } diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalDataImpl.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalDataImpl.java index 10937e8d5..ecab54af7 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalDataImpl.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalDataImpl.java @@ -4,7 +4,6 @@ import functionalarchitecture.FAMTerminator; import functionalarchitecture.FunctionalData; -import functionalarchitecture.FunctionalInterface; import functionalarchitecture.FunctionalarchitecturePackage; import org.eclipse.emf.common.notify.Notification; @@ -28,6 +27,7 @@ *
    *
  • {@link functionalarchitecture.impl.FunctionalDataImpl#getTerminator Terminator}
  • *
  • {@link functionalarchitecture.impl.FunctionalDataImpl#getInterface Interface}
  • + *
  • {@link functionalarchitecture.impl.FunctionalDataImpl#getValue Value}
  • *
* * @generated @@ -43,6 +43,25 @@ public abstract class FunctionalDataImpl extends MinimalEObjectImpl.Container im */ protected FAMTerminator terminator; + /** + * The default value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final int VALUE_EDEFAULT = 0; + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected int value = VALUE_EDEFAULT; + /** * * @@ -110,9 +129,9 @@ else if (eNotificationRequired()) * * @generated */ - public FunctionalInterface getInterface() { + public functionalarchitecture.FunctionalInterface getInterface() { if (eContainerFeatureID() != FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE) return null; - return (FunctionalInterface)eInternalContainer(); + return (functionalarchitecture.FunctionalInterface)eInternalContainer(); } /** @@ -120,7 +139,7 @@ public FunctionalInterface getInterface() { * * @generated */ - public NotificationChain basicSetInterface(FunctionalInterface newInterface, NotificationChain msgs) { + public NotificationChain basicSetInterface(functionalarchitecture.FunctionalInterface newInterface, NotificationChain msgs) { msgs = eBasicSetContainer((InternalEObject)newInterface, FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE, msgs); return msgs; } @@ -130,7 +149,7 @@ public NotificationChain basicSetInterface(FunctionalInterface newInterface, Not * * @generated */ - public void setInterface(FunctionalInterface newInterface) { + public void setInterface(functionalarchitecture.FunctionalInterface newInterface) { if (newInterface != eInternalContainer() || (eContainerFeatureID() != FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE && newInterface != null)) { if (EcoreUtil.isAncestor(this, newInterface)) throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); @@ -138,7 +157,7 @@ public void setInterface(FunctionalInterface newInterface) { if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs); if (newInterface != null) - msgs = ((InternalEObject)newInterface).eInverseAdd(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__DATA, FunctionalInterface.class, msgs); + msgs = ((InternalEObject)newInterface).eInverseAdd(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__DATA, functionalarchitecture.FunctionalInterface.class, msgs); msgs = basicSetInterface(newInterface, msgs); if (msgs != null) msgs.dispatch(); } @@ -146,6 +165,27 @@ else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE, newInterface, newInterface)); } + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public void setValue(int newValue) { + int oldValue = value; + value = newValue; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, FunctionalarchitecturePackage.FUNCTIONAL_DATA__VALUE, oldValue, value)); + } + /** * * @@ -161,7 +201,7 @@ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, No case FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE: if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs); - return basicSetInterface((FunctionalInterface)otherEnd, msgs); + return basicSetInterface((functionalarchitecture.FunctionalInterface)otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); } @@ -191,7 +231,7 @@ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { switch (eContainerFeatureID()) { case FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE: - return eInternalContainer().eInverseRemove(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__DATA, FunctionalInterface.class, msgs); + return eInternalContainer().eInverseRemove(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__DATA, functionalarchitecture.FunctionalInterface.class, msgs); } return super.eBasicRemoveFromContainerFeature(msgs); } @@ -208,6 +248,8 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) { return getTerminator(); case FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE: return getInterface(); + case FunctionalarchitecturePackage.FUNCTIONAL_DATA__VALUE: + return getValue(); } return super.eGet(featureID, resolve, coreType); } @@ -224,7 +266,10 @@ public void eSet(int featureID, Object newValue) { setTerminator((FAMTerminator)newValue); return; case FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE: - setInterface((FunctionalInterface)newValue); + setInterface((functionalarchitecture.FunctionalInterface)newValue); + return; + case FunctionalarchitecturePackage.FUNCTIONAL_DATA__VALUE: + setValue((Integer)newValue); return; } super.eSet(featureID, newValue); @@ -242,7 +287,10 @@ public void eUnset(int featureID) { setTerminator((FAMTerminator)null); return; case FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE: - setInterface((FunctionalInterface)null); + setInterface((functionalarchitecture.FunctionalInterface)null); + return; + case FunctionalarchitecturePackage.FUNCTIONAL_DATA__VALUE: + setValue(VALUE_EDEFAULT); return; } super.eUnset(featureID); @@ -260,8 +308,26 @@ public boolean eIsSet(int featureID) { return terminator != null; case FunctionalarchitecturePackage.FUNCTIONAL_DATA__INTERFACE: return getInterface() != null; + case FunctionalarchitecturePackage.FUNCTIONAL_DATA__VALUE: + return value != VALUE_EDEFAULT; } return super.eIsSet(featureID); } + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (value: "); + result.append(value); + result.append(')'); + return result.toString(); + } + } //FunctionalDataImpl diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalElementImpl.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalElementImpl.java index 809e9ed53..090ccd320 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalElementImpl.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalElementImpl.java @@ -5,7 +5,6 @@ import functionalarchitecture.Function; import functionalarchitecture.FunctionalArchitectureModel; import functionalarchitecture.FunctionalElement; -import functionalarchitecture.FunctionalInterface; import functionalarchitecture.FunctionalarchitecturePackage; import org.eclipse.emf.common.notify.Notification; @@ -44,7 +43,7 @@ public abstract class FunctionalElementImpl extends MinimalEObjectImpl.Container * @generated * @ordered */ - protected FunctionalInterface interface_; + protected functionalarchitecture.FunctionalInterface interface_; /** * The cached setting delegate for the '{@link #getModel() Model}' reference. @@ -80,7 +79,7 @@ protected EClass eStaticClass() { * * @generated */ - public FunctionalInterface getInterface() { + public functionalarchitecture.FunctionalInterface getInterface() { return interface_; } @@ -89,8 +88,8 @@ public FunctionalInterface getInterface() { * * @generated */ - public NotificationChain basicSetInterface(FunctionalInterface newInterface, NotificationChain msgs) { - FunctionalInterface oldInterface = interface_; + public NotificationChain basicSetInterface(functionalarchitecture.FunctionalInterface newInterface, NotificationChain msgs) { + functionalarchitecture.FunctionalInterface oldInterface = interface_; interface_ = newInterface; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__INTERFACE, oldInterface, newInterface); @@ -104,13 +103,13 @@ public NotificationChain basicSetInterface(FunctionalInterface newInterface, Not * * @generated */ - public void setInterface(FunctionalInterface newInterface) { + public void setInterface(functionalarchitecture.FunctionalInterface newInterface) { if (newInterface != interface_) { NotificationChain msgs = null; if (interface_ != null) - msgs = ((InternalEObject)interface_).eInverseRemove(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__ELEMENT, FunctionalInterface.class, msgs); + msgs = ((InternalEObject)interface_).eInverseRemove(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__ELEMENT, functionalarchitecture.FunctionalInterface.class, msgs); if (newInterface != null) - msgs = ((InternalEObject)newInterface).eInverseAdd(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__ELEMENT, FunctionalInterface.class, msgs); + msgs = ((InternalEObject)newInterface).eInverseAdd(this, FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE__ELEMENT, functionalarchitecture.FunctionalInterface.class, msgs); msgs = basicSetInterface(newInterface, msgs); if (msgs != null) msgs.dispatch(); } @@ -197,7 +196,7 @@ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, No case FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__INTERFACE: if (interface_ != null) msgs = ((InternalEObject)interface_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__INTERFACE, null, msgs); - return basicSetInterface((FunctionalInterface)otherEnd, msgs); + return basicSetInterface((functionalarchitecture.FunctionalInterface)otherEnd, msgs); case FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__PARENT: if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs); @@ -264,7 +263,7 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) { public void eSet(int featureID, Object newValue) { switch (featureID) { case FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__INTERFACE: - setInterface((FunctionalInterface)newValue); + setInterface((functionalarchitecture.FunctionalInterface)newValue); return; case FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__MODEL: setModel((FunctionalArchitectureModel)newValue); @@ -285,7 +284,7 @@ public void eSet(int featureID, Object newValue) { public void eUnset(int featureID) { switch (featureID) { case FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__INTERFACE: - setInterface((FunctionalInterface)null); + setInterface((functionalarchitecture.FunctionalInterface)null); return; case FunctionalarchitecturePackage.FUNCTIONAL_ELEMENT__MODEL: setModel((FunctionalArchitectureModel)null); diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalInterfaceImpl.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalInterfaceImpl.java index 20151886e..be8f8700b 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalInterfaceImpl.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalInterfaceImpl.java @@ -4,7 +4,6 @@ import functionalarchitecture.FunctionalData; import functionalarchitecture.FunctionalElement; -import functionalarchitecture.FunctionalInterface; import functionalarchitecture.FunctionalarchitecturePackage; import java.util.Collection; @@ -38,7 +37,7 @@ * * @generated */ -public class FunctionalInterfaceImpl extends MinimalEObjectImpl.Container implements FunctionalInterface { +public class FunctionalInterfaceImpl extends MinimalEObjectImpl.Container implements functionalarchitecture.FunctionalInterface { /** * The cached value of the '{@link #getData() Data}' containment reference list. * diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitectureFactoryImpl.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitectureFactoryImpl.java index 56ecfa257..726f7a320 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitectureFactoryImpl.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitectureFactoryImpl.java @@ -2,9 +2,15 @@ */ package functionalarchitecture.impl; -import functionalarchitecture.*; -import functionalarchitecture.FunctionalInterface; - +import functionalarchitecture.FAMTerminator; +import functionalarchitecture.Function; +import functionalarchitecture.FunctionType; +import functionalarchitecture.FunctionalArchitectureModel; +import functionalarchitecture.FunctionalInput; +import functionalarchitecture.FunctionalOutput; +import functionalarchitecture.FunctionalarchitectureFactory; +import functionalarchitecture.FunctionalarchitecturePackage; +import functionalarchitecture.InformationLink; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EObject; @@ -145,7 +151,7 @@ public InformationLink createInformationLink() { * * @generated */ - public FunctionalInterface createFunctionalInterface() { + public functionalarchitecture.FunctionalInterface createFunctionalInterface() { FunctionalInterfaceImpl functionalInterface = new FunctionalInterfaceImpl(); return functionalInterface; } diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitecturePackageImpl.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitecturePackageImpl.java index 22c15533f..110f3d6c5 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitecturePackageImpl.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/impl/FunctionalarchitecturePackageImpl.java @@ -9,7 +9,6 @@ import functionalarchitecture.FunctionalData; import functionalarchitecture.FunctionalElement; import functionalarchitecture.FunctionalInput; -import functionalarchitecture.FunctionalInterface; import functionalarchitecture.FunctionalOutput; import functionalarchitecture.FunctionalarchitectureFactory; import functionalarchitecture.FunctionalarchitecturePackage; @@ -128,7 +127,7 @@ private FunctionalarchitecturePackageImpl() { /** * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. - * + * *

This method is used to initialize {@link FunctionalarchitecturePackage#eINSTANCE} when that field is accessed. * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. * @@ -142,7 +141,8 @@ public static FunctionalarchitecturePackage init() { if (isInited) return (FunctionalarchitecturePackage)EPackage.Registry.INSTANCE.getEPackage(FunctionalarchitecturePackage.eNS_URI); // Obtain or create and register package - FunctionalarchitecturePackageImpl theFunctionalarchitecturePackage = (FunctionalarchitecturePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FunctionalarchitecturePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FunctionalarchitecturePackageImpl()); + Object registeredFunctionalarchitecturePackage = EPackage.Registry.INSTANCE.get(eNS_URI); + FunctionalarchitecturePackageImpl theFunctionalarchitecturePackage = registeredFunctionalarchitecturePackage instanceof FunctionalarchitecturePackageImpl ? (FunctionalarchitecturePackageImpl)registeredFunctionalarchitecturePackage : new FunctionalarchitecturePackageImpl(); isInited = true; @@ -155,7 +155,6 @@ public static FunctionalarchitecturePackage init() { // Mark meta-data to indicate it can't be changed theFunctionalarchitecturePackage.freeze(); - // Update the registry and return the package EPackage.Registry.INSTANCE.put(FunctionalarchitecturePackage.eNS_URI, theFunctionalarchitecturePackage); return theFunctionalarchitecturePackage; @@ -377,6 +376,15 @@ public EReference getFunctionalData_Interface() { return (EReference)functionalDataEClass.getEStructuralFeatures().get(1); } + /** + * + * + * @generated + */ + public EAttribute getFunctionalData_Value() { + return (EAttribute)functionalDataEClass.getEStructuralFeatures().get(2); + } + /** * * @@ -446,6 +454,7 @@ public void createPackageContents() { functionalDataEClass = createEClass(FUNCTIONAL_DATA); createEReference(functionalDataEClass, FUNCTIONAL_DATA__TERMINATOR); createEReference(functionalDataEClass, FUNCTIONAL_DATA__INTERFACE); + createEAttribute(functionalDataEClass, FUNCTIONAL_DATA__VALUE); // Create enums functionTypeEEnum = createEEnum(FUNCTION_TYPE); @@ -486,7 +495,7 @@ public void initializePackageContents() { // Initialize classes, features, and operations; add parameters initEClass(functionalElementEClass, FunctionalElement.class, "FunctionalElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getFunctionalElement_Interface(), this.getFunctionalInterface(), this.getFunctionalInterface_Element(), "interface", null, 0, 1, FunctionalElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEReference(getFunctionalElement_Model(), this.getFunctionalArchitectureModel(), null, "model", null, 1, 1, FunctionalElement.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getFunctionalElement_Model(), this.getFunctionalArchitectureModel(), null, "model", null, 1, 1, FunctionalElement.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getFunctionalElement_Parent(), this.getFunction(), this.getFunction_SubElements(), "parent", null, 0, 1, FunctionalElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(functionalArchitectureModelEClass, FunctionalArchitectureModel.class, "FunctionalArchitectureModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); @@ -494,7 +503,7 @@ public void initializePackageContents() { initEClass(functionEClass, Function.class, "Function", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getFunction_SubElements(), this.getFunctionalElement(), this.getFunctionalElement_Parent(), "subElements", null, 0, -1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEAttribute(getFunction_Type(), this.getFunctionType(), "type", null, 1, 1, Function.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEAttribute(getFunction_Type(), this.getFunctionType(), "type", null, 1, 1, Function.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(famTerminatorEClass, FAMTerminator.class, "FAMTerminator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getFAMTerminator_Data(), this.getFunctionalData(), this.getFunctionalData_Terminator(), "data", null, 0, 1, FAMTerminator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); @@ -503,9 +512,9 @@ public void initializePackageContents() { initEReference(getInformationLink_From(), this.getFunctionalOutput(), this.getFunctionalOutput_OutgoingLinks(), "from", null, 0, 1, InformationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getInformationLink_To(), this.getFunctionalInput(), this.getFunctionalInput_IncomingLinks(), "to", null, 1, 1, InformationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEClass(functionalInterfaceEClass, FunctionalInterface.class, "FunctionalInterface", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getFunctionalInterface_Data(), this.getFunctionalData(), this.getFunctionalData_Interface(), "data", null, 0, -1, FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEReference(getFunctionalInterface_Element(), this.getFunctionalElement(), this.getFunctionalElement_Interface(), "element", null, 0, 1, FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEClass(functionalInterfaceEClass, functionalarchitecture.FunctionalInterface.class, "FunctionalInterface", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalInterface_Data(), this.getFunctionalData(), this.getFunctionalData_Interface(), "data", null, 0, -1, functionalarchitecture.FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFunctionalInterface_Element(), this.getFunctionalElement(), this.getFunctionalElement_Interface(), "element", null, 0, 1, functionalarchitecture.FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(functionalInputEClass, FunctionalInput.class, "FunctionalInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getFunctionalInput_IncomingLinks(), this.getInformationLink(), this.getInformationLink_To(), "IncomingLinks", null, 0, -1, FunctionalInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); @@ -516,6 +525,7 @@ public void initializePackageContents() { initEClass(functionalDataEClass, FunctionalData.class, "FunctionalData", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getFunctionalData_Terminator(), this.getFAMTerminator(), this.getFAMTerminator_Data(), "terminator", null, 0, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getFunctionalData_Interface(), this.getFunctionalInterface(), this.getFunctionalInterface_Data(), "interface", null, 0, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getFunctionalData_Value(), ecorePackage.getEInt(), "value", null, 1, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); // Initialize enums and add enum literals initEEnum(functionTypeEEnum, FunctionType.class, "FunctionType"); @@ -540,12 +550,12 @@ public void initializePackageContents() { * @generated */ protected void createEcoreAnnotations() { - String source = "http://www.eclipse.org/emf/2002/Ecore"; + String source = "http://www.eclipse.org/emf/2002/Ecore"; addAnnotation - (this, - source, + (this, + source, new String[] { - "settingDelegates", "org.eclipse.viatra.query.querybasedfeature" + "settingDelegates", "org.eclipse.viatra.query.querybasedfeature" }); } @@ -556,18 +566,18 @@ protected void createEcoreAnnotations() { * @generated */ protected void createOrgAnnotations() { - String source = "org.eclipse.viatra.query.querybasedfeature"; + String source = "org.eclipse.viatra.query.querybasedfeature"; addAnnotation - (getFunctionalElement_Model(), - source, + (getFunctionalElement_Model(), + source, new String[] { - "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.transima.fam.model" - }); + "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.transima.fam.model" + }); addAnnotation - (getFunction_Type(), - source, + (getFunction_Type(), + source, new String[] { - "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.transima.fam.type" + "patternFQN", "hu.bme.mit.inf.dslreasoner.domains.transima.fam.type" }); } diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureAdapterFactory.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureAdapterFactory.java index f990a7a4d..9846bd622 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureAdapterFactory.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureAdapterFactory.java @@ -2,9 +2,15 @@ */ package functionalarchitecture.util; -import functionalarchitecture.*; -import functionalarchitecture.FunctionalInterface; - +import functionalarchitecture.FAMTerminator; +import functionalarchitecture.Function; +import functionalarchitecture.FunctionalArchitectureModel; +import functionalarchitecture.FunctionalData; +import functionalarchitecture.FunctionalElement; +import functionalarchitecture.FunctionalInput; +import functionalarchitecture.FunctionalOutput; +import functionalarchitecture.FunctionalarchitecturePackage; +import functionalarchitecture.InformationLink; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notifier; @@ -89,7 +95,7 @@ public Adapter caseInformationLink(InformationLink object) { return createInformationLinkAdapter(); } @Override - public Adapter caseFunctionalInterface(FunctionalInterface object) { + public Adapter caseFunctionalInterface(functionalarchitecture.FunctionalInterface object) { return createFunctionalInterfaceAdapter(); } @Override diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureSwitch.java b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureSwitch.java index b481a978b..a1bbb4805 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureSwitch.java +++ b/Domains/Examples/ModelGenExampleFAM_plugin/ecore-gen/functionalarchitecture/util/FunctionalarchitectureSwitch.java @@ -2,9 +2,15 @@ */ package functionalarchitecture.util; -import functionalarchitecture.*; -import functionalarchitecture.FunctionalInterface; - +import functionalarchitecture.FAMTerminator; +import functionalarchitecture.Function; +import functionalarchitecture.FunctionalArchitectureModel; +import functionalarchitecture.FunctionalData; +import functionalarchitecture.FunctionalElement; +import functionalarchitecture.FunctionalInput; +import functionalarchitecture.FunctionalOutput; +import functionalarchitecture.FunctionalarchitecturePackage; +import functionalarchitecture.InformationLink; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; @@ -99,7 +105,7 @@ protected T doSwitch(int classifierID, EObject theEObject) { return result; } case FunctionalarchitecturePackage.FUNCTIONAL_INTERFACE: { - FunctionalInterface functionalInterface = (FunctionalInterface)theEObject; + functionalarchitecture.FunctionalInterface functionalInterface = (functionalarchitecture.FunctionalInterface)theEObject; T result = caseFunctionalInterface(functionalInterface); if (result == null) result = defaultCase(theEObject); return result; @@ -214,7 +220,7 @@ public T caseInformationLink(InformationLink object) { * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ - public T caseFunctionalInterface(FunctionalInterface object) { + public T caseFunctionalInterface(functionalarchitecture.FunctionalInterface object) { return null; } diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.aird b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.aird index f6549d91a..14cf13c68 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.aird +++ b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.aird @@ -1,2 +1,644 @@ - + + + FamMetamodel.ecore + FamMetamodel.genmodel + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + bold + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + bold + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore index 9654ba418..89fbcfcb2 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore +++ b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore @@ -1,3 +1,7 @@ +<<<<<<< HEAD +<<<<<<< HEAD +<<<<<<< HEAD +<<<<<<< HEAD +======= + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> 71108d46... VAMPIRE: Implement wf constraint handling +======= + + + +
+ + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> ce5aafc0... VAMPIRE: fix model generation +======= + + + +
+ + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> 5d1165ce... VAMPIRE: Implement Vampire measurement code +======= + + + +
+ + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> 4d27f278... VAMPIRE: last commit diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.genmodel b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.genmodel index 9d89c1455..bd4288112 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.genmodel +++ b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.genmodel @@ -43,6 +43,7 @@ + diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml b/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml index 213ec0edd..33f2a4a07 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml +++ b/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml @@ -22,3 +22,93 @@ +======= + + + + + + + + + + + +>>>>>>> 71108d46... VAMPIRE: Implement wf constraint handling +======= + + + + + + + + + + + + + + + + + + + + + +>>>>>>> ce5aafc0... VAMPIRE: fix model generation +======= + + + + + + + + + + + + + + + +>>>>>>> 5d1165ce... VAMPIRE: Implement Vampire measurement code +======= + + + + + + + + + + + + + + + +>>>>>>> 4d27f278... VAMPIRE: last commit +======= + + + + + + + + + + + + + + + +>>>>>>> 8ecc73c4... VAMPIRE: Rebase on Master diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql b/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql index f0e48d424..24348eb04 100644 --- a/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql +++ b/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql @@ -39,17 +39,17 @@ pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) { FunctionalArchitectureModel(Target); } -pattern hasRoot(F : Function) { - find rootElements(_Model, F); -} -pattern hasInt(F : Function) { - neg find parent(_Child, F); - neg find rootElements(_Model, F); -} -pattern hasLeaf(F : Function) { - find parent(F, _Par); - find parent(_Child, F); -} +//pattern hasRoot(F : Function) { +// find rootElements(_Model, F); +//} +//pattern hasInt(F : Function) { +// neg find parent(_Child, F); +// neg find rootElements(_Model, F); +//} +//pattern hasLeaf(F : Function) { +// find parent(F, _Par); +// find parent(_Child, F); +//} /* @Constraint(message="noRoot", severity="error", key={fam}) pattern noRoot(fam: FunctionalArchitectureModel) { diff --git a/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql b/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql index 34394ef6d..3966d0af1 100644 --- a/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql +++ b/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql @@ -1,7 +1,7 @@ package hu.bme.mit.inf.dslreasoner.domains.fam -import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam" -//import epackage "platform:/resource/ModelGenExampleFAM/inputs/FamMetamodel.ecore"; +//import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam" +import epackage "platform:/resource/ModelGenExampleFAM/inputs/FamMetamodel.ecore"; @Constraint(message="terminatorAndInformation", severity="error", key={T}) pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { 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 73ebb2c78..93db1ff71 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 @@ -18,5 +18,6 @@ Require-Bundle: org.eclipse.viatra.query.runtime, org.eclipse.emf.ecore;visibility:=reexport, com.google.guava;bundle-version="15.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph Bundle-ActivationPolicy: lazy -Import-Package: org.apache.log4j +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/Entry.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/Entry.java index de8cdb07f..994ffd968 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/Entry.java +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/Entry.java @@ -8,10 +8,45 @@ * A representation of the model object 'Entry'. * * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Entry#getType Type}
  • + *
* * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage#getEntry() * @model * @generated */ public interface Entry extends Pseudostate { + + /** + * Returns the value of the 'Type' attribute. + * The literals are from the enumeration {@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType}. + * + *

+ * If the meaning of the 'Type' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type' attribute. + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType + * @see #setType(EntryType) + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage#getEntry_Type() + * @model + * @generated + */ + EntryType getType(); + + /** + * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Entry#getType Type}' attribute. + * + * + * @param value the new value of the 'Type' attribute. + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType + * @see #getType() + * @generated + */ + void setType(EntryType value); } // Entry diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/EntryType.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/EntryType.java new file mode 100644 index 000000000..4f5d1a31b --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/EntryType.java @@ -0,0 +1,239 @@ +/** + */ +package hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * + * A representation of the literals of the enumeration 'Entry Type', + * and utility methods for working with them. + * + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage#getEntryType() + * @model + * @generated + */ +public enum EntryType implements Enumerator { + /** + * The 'Normal' literal object. + * + * + * @see #NORMAL_VALUE + * @generated + * @ordered + */ + NORMAL(0, "Normal", "Normal"), + + /** + * The 'History' literal object. + * + * + * @see #HISTORY_VALUE + * @generated + * @ordered + */ + HISTORY(0, "History", "History"), + + /** + * The 'Deep History' literal object. + * + * + * @see #DEEP_HISTORY_VALUE + * @generated + * @ordered + */ + DEEP_HISTORY(0, "DeepHistory", "DeepHistory"); + + /** + * The 'Normal' literal value. + * + *

+ * If the meaning of 'Normal' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #NORMAL + * @model name="Normal" + * @generated + * @ordered + */ + public static final int NORMAL_VALUE = 0; + + /** + * The 'History' literal value. + * + *

+ * If the meaning of 'History' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #HISTORY + * @model name="History" + * @generated + * @ordered + */ + public static final int HISTORY_VALUE = 0; + + /** + * The 'Deep History' literal value. + * + *

+ * If the meaning of 'Deep History' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #DEEP_HISTORY + * @model name="DeepHistory" + * @generated + * @ordered + */ + public static final int DEEP_HISTORY_VALUE = 0; + + /** + * An array of all the 'Entry Type' enumerators. + * + * + * @generated + */ + private static final EntryType[] VALUES_ARRAY = + new EntryType[] { + NORMAL, + HISTORY, + DEEP_HISTORY, + }; + + /** + * A public read-only list of all the 'Entry Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Entry Type' literal with the specified literal value. + * + * + * @param literal the literal. + * @return the matching enumerator or null. + * @generated + */ + public static EntryType get(String literal) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + EntryType result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Entry Type' literal with the specified name. + * + * + * @param name the name. + * @return the matching enumerator or null. + * @generated + */ + public static EntryType getByName(String name) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + EntryType result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Entry Type' literal with the specified integer value. + * + * + * @param value the integer value. + * @return the matching enumerator or null. + * @generated + */ + public static EntryType get(int value) { + switch (value) { + case NORMAL_VALUE: return NORMAL; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private EntryType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @generated + */ + @Override + public String toString() { + return literal; + } + +} //EntryType diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/YakindummPackage.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/YakindummPackage.java index 18a4b1050..a9269e052 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/YakindummPackage.java +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/YakindummPackage.java @@ -2,7 +2,9 @@ */ package hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm; +import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; @@ -332,6 +334,15 @@ public interface YakindummPackage extends EPackage { */ int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + int ENTRY__TYPE = PSEUDOSTATE_FEATURE_COUNT + 0; + /** * The number of structural features of the 'Entry' class. * @@ -339,7 +350,7 @@ public interface YakindummPackage extends EPackage { * @generated * @ordered */ - int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 1; /** * The number of operations of the 'Entry' class. @@ -638,6 +649,17 @@ public interface YakindummPackage extends EPackage { int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + /** + * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType Entry Type}' enum. + * + * + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl#getEntryType() + * @generated + */ + int ENTRY_TYPE = 13; + + /** * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Pseudostate Pseudostate}'. * @@ -753,6 +775,17 @@ public interface YakindummPackage extends EPackage { */ EClass getEntry(); + /** + * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Entry#getType Type}'. + * + * + * @return the meta object for the attribute 'Type'. + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Entry#getType() + * @see #getEntry() + * @generated + */ + EAttribute getEntry_Type(); + /** * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Synchronization Synchronization}'. * @@ -834,6 +867,16 @@ public interface YakindummPackage extends EPackage { */ EClass getFinalState(); + /** + * Returns the meta object for enum '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType Entry Type}'. + * + * + * @return the meta object for enum 'Entry Type'. + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType + * @generated + */ + EEnum getEntryType(); + /** * Returns the factory that creates the instances of the model. * @@ -957,6 +1000,14 @@ interface Literals { */ EClass ENTRY = eINSTANCE.getEntry(); + /** + * The meta object literal for the 'Type' attribute feature. + * + * + * @generated + */ + EAttribute ENTRY__TYPE = eINSTANCE.getEntry_Type(); + /** * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.SynchronizationImpl Synchronization}' class. * @@ -1035,6 +1086,16 @@ interface Literals { */ EClass FINAL_STATE = eINSTANCE.getFinalState(); + /** + * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType Entry Type}' enum. + * + * + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType + * @see hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl#getEntryType() + * @generated + */ + EEnum ENTRY_TYPE = eINSTANCE.getEntryType(); + } } //YakindummPackage diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/EntryImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/EntryImpl.java index 35003e0d0..270416304 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/EntryImpl.java +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/EntryImpl.java @@ -3,18 +3,46 @@ package hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Entry; +import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage; +import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; /** * * An implementation of the model object 'Entry'. * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.EntryImpl#getType Type}
  • + *
* * @generated */ public class EntryImpl extends PseudostateImpl implements Entry { + /** + * The default value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected static final EntryType TYPE_EDEFAULT = EntryType.NORMAL; + /** + * The cached value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected EntryType type = TYPE_EDEFAULT; + /** * * @@ -34,4 +62,99 @@ protected EClass eStaticClass() { return YakindummPackage.Literals.ENTRY; } + /** + * + * + * @generated + */ + public EntryType getType() { + return type; + } + + /** + * + * + * @generated + */ + public void setType(EntryType newType) { + EntryType oldType = type; + type = newType == null ? TYPE_EDEFAULT : newType; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakindummPackage.ENTRY__TYPE, oldType, type)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + return getType(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + setType((EntryType)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + setType(TYPE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + return type != TYPE_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (Type: "); + result.append(type); + result.append(')'); + return result.toString(); + } + } //EntryImpl diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummFactoryImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummFactoryImpl.java index 9c4fc4f1c..d4fc2d010 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummFactoryImpl.java +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummFactoryImpl.java @@ -5,6 +5,7 @@ import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.*; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; @@ -70,6 +71,36 @@ public EObject create(EClass eClass) { } } + /** + * + * + * @generated + */ + @Override + public Object createFromString(EDataType eDataType, String initialValue) { + switch (eDataType.getClassifierID()) { + case YakindummPackage.ENTRY_TYPE: + return createEntryTypeFromString(eDataType, initialValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public String convertToString(EDataType eDataType, Object instanceValue) { + switch (eDataType.getClassifierID()) { + case YakindummPackage.ENTRY_TYPE: + return convertEntryTypeToString(eDataType, instanceValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + /** * * @@ -160,6 +191,26 @@ public FinalState createFinalState() { return finalState; } + /** + * + * + * @generated + */ + public EntryType createEntryTypeFromString(EDataType eDataType, String initialValue) { + EntryType result = EntryType.get(initialValue); + if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); + return result; + } + + /** + * + * + * @generated + */ + public String convertEntryTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + /** * * diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummPackageImpl.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummPackageImpl.java index 77092c178..e6da53ecb 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummPackageImpl.java +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/ecore-gen/hu/bme/mit/inf/dslreasoner/domains/yakindu/sgraph/yakindumm/impl/YakindummPackageImpl.java @@ -5,6 +5,7 @@ import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Choice; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.CompositeElement; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Entry; +import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.EntryType; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Exit; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.FinalState; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.Pseudostate; @@ -18,7 +19,9 @@ import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummFactory; import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage; +import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; @@ -122,6 +125,13 @@ public class YakindummPackageImpl extends EPackageImpl implements YakindummPacka */ private EClass finalStateEClass = null; + /** + * + * + * @generated + */ + private EEnum entryTypeEEnum = null; + /** * Creates an instance of the model Package, registered with * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package @@ -150,7 +160,7 @@ private YakindummPackageImpl() { /** * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. - * + * *

This method is used to initialize {@link YakindummPackage#eINSTANCE} when that field is accessed. * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. * @@ -164,7 +174,8 @@ public static YakindummPackage init() { if (isInited) return (YakindummPackage)EPackage.Registry.INSTANCE.getEPackage(YakindummPackage.eNS_URI); // Obtain or create and register package - YakindummPackageImpl theYakindummPackage = (YakindummPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof YakindummPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new YakindummPackageImpl()); + Object registeredYakindummPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + YakindummPackageImpl theYakindummPackage = registeredYakindummPackage instanceof YakindummPackageImpl ? (YakindummPackageImpl)registeredYakindummPackage : new YakindummPackageImpl(); isInited = true; @@ -177,7 +188,6 @@ public static YakindummPackage init() { // Mark meta-data to indicate it can't be changed theYakindummPackage.freeze(); - // Update the registry and return the package EPackage.Registry.INSTANCE.put(YakindummPackage.eNS_URI, theYakindummPackage); return theYakindummPackage; @@ -282,6 +292,15 @@ public EClass getEntry() { return entryEClass; } + /** + * + * + * @generated + */ + public EAttribute getEntry_Type() { + return (EAttribute)entryEClass.getEStructuralFeatures().get(0); + } + /** * * @@ -354,6 +373,15 @@ public EClass getFinalState() { return finalStateEClass; } + /** + * + * + * @generated + */ + public EEnum getEntryType() { + return entryTypeEEnum; + } + /** * * @@ -398,6 +426,7 @@ public void createPackageContents() { statechartEClass = createEClass(STATECHART); entryEClass = createEClass(ENTRY); + createEAttribute(entryEClass, ENTRY__TYPE); synchronizationEClass = createEClass(SYNCHRONIZATION); @@ -413,6 +442,9 @@ public void createPackageContents() { exitEClass = createEClass(EXIT); finalStateEClass = createEClass(FINAL_STATE); + + // Create enums + entryTypeEEnum = createEEnum(ENTRY_TYPE); } /** @@ -471,6 +503,7 @@ public void initializePackageContents() { initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getEntry_Type(), this.getEntryType(), "Type", null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); @@ -487,6 +520,12 @@ public void initializePackageContents() { initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + // Initialize enums and add enum literals + initEEnum(entryTypeEEnum, EntryType.class, "EntryType"); + addEEnumLiteral(entryTypeEEnum, EntryType.NORMAL); + addEEnumLiteral(entryTypeEEnum, EntryType.HISTORY); + addEEnumLiteral(entryTypeEEnum, EntryType.DEEP_HISTORY); + // Create resource createResource(eNS_URI); } diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/Statechart.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/Statechart.xmi new file mode 100644 index 000000000..d76b39292 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/Statechart.xmi @@ -0,0 +1,4 @@ + + diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/Statechart1.xmi b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/Statechart1.xmi new file mode 100644 index 000000000..6368cea95 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/Statechart1.xmi @@ -0,0 +1,10 @@ + + + + + diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.aird b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.aird index 12aa0f9e6..b2216e245 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.aird +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.aird @@ -1,31 +1,31 @@ - + yakindu_simplified.ecore - + - + - + - + - + - + - - - + + + @@ -46,7 +46,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -82,7 +82,7 @@ - + @@ -91,16 +91,20 @@ - + + + + + - + @@ -109,7 +113,7 @@ - + @@ -118,7 +122,7 @@ - + @@ -127,7 +131,7 @@ - + @@ -136,7 +140,7 @@ - + @@ -145,7 +149,7 @@ - + @@ -154,7 +158,28 @@ - + + + + + + + + + + + + + + + + + + + + + + @@ -217,8 +242,8 @@ - - + + @@ -234,7 +259,7 @@ - + @@ -287,17 +312,17 @@ - + - + - + - + @@ -330,7 +355,7 @@ - + @@ -346,7 +371,7 @@ - + @@ -361,31 +386,31 @@ - - + + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + labelFormat backgroundColor italic @@ -393,26 +418,26 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + labelFormat backgroundColor foregroundColor @@ -420,290 +445,331 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor + + + + + + + + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + - + italic - + - + - - + + routingStyle - + italic - + - + - - + + - + italic - + - + - - - + + - + italic - + - + - - - + + - + italic - + - + - - + + - + italic - + - + - + strokeColor size - + labelFormat - + labelFormat - + - + strokeColor size - + labelFormat - + labelFormat - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - - + + - + italic - + - + - - + + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - - + + routingStyle - + italic - + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + @@ -724,7 +790,7 @@ - + @@ -995,25 +1061,25 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + labelFormat backgroundColor foregroundColor @@ -1022,26 +1088,26 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + labelFormat backgroundColor foregroundColor @@ -1049,39 +1115,39 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + labelFormat backgroundColor foregroundColor @@ -1089,190 +1155,190 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + strokeColor size - + labelFormat - + labelFormat - + - + strokeColor size - + labelFormat - + labelFormat - + diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore index 0d6b4ac60..51b0ca5b6 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore @@ -19,7 +19,9 @@ eType="#//Vertex" eOpposite="#//Vertex/outgoingTransitions"/> - + + + @@ -30,4 +32,9 @@ + + + + + diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.genmodel b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.genmodel index 4e34cf1d0..4419a75a5 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.genmodel +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.genmodel @@ -7,6 +7,11 @@ yakindu_simplified.ecore + + + + + @@ -20,7 +25,9 @@ - + + + @@ -29,5 +36,6 @@ + diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindummTPTP.png b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindummTPTP.png new file mode 100644 index 000000000..cfa34e77c Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindummTPTP.png differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml index 993ec75d9..95ccc5176 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/plugin.xml @@ -101,3 +101,102 @@ +>>>>>>> 2f814967... VAMPIRE: close #22, improve test structure for #39, .vql file trouble +======= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> 5d1165ce... VAMPIRE: Implement Vampire measurement code diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql index f4bfa3c1c..09fb45c8e 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql @@ -88,67 +88,67 @@ pattern choiceHasNoIncoming(c: Choice) { neg find transition(_, _, c); } -///////// -// Synchronization -///////// - -@Constraint(severity="error", message="error", key = {s}) -pattern synchHasNoOutgoing(s : Synchronization) { - neg find transition(_, s, _); -} - -@Constraint(severity="error", message="error", key = {s}) -pattern synchHasNoIncoming(s : Synchronization) { - neg find transition(_, _, s); -} - -@Constraint(severity="error", message="error", key = {s}) -pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { - find transition(t1, v1, s); - find transition(t2, v2, s); - t1!=t2; - Region.vertices(r, v1); - Region.vertices(r, v2); -} or { - find transition(t1, s, v1); - find transition(t2, s, v2); - t1!=t2; - Region.vertices(r, v1); - Region.vertices(r, v2); -} - -@Constraint(severity="error", message="error", key = {s}) -pattern notSynchronizingStates(s : Synchronization) { - neg find hasMultipleOutgoingTrainsition(s); - neg find hasMultipleIncomingTrainsition(s); -} - -pattern hasMultipleOutgoingTrainsition(v : Synchronization) { - find transition(_, v, trg1); - find transition(_, v, trg2); - trg1 != trg2; -} - -pattern hasMultipleIncomingTrainsition(v : Synchronization) { - find transition(_, src1, v); - find transition(_, src2, v); - src1 != src2; -} - -@Constraint(severity="error", message="error", key = {s}) -pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { - find transition(_, v1, s); - find transition(_, v2, s); - CompositeElement.regions.vertices(r1, v1); - CompositeElement.regions.vertices(r2, v2); - r1 != r2; -} or { - find transition(_, s, v1); - find transition(_, s, v2); - CompositeElement.regions.vertices(r1, v1); - CompositeElement.regions.vertices(r2, v2); - r1 != r2; -} +/////////// +//// Synchronization +/////////// +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern synchHasNoOutgoing(s : Synchronization) { +// neg find transition(_, s, _); +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern synchHasNoIncoming(s : Synchronization) { +// neg find transition(_, _, s); +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { +// find transition(t1, v1, s); +// find transition(t2, v2, s); +// t1!=t2; +// Region.vertices(r, v1); +// Region.vertices(r, v2); +//} or { +// find transition(t1, s, v1); +// find transition(t2, s, v2); +// t1!=t2; +// Region.vertices(r, v1); +// Region.vertices(r, v2); +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern notSynchronizingStates(s : Synchronization) { +// neg find hasMultipleOutgoingTrainsition(s); +// neg find hasMultipleIncomingTrainsition(s); +//} +// +//pattern hasMultipleOutgoingTrainsition(v : Synchronization) { +// find transition(_, v, trg1); +// find transition(_, v, trg2); +// trg1 != trg2; +//} +// +//pattern hasMultipleIncomingTrainsition(v : Synchronization) { +// find transition(_, src1, v); +// find transition(_, src2, v); +// src1 != src2; +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { +// find transition(_, v1, s); +// find transition(_, v2, s); +// CompositeElement.regions.vertices(r1, v1); +// CompositeElement.regions.vertices(r2, v2); +// r1 != r2; +//} or { +// find transition(_, s, v1); +// find transition(_, s, v2); +// CompositeElement.regions.vertices(r1, v1); +// CompositeElement.regions.vertices(r2, v2); +// r1 != r2; +//} /////////////////////////////// // Extra diff --git a/Domains/hu.bme.mit.inf.yakinduModelExtractor/src/hu/bme/mit/inf/yakinduModelExtractor/ModelManager.java b/Domains/hu.bme.mit.inf.yakinduModelExtractor/src/hu/bme/mit/inf/yakinduModelExtractor/ModelManager.java index 85fd208c8..951e44a32 100644 --- a/Domains/hu.bme.mit.inf.yakinduModelExtractor/src/hu/bme/mit/inf/yakinduModelExtractor/ModelManager.java +++ b/Domains/hu.bme.mit.inf.yakinduModelExtractor/src/hu/bme/mit/inf/yakinduModelExtractor/ModelManager.java @@ -1,21 +1,21 @@ -package hu.bme.mit.inf.yakinduModelExtractor; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.LinkedList; -import java.util.List; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; -import org.eclipse.gmf.runtime.notation.NotationPackage; +package hu.bme.mit.inf.yakinduModelExtractor; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.gmf.runtime.notation.NotationPackage; import org.yakindu.sct.model.sgraph.SGraphPackage; public class ModelManager { @@ -28,27 +28,27 @@ public ModelManager() { public void init() { SGraphPackage.eINSTANCE.eClass(); NotationPackage.eINSTANCE.eClass(); - resourceSet = new ResourceSetImpl(); + resourceSet = new ResourceSetImpl(); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); } - - public List loadAllModelPathsInDirectory(String path) { - File directory = new File(path); - if(directory.exists() && directory.isDirectory()) { - List filePaths = new LinkedList<>(); - for(File f : directory.listFiles()) { - if(f.isFile()) { - String filePath = f.getPath(); - if(filePath.endsWith("sct")) { - filePaths.add(filePath); - } - } - } - return filePaths; - } else { - throw new IllegalArgumentException("invalid path"); - } - } + + public List loadAllModelPathsInDirectory(String path) { + File directory = new File(path); + if(directory.exists() && directory.isDirectory()) { + List filePaths = new LinkedList<>(); + for(File f : directory.listFiles()) { + if(f.isFile()) { + String filePath = f.getPath(); + if(filePath.endsWith("sct")) { + filePaths.add(filePath); + } + } + } + return filePaths; + } else { + throw new IllegalArgumentException("invalid path"); + } + } public EObject loadModel(String path) { Resource resource = this.resourceSet.getResource(URI.createFileURI(path), true); diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/.classpath b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/.classpath index e84a32951..a9e661c75 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/.classpath +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/.classpath @@ -7,5 +7,6 @@ + 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 338e8c09d..4c71a8727 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 @@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.logic.model;singleton:=true Bundle-Version: 1.0.0.qualifier -Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: hu.bme.mit.inf.dslreasoner.logic.model.builder, @@ -30,7 +29,7 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.viatra.query.runtime;bundle-version="1.3.0", org.apache.commons.lang;bundle-version="2.6.0", org.eclipse.emf.ecore.xmi;bundle-version="2.13.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-ActivationPolicy: lazy Import-Package: org.apache.log4j Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.logic.model -Bundle-ActivationPolicy: lazy -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/build.properties b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/build.properties index 9403fc5f2..c18a0403f 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/build.properties +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/build.properties @@ -8,5 +8,6 @@ source.. = ecore-gen/,\ src/,\ xtend-gen/,\ patterns/,\ - vql-gen/ + vql-gen/,\ + src-gen/ output.. = bin/ diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend index 8d6b565a8..23549ed84 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend @@ -54,6 +54,7 @@ class Logic2Ecore { val allReferences = ecore2Logic.allReferencesInScope(forwardTrace) for(referenceType : allReferences) { if(referenceType.canSetFeature) { +// println("in") for(sourceElement : elements) { val sourceObject = sourceElement.lookup(element2Object) if(referenceType.EContainingClass.isSuperTypeOf(sourceObject.eClass)) { diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath index 849e2a7b7..a59f7c211 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath @@ -5,10 +5,6 @@ - - - - - + diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.java._trace new file mode 100644 index 000000000..8ab43fde2 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.xtendbin new file mode 100644 index 000000000..f502d04e9 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.java._trace new file mode 100644 index 000000000..7096f9db0 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.xtendbin new file mode 100644 index 000000000..2362ebada Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.MetricDistanceGroup.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.MetricDistanceGroup.java._trace new file mode 100644 index 000000000..f6505088c Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.MetricDistanceGroup.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.java._trace new file mode 100644 index 000000000..8708c7930 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.xtendbin new file mode 100644 index 000000000..d9e88699e Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.java._trace new file mode 100644 index 000000000..3e381b10b Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.xtendbin new file mode 100644 index 000000000..5071eb03f Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.java new file mode 100644 index 000000000..9b626001b --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.java @@ -0,0 +1,10 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; + +@SuppressWarnings("all") +public enum Domain { + Yakindumm, + + Ecore, + + Github; +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.java new file mode 100644 index 000000000..dbb3bdd16 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.java @@ -0,0 +1,99 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation.ViolationCheck; +import com.google.common.base.Objects; +import com.google.common.collect.Iterators; +import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl; +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.impl.EcorePackageImpl; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.IteratorExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class Main { + public static class RWInformation { + public String inputFolder; + + public String outputFolder; + + public int numRuns; + + public RWInformation(final String inputFolder, final String outputFolder, final int numRuns) { + this.inputFolder = inputFolder; + this.outputFolder = outputFolder; + this.numRuns = numRuns; + } + } + + private static Domain d = Domain.Yakindumm; + + private final static String suffix = ".xmi"; + + private final static String OUTPUT_FOLDER = "Inputs/measurement2/yakindu/Alloy/"; + + private final static String INPUT_FOLDER = "outputs/measurement2/yakindu/Alloy/"; + + private final static int NUM_RUNS = 1; + + public static void main(final String[] args) { + throw new Error("Unresolved compilation problems:" + + "\nThe method or field ReteEngine is undefined" + + "\ngetClass cannot be resolved"); + } + + public static String calculateAllModels(final String inputFolder, final String outputFolder, final int numRuns, final GraphReader reader) { + String _xblockexpression = null; + { + new File(outputFolder).mkdir(); + for (int i = 1; (i <= numRuns); i++) { + { + final ArrayList models = new ArrayList(); + models.addAll(reader.readModels(((inputFolder + "run") + Integer.valueOf(i)))); + for (final EMFGraph model : models) { + String _name = model.getName(); + String _plus = (outputFolder + _name); + String _plus_1 = (_plus + "_run_"); + String _plus_2 = (_plus_1 + Integer.valueOf(i)); + String _plus_3 = (_plus_2 + ".csv"); + Main.calculateAndOutputMetrics(model, YakindummPackageImpl.eNAME, _plus_3); + } + } + } + _xblockexpression = InputOutput.println(("output results Ended for: " + outputFolder)); + } + return _xblockexpression; + } + + public static void calculateAndOutputMetrics(final EMFGraph model, final String metaModel, final String fileName) { + model.setMetaModel(metaModel); + boolean _equals = Objects.equal(Main.d, Domain.Ecore); + if (_equals) { + final Function1 _function = (EReference it) -> { + return Boolean.valueOf((((((it.getName().equals("eGenericType") || it.getName().equals("eGenericSuperTypes")) || it.getName().equals("eFactoryInstance")) || + it.getName().equals("eGenericExceptions")) || it.getName().equals("references")) || it.getName().equals("contents"))); + }; + Iterator refsToRemove = IteratorExtensions.filter(Iterators.filter(EcorePackageImpl.eINSTANCE.eAllContents(), EReference.class), _function); + final Procedure1 _function_1 = (EReference it) -> { + model.removeReference(it); + }; + IteratorExtensions.forEach(refsToRemove, _function_1); + } + ArrayList> outputs = model.evaluateAllMetrics(); + int violations = ViolationCheck.calculateViolationCounts(model.getRoot(), Main.d); + InputOutput.println(Integer.valueOf(violations)); + String _plus = (Integer.valueOf(violations) + ""); + ArrayList violationsOutput = CollectionLiterals.newArrayList("violations", _plus); + outputs.add(violationsOutput); + CsvFileWriter.write(outputs, fileName); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/MetricDistanceGroup.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/MetricDistanceGroup.java new file mode 100644 index 000000000..bb0e3ffb4 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/MetricDistanceGroup.java @@ -0,0 +1,49 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; + +import java.util.HashMap; + +@SuppressWarnings("all") +public class MetricDistanceGroup { + private double mpcDistance; + + private double naDistance; + + private double outDegreeDistance; + + private double nodeTypeDistance; + + protected HashMap nodeTypeInfo; + + public MetricDistanceGroup(final double mpcDistance, final double naDistance, final double outDegreeDistance, final double nodeTypeDistance) { + this.mpcDistance = mpcDistance; + this.naDistance = naDistance; + this.outDegreeDistance = outDegreeDistance; + this.nodeTypeDistance = nodeTypeDistance; + } + + public MetricDistanceGroup(final double mpcDistance, final double naDistance, final double outDegreeDistance) { + this.mpcDistance = mpcDistance; + this.naDistance = naDistance; + this.outDegreeDistance = outDegreeDistance; + } + + public double getNodeTypeDistance() { + return this.nodeTypeDistance; + } + + public double getMPCDistance() { + return this.mpcDistance; + } + + public double getNADistance() { + return this.naDistance; + } + + public double getOutDegreeDistance() { + return this.outDegreeDistance; + } + + public double getNodeTypePercentage(final String typeName) { + return (this.nodeTypeInfo.getOrDefault(typeName, Double.valueOf(0.0))).doubleValue(); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.java new file mode 100644 index 000000000..d1d75d0d8 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.java @@ -0,0 +1,54 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +@SuppressWarnings("all") +public class PartialInterpretationMetric { + private static KSDistance ks; + + private static JSDistance js; + + public static void initPaths() { + new File("debug/metric/").mkdir(); + new File("debug/metric/trajectories/").mkdir(); + } + + public static void calculateMetric(final PartialInterpretation partial, final String path, final String currentStateId, final Integer counter) { + final ArrayList metrics = new ArrayList(); + OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); + metrics.add(_outDegreeMetric); + NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); + metrics.add(_nodeActivityMetric); + MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); + metrics.add(_multiplexParticipationCoefficientMetric); + new File(path).mkdir(); + final String filename = (((((path + "/state_") + currentStateId) + "-") + counter) + ".csv"); + final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId); + CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename); + } + + public static void outputTrajectories(final PartialInterpretation empty, final /* List */Object solutions) { + throw new Error("Unresolved compilation problems:" + + "\nshortestTrajectory cannot be resolved" + + "\nmodel cannot be resolved" + + "\ndoNextTransformation cannot be resolved" + + "\nstateCoder cannot be resolved" + + "\ncreateStateCode cannot be resolved" + + "\ntoString cannot be resolved" + + "\ngetModel cannot be resolved" + + "\nstateCoder cannot be resolved" + + "\ncreateStateCode cannot be resolved" + + "\ntoString cannot be resolved"); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.java new file mode 100644 index 000000000..c98cbeeaa --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.java @@ -0,0 +1,180 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.EuclideanDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeTypeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor.LinearModel; +import com.google.common.base.Objects; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.eclipse.xtend.lib.annotations.AccessorType; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.Pure; + +@SuppressWarnings("all") +public class PartialInterpretationMetricDistance { + private KSDistance ks; + + private JSDistance js; + + private EuclideanDistance ed; + + private Map stateAndHistory; + + private /* OLSMultipleLinearRegression */Object regression; + + private List samples; + + private MetricSampleGroup g; + + @Accessors(AccessorType.PUBLIC_GETTER) + private LinearModel linearModel; + + public PartialInterpretationMetricDistance(final Domain d) { + throw new Error("Unresolved compilation problems:" + + "\nOLSMultipleLinearRegression cannot be resolved." + + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" + + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" + + "\nnoIntercept cannot be resolved"); + } + + public MetricDistanceGroup calculateMetricDistanceKS(final PartialInterpretation partial) { + final ArrayList metrics = new ArrayList(); + OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); + metrics.add(_outDegreeMetric); + NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); + metrics.add(_nodeActivityMetric); + MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); + metrics.add(_multiplexParticipationCoefficientMetric); + NodeTypeMetric _nodeTypeMetric = new NodeTypeMetric(); + metrics.add(_nodeTypeMetric); + final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, null); + MetricSampleGroup metricSamples = metricCalculator.evaluateAllMetricsToSamples(); + double mpc = this.ks.mpcDistance(metricSamples.mpcSamples); + double na = this.ks.naDistance(metricSamples.naSamples); + double outDegree = this.ks.outDegreeDistance(metricSamples.outDegreeSamples); + double nodeType = this.ks.nodeTypeDistance(metricSamples.nodeTypeSamples); + MetricDistanceGroup distance = new MetricDistanceGroup(mpc, na, outDegree, nodeType); + distance.nodeTypeInfo = metricSamples.nodeTypeSamples; + return distance; + } + + public MetricDistanceGroup calculateMetricEuclidean(final PartialInterpretation partial) { + final ArrayList metrics = new ArrayList(); + OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); + metrics.add(_outDegreeMetric); + NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); + metrics.add(_nodeActivityMetric); + MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); + metrics.add(_multiplexParticipationCoefficientMetric); + final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, null); + MetricSampleGroup metricSamples = metricCalculator.evaluateAllMetricsToSamples(); + double mpc = this.ed.mpcDistance(metricSamples.mpcSamples); + double na = this.ed.naDistance(metricSamples.naSamples); + double outDegree = this.ed.outDegreeDistance(metricSamples.outDegreeSamples); + return new MetricDistanceGroup(mpc, na, outDegree); + } + + public MetricDistanceGroup calculateMetricDistance(final PartialInterpretation partial) { + final ArrayList metrics = new ArrayList(); + OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); + metrics.add(_outDegreeMetric); + NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); + metrics.add(_nodeActivityMetric); + MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); + metrics.add(_multiplexParticipationCoefficientMetric); + final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, null); + MetricSampleGroup metricSamples = metricCalculator.evaluateAllMetricsToSamples(); + double mpc = this.js.mpcDistance(metricSamples.mpcSamples); + double na = this.js.naDistance(metricSamples.naSamples); + double outDegree = this.js.outDegreeDistance(metricSamples.outDegreeSamples); + return new MetricDistanceGroup(mpc, na, outDegree); + } + + public String resetRegression(final Object state) { + String _xblockexpression = null; + { + this.samples.clear(); + boolean _containsKey = this.stateAndHistory.containsKey(state); + if (_containsKey) { + StateData data = this.stateAndHistory.get(state); + Object curState = state; + this.samples.add(data); + while ((this.stateAndHistory.containsKey(data.getLastState()) && (!Objects.equal(data.getLastState(), curState)))) { + { + curState = data.getLastState(); + data = this.stateAndHistory.get(data.getLastState()); + this.samples.add(data); + } + } + int _size = this.samples.size(); + boolean _equals = (_size == 0); + if (_equals) { + InputOutput.println(("state: " + state)); + Object _lastState = data.getLastState(); + String _plus = ("last state: " + _lastState); + InputOutput.println(_plus); + } + } + int _size_1 = this.samples.size(); + String _plus_1 = ("trajectory sample size:" + Integer.valueOf(_size_1)); + _xblockexpression = InputOutput.println(_plus_1); + } + return _xblockexpression; + } + + public boolean feedData(final Object state, final double[] features, final double value, final Object lastState) { + boolean _xblockexpression = false; + { + StateData data = new StateData(features, value, lastState); + this.stateAndHistory.put(state, data); + _xblockexpression = this.samples.add(data); + } + return _xblockexpression; + } + + public Object getPredictionForNextDataSample(final double[] features, final double value, final double[] featuresToPredict) { + throw new Error("Unresolved compilation problems:" + + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" + + "\nThe method predict(double[]) from the type PartialInterpretationMetricDistance refers to the missing type Object" + + "\nnewSampleData cannot be resolved"); + } + + private Object predict(final double[] featuresToPredict) { + throw new Error("Unresolved compilation problems:" + + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" + + "\nestimateRegressionParameters cannot be resolved" + + "\nget cannot be resolved" + + "\n+= cannot be resolved" + + "\nget cannot be resolved" + + "\n* cannot be resolved"); + } + + public double[] calculateFeature(final int step, final int violations) { + double[] features = new double[2]; + features[0] = 1; + double _sqrt = Math.sqrt(step); + double _plus = (_sqrt + 30); + features[0] = _plus; + features[1] = (1.0 / (step + 30)); + return features; + } + + @Pure + public LinearModel getLinearModel() { + return this.linearModel; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.java._trace new file mode 100644 index 000000000..b73257329 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.xtendbin new file mode 100644 index 000000000..1b30d47aa Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.java._trace new file mode 100644 index 000000000..fa849d427 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.xtendbin new file mode 100644 index 000000000..e7be41179 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.java._trace new file mode 100644 index 000000000..66b1b2292 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.xtendbin new file mode 100644 index 000000000..7a08f8e5e Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.java._trace new file mode 100644 index 000000000..c7256d9af Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.xtendbin new file mode 100644 index 000000000..309066ccd Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.StateData.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.StateData.java._trace new file mode 100644 index 000000000..d4cde0294 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.StateData.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/CostDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/CostDistance.java new file mode 100644 index 000000000..cb366f640 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/CostDistance.java @@ -0,0 +1,26 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; + +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.List; + +@SuppressWarnings("all") +public abstract class CostDistance { + public abstract double naDistance(final List samples); + + public abstract double mpcDistance(final List samples); + + public abstract double outDegreeDistance(final List samples); + + protected HashMap pmfFromSamples(final double[] samples, final DecimalFormat formatter) { + int length = samples.length; + HashMap pmfMap = new HashMap(); + for (final double sample : samples) { + String _format = formatter.format(sample); + Double _orDefault = pmfMap.getOrDefault(formatter.format(sample), Double.valueOf(0.0)); + double _plus = ((_orDefault).doubleValue() + (1.0 / length)); + pmfMap.put(_format, Double.valueOf(_plus)); + } + return pmfMap; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/EuclideanDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/EuclideanDistance.java new file mode 100644 index 000000000..6a80d7501 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/EuclideanDistance.java @@ -0,0 +1,91 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.CostDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; +import com.google.common.collect.Sets; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.ToDoubleFunction; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.DoubleExtensions; + +@SuppressWarnings("all") +public class EuclideanDistance extends CostDistance { + private MetricSampleGroup g; + + private HashMap mpcPMF; + + private HashMap naPMF; + + private HashMap outDegreePMF; + + private DecimalFormat formatter; + + public EuclideanDistance(final MetricSampleGroup g) { + this.g = g; + List mpcSamples = g.mpcSamples; + final ToDoubleFunction _function = (Double it) -> { + return (it).doubleValue(); + }; + double[] naSamples = g.naSamples.stream().mapToDouble(_function).toArray(); + final ToDoubleFunction _function_1 = (Double it) -> { + return (it).doubleValue(); + }; + double[] outDegreeSamples = g.outDegreeSamples.stream().mapToDouble(_function_1).toArray(); + DecimalFormat _decimalFormat = new DecimalFormat("#0.00000"); + this.formatter = _decimalFormat; + final List _converted_mpcSamples = (List)mpcSamples; + this.mpcPMF = this.pmfFromSamples(((double[])Conversions.unwrapArray(_converted_mpcSamples, double.class)), this.formatter); + this.naPMF = this.pmfFromSamples(naSamples, this.formatter); + this.outDegreePMF = this.pmfFromSamples(outDegreeSamples, this.formatter); + } + + @Override + public double naDistance(final List samples) { + HashMap pmfMap = this.pmfFromSamples(((double[])Conversions.unwrapArray(samples, double.class)), this.formatter); + return this.euclideanDistance(pmfMap, this.naPMF); + } + + @Override + public double mpcDistance(final List samples) { + HashMap pmfMap = this.pmfFromSamples(((double[])Conversions.unwrapArray(samples, double.class)), this.formatter); + return this.euclideanDistance(pmfMap, this.mpcPMF); + } + + @Override + public double outDegreeDistance(final List samples) { + HashMap pmfMap = this.pmfFromSamples(((double[])Conversions.unwrapArray(samples, double.class)), this.formatter); + return this.euclideanDistance(pmfMap, this.outDegreePMF); + } + + private double euclideanDistance(final HashMap pmf1, final HashMap pmf2) { + Sets.SetView keys = Sets.union(pmf1.keySet(), pmf2.keySet()); + ArrayList pmfList1 = this.pmfMapToList(pmf1, keys); + ArrayList pmfList2 = this.pmfMapToList(pmf2, keys); + double distance = 0.0; + for (int i = 0; (i < pmfList1.size()); i++) { + double _distance = distance; + Double _get = pmfList1.get(i); + Double _get_1 = pmfList2.get(i); + double _plus = DoubleExtensions.operator_plus(_get, _get_1); + double _pow = Math.pow(_plus, 2); + distance = (_distance + _pow); + } + return Math.sqrt(distance); + } + + private ArrayList pmfMapToList(final Map map, final Set keys) { + ArrayList list = new ArrayList(); + for (final String key : keys) { + { + Double value = map.getOrDefault(key, Double.valueOf(0.0)); + list.add(value); + } + } + return list; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.java new file mode 100644 index 000000000..d3e7e3ada --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.java @@ -0,0 +1,136 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.CostDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; +import com.google.common.collect.Sets; +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Set; +import java.util.function.ToDoubleFunction; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.DoubleExtensions; + +@SuppressWarnings("all") +public class JSDistance extends CostDistance { + private HashMap mpcPMF; + + private HashMap naPMF; + + private HashMap outDegreePMF; + + private HashMap nodeTypesPMF; + + private DecimalFormat formatter; + + public JSDistance(final MetricSampleGroup g) { + List mpcSamples = g.mpcSamples; + final ToDoubleFunction _function = (Double it) -> { + return (it).doubleValue(); + }; + double[] naSamples = g.naSamples.stream().mapToDouble(_function).toArray(); + final ToDoubleFunction _function_1 = (Double it) -> { + return (it).doubleValue(); + }; + double[] outDegreeSamples = g.outDegreeSamples.stream().mapToDouble(_function_1).toArray(); + DecimalFormat _decimalFormat = new DecimalFormat("#0.00000"); + this.formatter = _decimalFormat; + final List _converted_mpcSamples = (List)mpcSamples; + this.mpcPMF = this.pmfFromSamples(((double[])Conversions.unwrapArray(_converted_mpcSamples, double.class)), this.formatter); + this.naPMF = this.pmfFromSamples(naSamples, this.formatter); + this.outDegreePMF = this.pmfFromSamples(outDegreeSamples, this.formatter); + this.nodeTypesPMF = g.nodeTypeSamples; + } + + private HashMap combinePMF(final HashMap pmf1, final HashMap pmf2) { + HashMap pmfMap = new HashMap(); + Sets.SetView union = Sets.union(pmf1.keySet(), pmf2.keySet()); + for (final String key : union) { + { + Double _orDefault = pmf1.getOrDefault(key, Double.valueOf(0.0)); + Double _orDefault_1 = pmf2.getOrDefault(key, Double.valueOf(0.0)); + double _plus = DoubleExtensions.operator_plus(_orDefault, _orDefault_1); + double value = ((1.0 / 2) * _plus); + pmfMap.put(key, Double.valueOf(value)); + } + } + return pmfMap; + } + + private double jsDivergence(final HashMap p, final HashMap q) { + final HashMap m = this.combinePMF(q, p); + double _klDivergence = this.klDivergence(p, m); + double _multiply = ((1.0 / 2) * _klDivergence); + double _klDivergence_1 = this.klDivergence(q, m); + double _multiply_1 = ((1.0 / 2) * _klDivergence_1); + double distance = (_multiply + _multiply_1); + return distance; + } + + public double klDivergence(final HashMap p, final HashMap q) { + double distance = 0.0; + Set _keySet = q.keySet(); + for (final String key : _keySet) { + boolean _containsKey = p.containsKey(key); + if (_containsKey) { + double _distance = distance; + Double _get = p.get(key); + Double _get_1 = q.get(key); + Double _get_2 = p.get(key); + double _divide = DoubleExtensions.operator_divide(_get_1, _get_2); + double _log = Math.log(_divide); + double _multiply = ((_get).doubleValue() * _log); + double _log_1 = Math.log(2); + double _divide_1 = (_multiply / _log_1); + distance = (_distance - _divide_1); + } + } + return distance; + } + + @Override + public double mpcDistance(final List samples) { + final ToDoubleFunction _function = (Double it) -> { + return (it).doubleValue(); + }; + HashMap map = this.pmfFromSamples(samples.stream().mapToDouble(_function).toArray(), this.formatter); + int _size = map.size(); + boolean _lessThan = (_size < 2); + if (_lessThan) { + return 1; + } + return this.jsDivergence(map, this.mpcPMF); + } + + @Override + public double naDistance(final List samples) { + final ToDoubleFunction _function = (Double it) -> { + return (it).doubleValue(); + }; + HashMap map = this.pmfFromSamples(samples.stream().mapToDouble(_function).toArray(), this.formatter); + int _size = map.size(); + boolean _lessThan = (_size < 2); + if (_lessThan) { + return 1; + } + return this.jsDivergence(map, this.naPMF); + } + + @Override + public double outDegreeDistance(final List samples) { + final ToDoubleFunction _function = (Double it) -> { + return (it).doubleValue(); + }; + HashMap map = this.pmfFromSamples(samples.stream().mapToDouble(_function).toArray(), this.formatter); + int _size = map.size(); + boolean _lessThan = (_size < 2); + if (_lessThan) { + return 1; + } + return this.jsDivergence(map, this.outDegreePMF); + } + + public double nodeTypeDistance(final HashMap samples) { + return this.klDivergence(samples, this.nodeTypesPMF); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.java new file mode 100644 index 000000000..638ff3321 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.java @@ -0,0 +1,93 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.CostDistance; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Set; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; + +@SuppressWarnings("all") +public class KSDistance extends CostDistance { + private static Object ksTester /* Skipped initializer because of errors */; + + private MetricSampleGroup g; + + public KSDistance(final MetricSampleGroup g) { + this.g = g; + } + + @Override + public double mpcDistance(final List samples) { + throw new Error("Unresolved compilation problems:" + + "\nThe field KSDistance.ksTester refers to the missing type Object" + + "\nkolmogorovSmirnovStatistic cannot be resolved"); + } + + @Override + public double naDistance(final List samples) { + throw new Error("Unresolved compilation problems:" + + "\nThe field KSDistance.ksTester refers to the missing type Object" + + "\nkolmogorovSmirnovStatistic cannot be resolved"); + } + + @Override + public double outDegreeDistance(final List samples) { + throw new Error("Unresolved compilation problems:" + + "\nThe field KSDistance.ksTester refers to the missing type Object" + + "\nkolmogorovSmirnovStatistic cannot be resolved"); + } + + public double typedOutDegreeDistance(final HashMap> map) { + throw new Error("Unresolved compilation problems:" + + "\nThe field KSDistance.ksTester refers to the missing type Object" + + "\nkolmogorovSmirnovStatistic cannot be resolved"); + } + + public double nodeTypeDistance(final HashMap samples) { + HashMap typesDistMap = this.g.nodeTypeSamples; + ArrayList sourceDist = CollectionLiterals.newArrayList(); + ArrayList instanceDist = CollectionLiterals.newArrayList(); + Set _keySet = typesDistMap.keySet(); + for (final String key : _keySet) { + { + sourceDist.add(typesDistMap.get(key)); + instanceDist.add(samples.getOrDefault(key, Double.valueOf(0.0))); + } + } + return this.ks_distance_two_dist(sourceDist, instanceDist); + } + + public double edgeTypeDistance(final HashMap samples) { + HashMap typesDistMap = this.g.edgeTypeSamples; + ArrayList sourceDist = CollectionLiterals.newArrayList(); + ArrayList instanceDist = CollectionLiterals.newArrayList(); + Set _keySet = typesDistMap.keySet(); + for (final String key : _keySet) { + { + sourceDist.add(typesDistMap.get(key)); + instanceDist.add(samples.getOrDefault(key, Double.valueOf(0.0))); + } + } + return this.ks_distance_two_dist(sourceDist, instanceDist); + } + + public double ks_distance_two_dist(final List dist1, final List dist2) { + double ksStatistics = 0.0; + double sum1 = 0.0; + double sum2 = 0.0; + for (int i = 0; (i < dist1.size()); i++) { + { + double _sum1 = sum1; + Double _get = dist1.get(i); + sum1 = (_sum1 + (_get).doubleValue()); + double _sum2 = sum2; + Double _get_1 = dist2.get(i); + sum2 = (_sum2 + (_get_1).doubleValue()); + ksStatistics = Math.max(ksStatistics, Math.abs((sum1 - sum2))); + } + } + return ksStatistics; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/StateData.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/StateData.java new file mode 100644 index 000000000..29a310f4a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/StateData.java @@ -0,0 +1,38 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; + +import org.eclipse.xtend.lib.annotations.AccessorType; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.Pure; + +@SuppressWarnings("all") +public class StateData { + @Accessors(AccessorType.PUBLIC_GETTER) + private double[] features; + + @Accessors(AccessorType.PUBLIC_GETTER) + private double value; + + @Accessors(AccessorType.PUBLIC_GETTER) + private Object lastState; + + public StateData(final double[] features, final double value, final Object lastState) { + this.features = features; + this.value = value; + this.lastState = lastState; + } + + @Pure + public double[] getFeatures() { + return this.features; + } + + @Pure + public double getValue() { + return this.value; + } + + @Pure + public Object getLastState() { + return this.lastState; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.java._trace new file mode 100644 index 000000000..6e2ea420e Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.xtendbin new file mode 100644 index 000000000..e949bb115 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.java._trace new file mode 100644 index 000000000..e1d021fd4 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.xtendbin new file mode 100644 index 000000000..547fdc38d Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.java._trace new file mode 100644 index 000000000..5928ed9d7 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.xtendbin new file mode 100644 index 000000000..e9269f16f Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.java._trace new file mode 100644 index 000000000..f19eb46cc Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.xtendbin new file mode 100644 index 000000000..c634ef10d Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.java new file mode 100644 index 000000000..8a9aa8d35 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.java @@ -0,0 +1,140 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.Graph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.function.Consumer; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.xtend.lib.annotations.AccessorType; +import org.eclipse.xtend.lib.annotations.Accessors; +import org.eclipse.xtext.xbase.lib.IteratorExtensions; +import org.eclipse.xtext.xbase.lib.Pure; + +@SuppressWarnings("all") +public class EMFGraph extends Graph { + @Accessors(AccessorType.PUBLIC_GETTER) + private EObject root; + + public void init(final EObject root, final List metrics, final String name, final List referenceTypes) { + final List otherContents = IteratorExtensions.toList(root.eAllContents()); + this.root = root; + otherContents.add(root); + this.init(otherContents, metrics, name, referenceTypes); + } + + /** + * init the graph with all nodes and reference types in the meta model + * @param objects: objects in the instance model (exclude root) + * @param metrics: metrics to be evaluated + * @param name: name of the instance model + * @param ReferenceTypes: reference types defined in the meta model + */ + public void init(final List objects, final List metrics, final String name, final List referenceTypes) { + final Consumer _function = (EObject it) -> { + HashSet types = new HashSet(); + types.add(it.eClass().getName()); + this.statistic.addNodeWithAllTypes(it, types); + }; + objects.forEach(_function); + final Consumer _function_1 = (EReference it) -> { + boolean _isDerived = it.isDerived(); + boolean _not = (!_isDerived); + if (_not) { + this.statistic.addEdgeType(it.getName()); + } + }; + referenceTypes.forEach(_function_1); + final Consumer _function_2 = (EObject source) -> { + final Consumer _function_3 = (EReference r) -> { + boolean _isMany = r.isMany(); + if (_isMany) { + final Consumer _function_4 = (EObject target) -> { + this.addEdge(source, target, r); + }; + this.getNeighbours(source, r).forEach(_function_4); + } else { + Object _eGet = source.eGet(r); + final EObject target = ((EObject) _eGet); + this.addEdge(source, target, r); + } + }; + source.eClass().getEAllReferences().forEach(_function_3); + }; + objects.forEach(_function_2); + this.metrics = metrics; + this.name = name; + } + + public void removeReference(final EReference r) { + boolean _containsEdgeType = this.statistic.containsEdgeType(r.getName()); + if (_containsEdgeType) { + this.statistic.removeReference(r.getName(), r.isContainment()); + } + } + + /** + * Set basic information for the output + */ + @Override + public void setBasicInformation(final ArrayList> output) { + final ArrayList metaInfo = new ArrayList(); + metaInfo.add(Graph.META_MODEL_HEADER); + metaInfo.add(this.metaModel); + final ArrayList edgeInfo = new ArrayList(); + edgeInfo.add(Graph.NUM_EDGE_TYPE_HEADER); + int _size = this.statistic.getAllTypes().size(); + String _plus = (Integer.valueOf(_size) + ""); + edgeInfo.add(_plus); + final ArrayList nodeInfo = new ArrayList(); + nodeInfo.add(Graph.NUM_NODE_HEADER); + int _size_1 = this.statistic.getAllNodes().size(); + String _plus_1 = (Integer.valueOf(_size_1) + ""); + nodeInfo.add(_plus_1); + final ArrayList stateInfo = new ArrayList(); + stateInfo.add(Graph.STATE_ID_HEADER); + stateInfo.add(this.name); + output.add(metaInfo); + output.add(edgeInfo); + output.add(nodeInfo); + output.add(stateInfo); + } + + public EList getNeighbours(final EObject o, final EReference r) { + Object _eGet = o.eGet(r, true); + return ((EList) _eGet); + } + + public void addEdge(final EObject source, final EObject target, final EReference r) { + if ((((target != null) && (r != null)) && (!r.isDerived()))) { + this.statistic.addEdge(source, target, r.getName()); + } + } + + @Override + public GraphStatistic getStatistic() { + return this.statistic; + } + + @Override + public String getName() { + return this.name; + } + + public void setMetaModel(final String model) { + this.metaModel = model; + } + + public String getMetaModel() { + return this.metaModel; + } + + @Pure + public EObject getRoot() { + return this.root; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.java new file mode 100644 index 000000000..f9923a630 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.java @@ -0,0 +1,96 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.EdgeTypeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeTypeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedOutDegree; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import org.eclipse.xtext.xbase.lib.Conversions; + +@SuppressWarnings("all") +public abstract class Graph { + protected final static String META_MODEL_HEADER = "Meta Mode"; + + protected final static String NUM_NODE_HEADER = "Number Of Nodes"; + + protected final static String NUM_EDGE_TYPE_HEADER = "Number of Edge types"; + + protected final static String STATE_ID_HEADER = "State Id"; + + protected final GraphStatistic statistic = new GraphStatistic(); + + protected List metrics; + + protected String name = ""; + + protected String metaModel = ""; + + /** + * evaluate all metrics for this model + * return the result as a two dimentional list + */ + public ArrayList> evaluateAllMetrics() { + final ArrayList> result = new ArrayList>(); + this.setBasicInformation(result); + for (final Metric metric : this.metrics) { + { + final String[][] datas = metric.evaluate(this.statistic); + for (final String[] row : datas) { + ArrayList _arrayList = new ArrayList((Collection)Conversions.doWrapArray(row)); + result.add(_arrayList); + } + } + } + return result; + } + + public MetricSampleGroup evaluateAllMetricsToSamples() { + MetricSampleGroup sample = new MetricSampleGroup(); + for (final Metric metric : this.metrics) { + if ((metric instanceof MultiplexParticipationCoefficientMetric)) { + Object _evaluateSamples = ((MultiplexParticipationCoefficientMetric)metric).evaluateSamples(this.statistic); + sample.mpcSamples = ((ArrayList) _evaluateSamples); + } else { + if ((metric instanceof NodeActivityMetric)) { + Object _evaluateSamples_1 = ((NodeActivityMetric)metric).evaluateSamples(this.statistic); + sample.naSamples = ((ArrayList) _evaluateSamples_1); + } else { + if ((metric instanceof OutDegreeMetric)) { + Object _evaluateSamples_2 = ((OutDegreeMetric)metric).evaluateSamples(this.statistic); + sample.outDegreeSamples = ((ArrayList) _evaluateSamples_2); + } else { + if ((metric instanceof TypedOutDegree)) { + Object _evaluateSamples_3 = ((TypedOutDegree)metric).evaluateSamples(this.statistic); + sample.typedOutDegreeSamples = ((HashMap>) _evaluateSamples_3); + } else { + if ((metric instanceof NodeTypeMetric)) { + Object _evaluateSamples_4 = ((NodeTypeMetric)metric).evaluateSamples(this.statistic); + sample.nodeTypeSamples = ((HashMap) _evaluateSamples_4); + } else { + if ((metric instanceof EdgeTypeMetric)) { + Object _evaluateSamples_5 = ((EdgeTypeMetric)metric).evaluateSamples(this.statistic); + sample.edgeTypeSamples = ((HashMap) _evaluateSamples_5); + } + } + } + } + } + } + } + return sample; + } + + public abstract void setBasicInformation(final ArrayList> result); + + public abstract GraphStatistic getStatistic(); + + public abstract String getName(); +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.java new file mode 100644 index 000000000..7bd1d899f --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.java @@ -0,0 +1,201 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class GraphStatistic { + private final HashMap> incomingEdges = new HashMap>(); + + private final HashMap> outgoingEdges = new HashMap>(); + + private final HashSet edgeTypes = new HashSet(); + + private final HashMap> nodeToType = new HashMap>(); + + /** + * Add an edge type to to the graph + * @param type: type to add + */ + public void addEdgeType(final String type) { + boolean _contains = this.edgeTypes.contains(type); + if (_contains) { + return; + } + this.edgeTypes.add(type); + this.incomingEdges.put(type, ArrayListMultimap.create()); + this.outgoingEdges.put(type, ArrayListMultimap.create()); + } + + /** + * Add a node to the graph with one type in its type hierarchy + * @param node: node to add + */ + public void addNodeWithType(final EObject n, final String Type) { + HashSet _hashSet = new HashSet(); + Set types = this.nodeToType.getOrDefault(n, _hashSet); + types.add(Type); + this.nodeToType.put(n, types); + } + + public boolean containsNode(final EObject o) { + return this.nodeToType.containsKey(o); + } + + public Set getTypesForNode(final EObject o) { + HashSet _hashSet = new HashSet(); + return this.nodeToType.getOrDefault(o, _hashSet); + } + + public void overwriteCurrentType(final EObject o, final String type) { + HashSet _hashSet = new HashSet(); + Set typeSet = this.nodeToType.getOrDefault(o, _hashSet); + typeSet.clear(); + typeSet.add(type); + this.nodeToType.put(o, typeSet); + } + + /** + * Add a node to the graph with all types in its type hierarchy + */ + public void addNodeWithAllTypes(final EObject n, final Set types) { + this.nodeToType.put(n, types); + } + + /** + * Add an edge to the graph + * @param source: source node + * @param target: target node + * @param type: type of the reference + */ + public void addEdge(final EObject source, final EObject target, final String type) { + this.outgoingEdges.get(type).put(source, target); + this.incomingEdges.get(type).put(target, source); + } + + /** + * check if this graph contains a specific edge type + */ + public boolean containsEdgeType(final String typeName) { + if ((this.outgoingEdges.containsKey(typeName) && this.incomingEdges.containsKey(typeName))) { + return true; + } + return false; + } + + /** + * remove references from the statistics, potentially remove the nodes associated with it + * @Param name: name of the reference + * @Param isContainment: if true then the corresponding nodes on the incoming side will also be removed + */ + public void removeReference(final String name, final boolean isContainment) { + boolean _contains = this.edgeTypes.contains(name); + boolean _not = (!_contains); + if (_not) { + return; + } + this.edgeTypes.remove(name); + Multimap incomingSet = this.incomingEdges.remove(name); + this.outgoingEdges.remove(name); + if ((!isContainment)) { + return; + } + final Set nodesToRemove = incomingSet.keySet(); + final Consumer _function = (EObject it) -> { + this.nodeToType.remove(it); + }; + nodesToRemove.forEach(_function); + final Procedure1> _function_1 = (Multimap refMap) -> { + final Consumer _function_2 = (EObject it) -> { + refMap.removeAll(it); + }; + nodesToRemove.forEach(_function_2); + Collection values = refMap.values(); + values.removeAll(nodesToRemove); + return; + }; + final Procedure1> removeForMultimap = _function_1; + IterableExtensions.>forEach(this.incomingEdges.values(), removeForMultimap); + IterableExtensions.>forEach(this.outgoingEdges.values(), removeForMultimap); + } + + /** + * calculate the out degree for an object + */ + public int outDegree(final EObject o) { + int count = 0; + for (final String type : this.edgeTypes) { + int _count = count; + int _size = this.outgoingEdges.get(type).get(o).size(); + count = (_count + _size); + } + return count; + } + + /** + * calculate the in degree of an object + */ + public int inDegree(final EObject o) { + int count = 0; + for (final String type : this.edgeTypes) { + int _count = count; + int _size = this.incomingEdges.get(type).get(o).size(); + count = (_count + _size); + } + return count; + } + + /** + * calculate the dimentional degree of a node + */ + public int dimentionalDegree(final EObject o, final String type) { + int _size = this.incomingEdges.get(type).get(o).size(); + int _size_1 = this.outgoingEdges.get(type).get(o).size(); + return (_size + _size_1); + } + + /** + * calculate the number of edge types for a given node. + */ + public int numOfEdgeTypes(final EObject o) { + int count = 0; + for (final String type : this.edgeTypes) { + int _dimentionalDegree = this.dimentionalDegree(o, type); + boolean _greaterThan = (_dimentionalDegree > 0); + if (_greaterThan) { + count++; + } + } + return count; + } + + public List getAllTypes() { + return IterableExtensions.toList(this.edgeTypes); + } + + public Map> getNodeToTypesMap() { + return this.nodeToType; + } + + public List getAllNodes() { + return IterableExtensions.toList(this.nodeToType.keySet()); + } + + public HashMap> getOutgoingEdges() { + return this.outgoingEdges; + } + + public HashMap> incomingEdges() { + return this.incomingEdges; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.java new file mode 100644 index 000000000..83bb92cac --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.java @@ -0,0 +1,162 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.Graph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import com.google.common.collect.Iterables; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialComplexTypeInterpretationImpl; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; +import org.eclipse.emf.common.util.EList; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.ListExtensions; + +@SuppressWarnings("all") +public class PartialInterpretationGraph extends Graph { + private final String typeToExclude = "undefinedpart"; + + private final String classSuffix = " class"; + + /** + * Define a new PartialInterpretationGraph by parse every element from a PartialInterpretation + */ + public PartialInterpretationGraph(final PartialInterpretation partial, final List metrics, final String name) { + final Consumer _function = (RelationDeclaration it) -> { + String n = it.getName().split(" ")[0]; + this.statistic.addEdgeType(n); + }; + Iterables.filter(partial.getProblem().getRelations(), RelationDeclaration.class).forEach(_function); + final Iterable typeInterpretations = this.getTypes(partial); + for (final PartialComplexTypeInterpretationImpl type : typeInterpretations) { + boolean _isConcreteType = this.isConcreteType(type.getInterpretationOf()); + if (_isConcreteType) { + String typeName = type.getInterpretationOf().getName().replace(this.classSuffix, ""); + EList _elements = type.getElements(); + for (final DefinedElement node : _elements) { + boolean _containsNode = this.statistic.containsNode(node); + boolean _not = (!_containsNode); + if (_not) { + this.statistic.addNodeWithType(node, typeName); + } else { + String currentType = ((String[])Conversions.unwrapArray(this.statistic.getTypesForNode(node), String.class))[0]; + boolean _isSuperType = this.isSuperType(currentType, type.getInterpretationOf()); + if (_isSuperType) { + this.statistic.overwriteCurrentType(node, typeName); + } + } + } + } + } + EList _partialrelationinterpretation = partial.getPartialrelationinterpretation(); + for (final PartialRelationInterpretation relationInterpretation : _partialrelationinterpretation) { + { + final String type_1 = relationInterpretation.getInterpretationOf().getName().split(" ")[0]; + Iterable _filter = Iterables.filter(relationInterpretation.getRelationlinks(), BinaryElementRelationLink.class); + for (final BinaryElementRelationLink edge : _filter) { + this.statistic.addEdge(edge.getParam1(), edge.getParam2(), type_1); + } + } + } + this.name = name; + this.metrics = metrics; + } + + /** + * recursively check if a type is the super type of another + */ + public boolean isSuperType(final String typeName, final Type subtypeToCheck) { + EList superTypes = subtypeToCheck.getSupertypes(); + int _size = superTypes.size(); + boolean _equals = (_size == 0); + if (_equals) { + return false; + } else { + final Function1 _function = (Type it) -> { + return it.getName().replace(this.classSuffix, ""); + }; + boolean _contains = ListExtensions.map(subtypeToCheck.getSupertypes(), _function).contains(typeName); + if (_contains) { + return true; + } else { + for (final Type superType : superTypes) { + boolean _isSuperType = this.isSuperType(typeName, superType); + if (_isSuperType) { + return true; + } + } + return false; + } + } + } + + /** + * Check if a Type object is the class that we want to consider + * A type object is to be considered if it satisfy one of the following: + * 1. if it is not abstract + * 2. if it is abstract but has a subclass of type TypeDefinition (This means the generation is + * started with nodes in this type) + */ + public boolean isConcreteType(final Type t) { + if (((!t.isIsAbstract()) || (IterableExtensions.findFirst(t.getSubtypes(), ((Function1) (Type it) -> { + return Boolean.valueOf((it instanceof TypeDefinition)); + })) != null))) { + return true; + } + return false; + } + + /** + * Set basic information for the output + */ + @Override + public void setBasicInformation(final ArrayList> output) { + final ArrayList metaInfo = new ArrayList(); + metaInfo.add(Graph.META_MODEL_HEADER); + metaInfo.add(this.metaModel); + final ArrayList edgeInfo = new ArrayList(); + edgeInfo.add(Graph.NUM_EDGE_TYPE_HEADER); + int _size = this.statistic.getAllTypes().size(); + String _plus = (Integer.valueOf(_size) + ""); + edgeInfo.add(_plus); + final ArrayList nodeInfo = new ArrayList(); + nodeInfo.add(Graph.NUM_NODE_HEADER); + int _size_1 = this.statistic.getAllNodes().size(); + String _plus_1 = (Integer.valueOf(_size_1) + ""); + nodeInfo.add(_plus_1); + final ArrayList stateInfo = new ArrayList(); + stateInfo.add(Graph.STATE_ID_HEADER); + stateInfo.add(this.name); + output.add(metaInfo); + output.add(edgeInfo); + output.add(nodeInfo); + output.add(stateInfo); + } + + private Iterable getTypes(final PartialInterpretation partial) { + final Function1 _function = (PartialComplexTypeInterpretationImpl it) -> { + boolean _contains = it.getInterpretationOf().getName().toLowerCase().contains(this.typeToExclude); + return Boolean.valueOf((!_contains)); + }; + return IterableExtensions.filter(Iterables.filter(partial.getPartialtypeinterpratation(), PartialComplexTypeInterpretationImpl.class), _function); + } + + @Override + public GraphStatistic getStatistic() { + throw new UnsupportedOperationException("TODO: auto-generated method stub"); + } + + @Override + public String getName() { + return this.name; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.java._trace new file mode 100644 index 000000000..983bd97e5 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.xtendbin new file mode 100644 index 000000000..daf9b2854 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.DataName.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.DataName.java._trace new file mode 100644 index 000000000..7a93f65a9 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.DataName.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.java._trace new file mode 100644 index 000000000..2ee37cecc Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.xtendbin new file mode 100644 index 000000000..8dda7d217 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.java._trace new file mode 100644 index 000000000..e7945d8ce Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.xtendbin new file mode 100644 index 000000000..74675aec1 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.java new file mode 100644 index 000000000..d166e31b0 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.java @@ -0,0 +1,75 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; +import org.eclipse.xtext.xbase.lib.Exceptions; + +@SuppressWarnings("all") +public class CsvFileWriter { + public static void write(final ArrayList> datas, final String uri) { + try { + int _size = datas.size(); + boolean _lessEqualsThan = (_size <= 0); + if (_lessEqualsThan) { + return; + } + File _file = new File(uri); + final PrintWriter writer = new PrintWriter(_file); + CsvFileWriter.output(writer, datas, uri); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + public static void append(final ArrayList> datas, final String uri) { + try { + int _size = datas.size(); + boolean _lessEqualsThan = (_size <= 0); + if (_lessEqualsThan) { + return; + } + File _file = new File(uri); + FileOutputStream _fileOutputStream = new FileOutputStream(_file, true); + final PrintWriter writer = new PrintWriter(_fileOutputStream); + CsvFileWriter.output(writer, datas, uri); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + private static void output(final PrintWriter writer, final ArrayList> datas, final String uri) { + try { + final StringBuilder output = new StringBuilder(); + for (final List datarow : datas) { + { + for (int i = 0; (i < (datarow.size() - 1)); i++) { + String _get = datarow.get(i); + String _plus = (_get + ","); + output.append(_plus); + } + int _size = datarow.size(); + boolean _greaterEqualsThan = (_size >= 1); + if (_greaterEqualsThan) { + int _size_1 = datarow.size(); + int _minus = (_size_1 - 1); + output.append(datarow.get(_minus)); + output.append("\n"); + } + } + } + writer.write(output.toString()); + writer.close(); + } catch (final Throwable _t) { + if (_t instanceof FileNotFoundException) { + final FileNotFoundException e = (FileNotFoundException)_t; + e.printStackTrace(); + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/DataName.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/DataName.java new file mode 100644 index 000000000..9e2c9c864 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/DataName.java @@ -0,0 +1,12 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; + +@SuppressWarnings("all") +public class DataName { + public final static String REP_PATH = "data/"; + + public final static String MPC_REP = "mpc_rep"; + + public final static String NA_REP = "na_rep"; + + public final static String OUT_D_REP = "out_d_rep"; +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.java new file mode 100644 index 000000000..0299fc0c0 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.java @@ -0,0 +1,138 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.EdgeTypeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeTypeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedOutDegree; +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.List; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; + +@SuppressWarnings("all") +public class GraphReader { + private final ResourceSet resSet = new ResourceSetImpl(); + + private final ArrayList referenceTypes = new ArrayList(); + + private String suffix; + + public GraphReader(final EPackage metaModel, final String suffix) { + throw new Error("Unresolved compilation problems:" + + "\nXMIResourceFactoryImpl cannot be resolved."); + } + + public List readModels(final String path) { + try { + final File dir = new File(path); + boolean _isDirectory = dir.isDirectory(); + boolean _not = (!_isDirectory); + if (_not) { + throw new Exception("expecting a directory"); + } + final ArrayList graphs = new ArrayList(); + final ArrayList metrics = new ArrayList(); + OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); + metrics.add(_outDegreeMetric); + NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); + metrics.add(_nodeActivityMetric); + MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); + metrics.add(_multiplexParticipationCoefficientMetric); + TypedOutDegree _typedOutDegree = new TypedOutDegree(); + metrics.add(_typedOutDegree); + NodeTypeMetric _nodeTypeMetric = new NodeTypeMetric(); + metrics.add(_nodeTypeMetric); + EdgeTypeMetric _edgeTypeMetric = new EdgeTypeMetric(); + metrics.add(_edgeTypeMetric); + int count = 1; + final Function1 _function = (String it) -> { + return Boolean.valueOf(it.endsWith(this.suffix)); + }; + Iterable _filter = IterableExtensions.filter(((Iterable)Conversions.doWrapArray(dir.list())), _function); + for (final String name : _filter) { + { + final File file = new File(name); + final List roots = this.readModel(EObject.class, path, file.getName()); + final EMFGraph g = new EMFGraph(); + for (final EObject root : roots) { + g.init(root, metrics, name.replaceFirst(this.suffix, ""), this.referenceTypes); + } + count++; + graphs.add(g); + } + } + return graphs; + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + public EMFGraph readModel(final String path, final String filename) { + final ArrayList metrics = new ArrayList(); + OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); + metrics.add(_outDegreeMetric); + NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); + metrics.add(_nodeActivityMetric); + MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); + metrics.add(_multiplexParticipationCoefficientMetric); + TypedOutDegree _typedOutDegree = new TypedOutDegree(); + metrics.add(_typedOutDegree); + NodeTypeMetric _nodeTypeMetric = new NodeTypeMetric(); + metrics.add(_nodeTypeMetric); + EdgeTypeMetric _edgeTypeMetric = new EdgeTypeMetric(); + metrics.add(_edgeTypeMetric); + final File file = new File(filename); + final List roots = this.readModel(EObject.class, path, file.getName()); + final EMFGraph g = new EMFGraph(); + for (final EObject root : roots) { + g.init(root, metrics, filename.replaceFirst(this.suffix, ""), this.referenceTypes); + } + return g; + } + + public List readModel(final Class type, final String path, final String name) { + try { + try { + final Resource resource = this.resSet.getResource(GraphReader.getURI(path, name), true); + if ((resource == null)) { + String _string = GraphReader.getURI(path, name).toString(); + throw new FileNotFoundException(_string); + } else { + EList _contents = resource.getContents(); + return ((List) _contents); + } + } catch (final Throwable _t) { + if (_t instanceof Exception) { + final Exception e = (Exception)_t; + e.printStackTrace(); + String _string_1 = GraphReader.getURI(path, name).toString(); + throw new Exception(_string_1); + } else { + throw Exceptions.sneakyThrow(_t); + } + } + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + public static URI getURI(final String path, final String name) { + return URI.createFileURI(((path + "/") + name)); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.java new file mode 100644 index 000000000..2486cf83a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.java @@ -0,0 +1,49 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; +import com.google.common.base.Objects; +import com.google.common.collect.Iterators; +import java.util.Iterator; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.impl.EcorePackageImpl; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.IteratorExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +/** + * Read the sample of the distribution of a metric provided the csv file of the metric + */ +@SuppressWarnings("all") +public class RepMetricsReader { + private static Domain domain; + + public static MetricSampleGroup read(final Domain d) { + throw new Error("Unresolved compilation problems:" + + "\nThe method or field GithubPackageImpl is undefined" + + "\neINSTANCE cannot be resolved"); + } + + /** + * Read representative model + */ + private static MetricSampleGroup readMetrics(final GraphReader r, final String path) { + final EMFGraph model = IterableExtensions.head(r.readModels(path)); + boolean _equals = Objects.equal(RepMetricsReader.domain, Domain.Ecore); + if (_equals) { + final Function1 _function = (EReference it) -> { + return Boolean.valueOf((((((it.getName().equals("eGenericType") || it.getName().equals("eGenericSuperTypes")) || it.getName().equals("eFactoryInstance")) || + it.getName().equals("eGenericExceptions")) || it.getName().equals("references")) || it.getName().equals("contents"))); + }; + Iterator refsToRemove = IteratorExtensions.filter(Iterators.filter(EcorePackageImpl.eINSTANCE.eAllContents(), EReference.class), _function); + final Procedure1 _function_1 = (EReference it) -> { + model.removeReference(it); + }; + IteratorExtensions.forEach(refsToRemove, _function_1); + } + return model.evaluateAllMetricsToSamples(); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.java._trace new file mode 100644 index 000000000..6f941f844 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.xtendbin new file mode 100644 index 000000000..97674c9e6 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.java._trace new file mode 100644 index 000000000..4feb01504 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.xtendbin new file mode 100644 index 000000000..ffe985d4b Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.java._trace new file mode 100644 index 000000000..e206794e5 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.xtendbin new file mode 100644 index 000000000..478004db9 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.java._trace new file mode 100644 index 000000000..7e322646d Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.xtendbin new file mode 100644 index 000000000..14cb7ae53 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.java._trace new file mode 100644 index 000000000..b6cf817fc Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.xtendbin new file mode 100644 index 000000000..074a81678 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.java._trace new file mode 100644 index 000000000..fbf9468d3 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.xtendbin new file mode 100644 index 000000000..38aa72c11 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.java._trace new file mode 100644 index 000000000..bfec1ccd6 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.xtendbin new file mode 100644 index 000000000..eeed0bd41 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.java._trace new file mode 100644 index 000000000..5cc35d7c7 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.xtendbin new file mode 100644 index 000000000..3d9fe56ee Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.java._trace new file mode 100644 index 000000000..0b3e6e4fc Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.xtendbin new file mode 100644 index 000000000..5f61f5067 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/EdgeTypeMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/EdgeTypeMetric.java new file mode 100644 index 000000000..58dea5670 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/EdgeTypeMetric.java @@ -0,0 +1,65 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import com.google.common.collect.Multimap; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Set; +import java.util.function.BiConsumer; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.Functions.Function2; +import org.eclipse.xtext.xbase.lib.IterableExtensions; + +@SuppressWarnings("all") +public class EdgeTypeMetric extends Metric { + @Override + public String[][] evaluate(final GraphStatistic g) { + Object _evaluateSamples = this.evaluateSamples(g); + HashMap map = ((HashMap) _evaluateSamples); + ArrayList output = new ArrayList(); + output.add(((String[])Conversions.unwrapArray(CollectionLiterals.newArrayList("Edge Type"), String.class))); + Set keys = map.keySet(); + ArrayList values = CollectionLiterals.newArrayList(); + for (final String key : keys) { + Double _get = map.get(key); + String _plus = (_get + ""); + values.add(_plus); + } + final Set _converted_keys = (Set)keys; + output.add(((String[])Conversions.unwrapArray(_converted_keys, String.class))); + final ArrayList _converted_values = (ArrayList)values; + output.add(((String[])Conversions.unwrapArray(_converted_values, String.class))); + return ((String[][])Conversions.unwrapArray(output, String[].class)); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + final HashMap map = new HashMap(); + HashMap> outgoingEdges = g.getOutgoingEdges(); + final Function2, Integer> _function = (Integer r, Multimap t) -> { + final Function2, Integer> _function_1 = (Integer r1, Collection t1) -> { + int _size = t1.size(); + return Integer.valueOf(((r1).intValue() + _size)); + }; + Integer _fold = IterableExtensions., Integer>fold(t.asMap().values(), Integer.valueOf(0), _function_1); + return Integer.valueOf(((r).intValue() + (_fold).intValue())); + }; + Integer _fold = IterableExtensions., Integer>fold(outgoingEdges.values(), Integer.valueOf(0), _function); + final double edgeCount = ((double) (int) _fold); + final BiConsumer> _function_1 = (String k, Multimap v) -> { + final Function2, Integer> _function_2 = (Integer r, Collection t) -> { + int _size = t.size(); + return Integer.valueOf(((r).intValue() + _size)); + }; + Integer _fold_1 = IterableExtensions., Integer>fold(v.asMap().values(), Integer.valueOf(0), _function_2); + double value = ((_fold_1).intValue() / edgeCount); + map.put(k, Double.valueOf(value)); + }; + outgoingEdges.forEach(_function_1); + return map; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.java new file mode 100644 index 000000000..be6353a22 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.java @@ -0,0 +1,10 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; + +@SuppressWarnings("all") +public abstract class Metric { + public abstract String[][] evaluate(final GraphStatistic g); + + public abstract Object evaluateSamples(final GraphStatistic g); +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.java new file mode 100644 index 000000000..6db61944e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.java @@ -0,0 +1,19 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import java.util.HashMap; +import java.util.List; + +@SuppressWarnings("all") +public class MetricSampleGroup { + public List mpcSamples; + + public List naSamples; + + public List outDegreeSamples; + + public HashMap> typedOutDegreeSamples; + + public HashMap nodeTypeSamples; + + public HashMap edgeTypeSamples; +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java new file mode 100644 index 000000000..660a59785 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java @@ -0,0 +1,59 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; +import org.eclipse.emf.ecore.EObject; + +@SuppressWarnings("all") +public class MultiplexParticipationCoefficientMetric extends Metric { + public final static String countName = "MPCCount"; + + public final static String valueName = "MPCValue"; + + private final DecimalFormat formatter = new DecimalFormat("#0.00000"); + + @Override + public String[][] evaluate(final GraphStatistic g) { + throw new Error("Unresolved compilation problems:" + + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + final ArrayList samples = new ArrayList(); + final int typeCounts = g.getAllTypes().size(); + final Consumer _function = (EObject it) -> { + samples.add(Double.valueOf(this.calculateMPC(it, g, typeCounts))); + }; + g.getAllNodes().forEach(_function); + return samples; + } + + public double calculateMPC(final EObject n, final GraphStatistic g, final int typeCounts) { + int _outDegree = g.outDegree(n); + int _inDegree = g.inDegree(n); + final int edgeCounts = (_outDegree + _inDegree); + double coef = 0.0; + List _allTypes = g.getAllTypes(); + for (final String type : _allTypes) { + { + int _dimentionalDegree = g.dimentionalDegree(n, type); + final double degree = ((double) _dimentionalDegree); + double _coef = coef; + double _pow = Math.pow((degree / edgeCounts), 2); + coef = (_coef + _pow); + } + } + coef = (1 - coef); + coef = ((coef * typeCounts) / (typeCounts - 1)); + boolean _isNaN = Double.isNaN(coef); + if (_isNaN) { + coef = 0; + } + return Double.parseDouble(this.formatter.format(coef)); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.java new file mode 100644 index 000000000..12bec460c --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.java @@ -0,0 +1,31 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import java.util.ArrayList; +import java.util.function.Consumer; +import org.eclipse.emf.ecore.EObject; + +@SuppressWarnings("all") +public class NodeActivityMetric extends Metric { + public final static String countName = "NACount"; + + public final static String valueName = "NAValue"; + + @Override + public String[][] evaluate(final GraphStatistic g) { + throw new Error("Unresolved compilation problems:" + + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + final ArrayList samples = new ArrayList(); + final Consumer _function = (EObject it) -> { + int _numOfEdgeTypes = g.numOfEdgeTypes(it); + samples.add(Double.valueOf(((double) _numOfEdgeTypes))); + }; + g.getAllNodes().forEach(_function); + return samples; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeTypeMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeTypeMetric.java new file mode 100644 index 000000000..75c2cfefb --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeTypeMetric.java @@ -0,0 +1,54 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Conversions; + +@SuppressWarnings("all") +public class NodeTypeMetric extends Metric { + @Override + public String[][] evaluate(final GraphStatistic g) { + Object _evaluateSamples = this.evaluateSamples(g); + HashMap map = ((HashMap) _evaluateSamples); + ArrayList output = new ArrayList(); + output.add(((String[])Conversions.unwrapArray(CollectionLiterals.newArrayList("Node Type"), String.class))); + Set keys = map.keySet(); + ArrayList values = CollectionLiterals.newArrayList(); + for (final String key : keys) { + Double _get = map.get(key); + String _plus = (_get + ""); + values.add(_plus); + } + final Set _converted_keys = (Set)keys; + output.add(((String[])Conversions.unwrapArray(_converted_keys, String.class))); + final ArrayList _converted_values = (ArrayList)values; + output.add(((String[])Conversions.unwrapArray(_converted_values, String.class))); + return ((String[][])Conversions.unwrapArray(output, String[].class)); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + HashMap map = new HashMap(); + List nodes = g.getAllNodes(); + int _size = nodes.size(); + double single = (1.0 / _size); + Map> nodeToType = g.getNodeToTypesMap(); + for (final EObject node : nodes) { + Set _get = nodeToType.get(node); + for (final String cl : _get) { + { + Double value = map.getOrDefault(cl, Double.valueOf(0.0)); + map.put(cl, Double.valueOf(((value).doubleValue() + single))); + } + } + } + return map; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.java new file mode 100644 index 000000000..67e4be0dd --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.java @@ -0,0 +1,31 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import java.util.ArrayList; +import java.util.function.Consumer; +import org.eclipse.emf.ecore.EObject; + +@SuppressWarnings("all") +public class OutDegreeMetric extends Metric { + public final static String countName = "OutDegreeCount"; + + public final static String valueName = "OutDegreeValue"; + + @Override + public String[][] evaluate(final GraphStatistic g) { + throw new Error("Unresolved compilation problems:" + + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + final ArrayList samples = new ArrayList(); + final Consumer _function = (EObject it) -> { + int _outDegree = g.outDegree(it); + samples.add(Double.valueOf(((double) _outDegree))); + }; + g.getAllNodes().forEach(_function); + return samples; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.java new file mode 100644 index 000000000..042af5c35 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.java @@ -0,0 +1,74 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import com.google.common.base.Objects; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.function.Consumer; +import org.eclipse.emf.ecore.EObject; + +@SuppressWarnings("all") +public class TypedClusteringCoefficientMetric extends Metric { + public final static String countName = "TCCCount"; + + public final static String valueName = "TCCValue"; + + private final DecimalFormat formatter = new DecimalFormat("#0.00000"); + + @Override + public String[][] evaluate(final GraphStatistic g) { + throw new Error("Unresolved compilation problems:" + + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + final ArrayList samples = new ArrayList(); + final Consumer _function = (EObject it) -> { + samples.add(Double.valueOf(this.calculateTCC1(it, g))); + }; + g.getAllNodes().forEach(_function); + return samples; + } + + /** + * Compute TCC1 metric for node n + */ + public double calculateTCC1(final EObject n, final GraphStatistic g) { + int wedges = 0; + int triangles = 0; + List _allTypes = g.getAllTypes(); + for (final String type1 : _allTypes) { + { + Collection _get = g.getOutgoingEdges().get(type1).get(n); + final HashSet typed1RelatedOfN = new HashSet(_get); + Collection _get_1 = g.incomingEdges().get(type1).get(n); + final HashSet type1EdgeSourceNodesOfN = new HashSet(_get_1); + typed1RelatedOfN.addAll(type1EdgeSourceNodesOfN); + final int d = typed1RelatedOfN.size(); + int _wedges = wedges; + wedges = (_wedges + (d * (d - 1))); + for (final EObject n1 : typed1RelatedOfN) { + for (final EObject n2 : typed1RelatedOfN) { + List _allTypes_1 = g.getAllTypes(); + for (final String type2 : _allTypes_1) { + if (((!Objects.equal(type1, type2)) && (g.getOutgoingEdges().get(type2).containsEntry(n1, n2) || + g.getOutgoingEdges().get(type2).containsEntry(n2, n1)))) { + triangles++; + } + } + } + } + } + } + if ((wedges == 0.0)) { + return 0.0; + } else { + return (((double) triangles) / wedges); + } + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedOutDegree.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedOutDegree.java new file mode 100644 index 000000000..dce80389f --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedOutDegree.java @@ -0,0 +1,73 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; +import com.google.common.collect.Multimap; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Conversions; + +@SuppressWarnings("all") +public class TypedOutDegree extends Metric { + private HashMap> calculateMetric(final GraphStatistic g) { + HashMap> outgoingEdges = g.getOutgoingEdges(); + HashMap> metric = new HashMap>(); + Map> nodeToTypes = g.getNodeToTypesMap(); + Set _keySet = outgoingEdges.keySet(); + for (final String edgeType : _keySet) { + Set _keySet_1 = outgoingEdges.get(edgeType).keySet(); + for (final EObject node : _keySet_1) { + { + Set classes = nodeToTypes.get(node); + for (final String cl : classes) { + { + String key = ((cl + " ") + edgeType); + List typeCount = metric.get(key); + if ((typeCount == null)) { + ArrayList _arrayList = new ArrayList(); + typeCount = _arrayList; + metric.put(key, typeCount); + } + typeCount.add(Integer.valueOf(outgoingEdges.get(edgeType).get(node).size())); + } + } + } + } + } + return metric; + } + + @Override + public String[][] evaluate(final GraphStatistic g) { + HashMap> metric = this.calculateMetric(g); + ArrayList output = new ArrayList(); + output.add(((String[])Conversions.unwrapArray(CollectionLiterals.newArrayList("Typed Out Degree"), String.class))); + Set _keySet = metric.keySet(); + for (final String key : _keySet) { + { + List samples = metric.get(key); + int _size = samples.size(); + int _plus = (_size + 1); + String[] outputForOnePair = new String[_plus]; + outputForOnePair[0] = key; + for (int i = 0; (i < samples.size()); i++) { + Integer _get = samples.get(i); + String _plus_1 = (_get + ""); + outputForOnePair[(i + 1)] = _plus_1; + } + output.add(outputForOnePair); + } + } + return ((String[][])Conversions.unwrapArray(output, String[].class)); + } + + @Override + public Object evaluateSamples(final GraphStatistic g) { + return this.calculateMetric(g); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.java._trace new file mode 100644 index 000000000..906a396a1 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.xtendbin new file mode 100644 index 000000000..06925afdc Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/LinearModel.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/LinearModel.java new file mode 100644 index 000000000..6a7f84970 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/LinearModel.java @@ -0,0 +1,90 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData; +import com.google.common.base.Objects; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@SuppressWarnings("all") +public class LinearModel { + private double ridge; + + private Map stateAndHistory; + + private List samples; + + public LinearModel(final double ridge) { + this.ridge = ridge; + HashMap _hashMap = new HashMap(); + this.stateAndHistory = _hashMap; + ArrayList _arrayList = new ArrayList(); + this.samples = _arrayList; + } + + /** + * reset the current train data for regression to a new trajectory + * @param state: the last state of the trajectory + */ + public void resetRegression(final Object state) { + this.samples.clear(); + boolean _containsKey = this.stateAndHistory.containsKey(state); + if (_containsKey) { + StateData data = this.stateAndHistory.get(state); + Object curState = state; + this.samples.add(data); + while ((this.stateAndHistory.containsKey(data.getLastState()) && (!Objects.equal(data.getLastState(), curState)))) { + { + curState = data.getLastState(); + data = this.stateAndHistory.get(data.getLastState()); + this.samples.add(data); + } + } + } + } + + /** + * Add a new data point to the current training set + * @param state: the state on which the new data point is calculated + * @param features: the set of feature value(x) + * @param value: the value of the state (y) + * @param lastState: the state which transformed to current state, used to record the trajectory + */ + public boolean feedData(final Object state, final double[] features, final double value, final Object lastState) { + boolean _xblockexpression = false; + { + StateData data = new StateData(features, value, lastState); + this.stateAndHistory.put(state, data); + _xblockexpression = this.samples.add(data); + } + return _xblockexpression; + } + + /** + * get prediction for next state, without storing the data point into the training set + * @param features: the feature values of current state + * @param value: the value of the current state + * @param: featuresToPredict: the features of the state wanted to be predected + * @return the value of the state to be predicted + */ + public double getPredictionForNextDataSample(final double[] features, final double value, final double[] featuresToPredict) { + throw new Error("Unresolved compilation problems:" + + "\nMatrix cannot be resolved." + + "\nMatrix cannot be resolved." + + "\nLinearRegression cannot be resolved." + + "\ncoefficients cannot be resolved"); + } + + private double predict(final double[] parameters, final double[] featuresToPredict) { + double result = parameters[0]; + for (int i = 0; (i < featuresToPredict.length); i++) { + double _result = result; + double _get = parameters[i]; + double _get_1 = featuresToPredict[i]; + double _multiply = (_get * _get_1); + result = (_result + _multiply); + } + return result; + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.java._trace new file mode 100644 index 000000000..1756f86a5 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.xtendbin new file mode 100644 index 000000000..708955a49 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.java._trace new file mode 100644 index 000000000..0cb68ca8b Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.java._trace differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.xtendbin new file mode 100644 index 000000000..637217841 Binary files /dev/null and b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.xtendbin differ diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ConstraintCollection.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ConstraintCollection.java new file mode 100644 index 000000000..92c69beaf --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ConstraintCollection.java @@ -0,0 +1,79 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.eclipse.emf.common.notify.Notifier; +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.xtext.xbase.lib.InputOutput; + +@SuppressWarnings("all") +public class ConstraintCollection { + private final /* ArrayList */Object constraints /* Skipped initializer because of errors */; + + private /* BaseGeneratedPatternGroup */Object patterns; + + private List resources = new ArrayList(); + + public ConstraintCollection(final /* List */Object constraints, final List uris, final /* BaseGeneratedPatternGroup */Object patterns) { + throw new Error("Unresolved compilation problems:" + + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" + + "\nThe field ConstraintCollection.patterns refers to the missing type BaseGeneratedPatternGroup"); + } + + public ConstraintCollection(final /* List */Object constraints, final /* BaseGeneratedPatternGroup */Object patterns) { + throw new Error("Unresolved compilation problems:" + + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" + + "\nThe field ConstraintCollection.patterns refers to the missing type BaseGeneratedPatternGroup"); + } + + public boolean addModel(final Notifier n) { + return this.resources.add(n); + } + + public String setURIs(final List uris) { + String _xblockexpression = null; + { + final ResourceSetImpl resSet = new ResourceSetImpl(); + for (final String uri : uris) { + { + Resource resource = resSet.getResource(URI.createURI(uri), true); + this.resources.add(resource); + } + } + _xblockexpression = InputOutput.println("reading model finished"); + } + return _xblockexpression; + } + + public List calculateViolations() { + throw new Error("Unresolved compilation problems:" + + "\nThe method or field querySpecification is undefined for the type Object" + + "\nThe method initEngine(Notifier) from the type ConstraintCollection refers to the missing type Object" + + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" + + "\ngetMatcher cannot be resolved" + + "\ncountMatches cannot be resolved"); + } + + public ArrayList> calculateViolationMaps() { + throw new Error("Unresolved compilation problems:" + + "\nThe method or field querySpecification is undefined for the type Object" + + "\nThe method or field querySpecification is undefined for the type Object" + + "\nThe method initEngine(Notifier) from the type ConstraintCollection refers to the missing type Object" + + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" + + "\ngetMatcher cannot be resolved" + + "\ncountMatches cannot be resolved" + + "\nsimpleName cannot be resolved"); + } + + private Object initEngine(final Notifier r) { + throw new Error("Unresolved compilation problems:" + + "\nThe method or field ViatraQueryEngine is undefined" + + "\nEMFScope cannot be resolved." + + "\nThe field ConstraintCollection.patterns refers to the missing type BaseGeneratedPatternGroup" + + "\non cannot be resolved" + + "\nprepare cannot be resolved"); + } +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.java new file mode 100644 index 000000000..7eb3ec77e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.java @@ -0,0 +1,34 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation; + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; +import java.util.ArrayList; +import java.util.Map; +import org.eclipse.emf.ecore.EObject; + +@SuppressWarnings("all") +public class ViolationCheck { + /** + * Return the total number of violations + */ + public static int calculateViolationCounts(final EObject root, final Domain d) { + throw new Error("Unresolved compilation problems:" + + "\nThe method loadConstraints(String) from the type ViolationCheck refers to the missing type IConstraintSpecification" + + "\nThe constructor ConstraintCollection(List, BaseGeneratedPatternGroup) refers to the missing type IConstraintSpecification"); + } + + /** + * return a map contain the count for each type of violation + */ + public static Map violationMaps(final EObject root) { + throw new Error("Unresolved compilation problems:" + + "\nThe method loadConstraints(String) from the type ViolationCheck refers to the missing type IConstraintSpecification" + + "\nThe constructor ConstraintCollection(List, BaseGeneratedPatternGroup) refers to the missing type IConstraintSpecification"); + } + + public static /* ArrayList */Object loadConstraints(final String packageName) { + throw new Error("Unresolved compilation problems:" + + "\nIConstraintSpecification cannot be resolved to a type." + + "\nIConstraintSpecification cannot be resolved to a type." + + "\nThe method or field IConstraintSpecification is undefined"); + } +} diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace new file mode 100644 index 000000000..5ab4c0fbb Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.xtendbin new file mode 100644 index 000000000..0c2cbb6e8 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace new file mode 100644 index 000000000..605b24804 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.xtendbin new file mode 100644 index 000000000..056bbf887 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace new file mode 100644 index 000000000..16ded94b4 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.xtendbin new file mode 100644 index 000000000..40092f54e Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace new file mode 100644 index 000000000..bd23cb35f Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.xtendbin new file mode 100644 index 000000000..ae757bb6c Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace new file mode 100644 index 000000000..71d80e38c Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.xtendbin new file mode 100644 index 000000000..ed2b817f7 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace new file mode 100644 index 000000000..b423786db Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.xtendbin new file mode 100644 index 000000000..6d0da8963 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace new file mode 100644 index 000000000..cce23aecb Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.xtendbin new file mode 100644 index 000000000..a50e372c8 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace new file mode 100644 index 000000000..e46f96005 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.xtendbin new file mode 100644 index 000000000..8d56931dc Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace new file mode 100644 index 000000000..9ce2edb26 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.xtendbin new file mode 100644 index 000000000..0641ed7b4 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace new file mode 100644 index 000000000..cdfcef6e5 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.xtendbin new file mode 100644 index 000000000..99dd130b1 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQROSZ.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQROSZ.java._trace new file mode 100644 index 000000000..787e63c71 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQROSZ.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace new file mode 100644 index 000000000..0c8cc5d01 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.xtendbin new file mode 100644 index 000000000..d397ff4c3 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.gitignore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.gitignore new file mode 100644 index 000000000..f2c394d6a --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.gitignore @@ -0,0 +1,20 @@ +/.CalculationsNA.java._trace +/.CalcNA.java._trace +/.CalcMPC.java._trace +/.CalcMetric.java._trace +/.CalcNDA.java._trace +/.CalcNDC.java._trace +/.CalcEDA.java._trace +/.CalcC.java._trace +/.CalcSQR.java._trace +/.CalcSQRtot.java._trace +/.CalcSQRMAX.java._trace +/.CalcSQRTOT.java._trace +/.CalcSQROSZ.java._trace +/.CalcSQROSZ2.java._trace +/.CalcSQROCOOL.java._trace +/.CalcSQRCNT.java._trace +/.CalcSQRNUM.java._trace +/.SQROSZ.java._trace +/.CalcSQRCC.java._trace +/.CalcMetric2.java._trace diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/CalcSQRMAX.xtend_ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/CalcSQRMAX.xtend_ new file mode 100644 index 000000000..071abe38e --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/CalcSQRMAX.xtend_ @@ -0,0 +1,87 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculations + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.examples.Util +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +import java.util.HashMap +import java.util.Map +import java.util.Set +import org.eclipse.emf.ecore.EObject + +import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* + +class CalcSQRMAX extends CalcMetric{ + + // /////////////////// + // SQRMAX(v) = # squares containing v / (# neighbours of v * max # of neeighbours of any neighbour of v) + // /////////////////// + static val neighbourhoodComputer = new PartialInterpretation2ImmutableTypeLattice + + override calcFromModel(EObject model) { + val nodes = model.eResource.allContents.toList + + // fill HashSet + var Map> node2Neighbours = new HashMap + Util.fillWithNodes(nodes, node2Neighbours) + + // iterate over nodes and add connected nodes + Util.getNeighboursList(nodes, node2Neighbours) + + // Measurements + var totalC = 0.0 + var max2ndNeighbours = 0.0 + var num1stNeighbours = 0.0 + for (node : nodes) { + val neighbours = node.lookup(node2Neighbours) + num1stNeighbours = neighbours.size + max2ndNeighbours = 0 + var numSquares = 0.0 + for (neighbour1 : neighbours) { + for (neighbour2 : neighbours) { + if (neighbour1 != neighbour2) { + val neighsOfNeigh = neighbour1.lookup(node2Neighbours) + if (max2ndNeighbours < neighsOfNeigh.size) { + max2ndNeighbours = neighsOfNeigh.size + } + for (neighOfNeigh1 : neighsOfNeigh) { + if (neighOfNeigh1 != node && neighOfNeigh1.lookup(node2Neighbours).contains(neighbour2)) { +// print(neighbour1) +// print(" ") +// print(neighbour2) +// print(" ") +// print(neighOfNeigh1) +// println() + numSquares++ + } + } + + } + } + } +// println(node) + val num2ndNeighbours = num1stNeighbours * max2ndNeighbours + +// print("(" + numSquares + "x" + num2ndNeighbours) + var sqr = 0.0 + if (num2ndNeighbours != 0) { + sqr = numSquares / num2ndNeighbours + } + +// println("=" + sqr + ")") + totalC += sqr + } + val numNodes = nodes.length + val avgC = totalC / numNodes + + return avgC + } + + override calcFromNHLattice(PartialInterpretation pm) { + return 0.0 +// return getCfromNHLattice(pm, 2, v) + } + + override calcFromNHLattice(PartialInterpretation pm, Integer depth) { + return 0.0 + } +} \ No newline at end of file diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/CalcSQROSZ2.xtend_ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/CalcSQROSZ2.xtend_ new file mode 100644 index 000000000..e999d62f7 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/CalcSQROSZ2.xtend_ @@ -0,0 +1,69 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculations + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.examples.Util +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +import java.util.HashMap +import java.util.Map +import java.util.Set +import org.eclipse.emf.ecore.EObject + +import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* + +class CalcSQROSZ2 extends CalcMetric { + + // /////////////////// + // SQROSZ2(v) = # depth-4 paths that lead to v / total # depth-4 paths + // /////////////////// + static val neighbourhoodComputer = new PartialInterpretation2ImmutableTypeLattice + + override calcFromModel(EObject model) { + val nodes = model.eResource.allContents.toList + + // fill HashSet + var Map> node2Neighbours = new HashMap + Util.fillWithNodes(nodes, node2Neighbours) + + // iterate over nodes and add connected nodes + Util.getNeighboursList(nodes, node2Neighbours) + + // Measurements + var totalSQR = 0.0 + var totalDenom = 0.0 + var num4thNeighbours = 0.0 + for (node : nodes) { + val neighbours = node.lookup(node2Neighbours) + + for (neighbour1 : neighbours) { + val neighbours1 = neighbour1.lookup(node2Neighbours) + + for (neighbour2 : neighbours1) { + val neighbours2 = neighbour2.lookup(node2Neighbours) + + for (neighbour3 : neighbours2) { + val neighbours3 = neighbour3.lookup(node2Neighbours) + num4thNeighbours = neighbours3.size + + if (neighbours3.contains(node)) { + totalSQR += 1 + } + totalDenom += num4thNeighbours + } + } + } + + } + val avgSQR = totalSQR / totalDenom + + return avgSQR + } + + override calcFromNHLattice(PartialInterpretation pm) { + return 0.0 +// return getCfromNHLattice(pm, 2, v) + } + + override calcFromNHLattice(PartialInterpretation pm, Integer depth) { + return 0.0 + } +} \ No newline at end of file diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace new file mode 100644 index 000000000..32fa550b9 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin new file mode 100644 index 000000000..e826d04b6 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CalculationsNA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CalculationsNA.java._trace new file mode 100644 index 000000000..76aa59b02 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CalculationsNA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace new file mode 100644 index 000000000..edd885626 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.xtendbin new file mode 100644 index 000000000..ed4f8ad0a Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace new file mode 100644 index 000000000..fc92b1d38 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.xtendbin new file mode 100644 index 000000000..c06ce1003 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace new file mode 100644 index 000000000..306c13619 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.xtendbin new file mode 100644 index 000000000..992d5b16b Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.xtendbin differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore new file mode 100644 index 000000000..b5da4aad9 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/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/calculations/.CalcC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace new file mode 100644 index 000000000..5ab4c0fbb Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace new file mode 100644 index 000000000..605b24804 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace new file mode 100644 index 000000000..16ded94b4 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace new file mode 100644 index 000000000..bd23cb35f Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace new file mode 100644 index 000000000..71d80e38c Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace new file mode 100644 index 000000000..b423786db Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace new file mode 100644 index 000000000..cce23aecb Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace new file mode 100644 index 000000000..e46f96005 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace new file mode 100644 index 000000000..9ce2edb26 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace new file mode 100644 index 000000000..cdfcef6e5 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace new file mode 100644 index 000000000..0c8cc5d01 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace new file mode 100644 index 000000000..08d35ce0d Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace new file mode 100644 index 000000000..edd885626 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace new file mode 100644 index 000000000..fc92b1d38 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace differ diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace new file mode 100644 index 000000000..306c13619 Binary files /dev/null and b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace differ diff --git a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Alloy2LogicMapper.xtend b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Alloy2LogicMapper.xtend index 2efd6b29e..59ec2ae43 100644 --- a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Alloy2LogicMapper.xtend +++ b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Alloy2LogicMapper.xtend @@ -9,15 +9,15 @@ class Alloy2LogicMapper { public def transformOutput(LogicProblem problem, int requiredNumberOfSolution, MonitoredAlloySolution monitoredAlloySolution, Logic2AlloyLanguageMapperTrace trace, long transformationTime) { val models = monitoredAlloySolution.aswers.map[it.key].toList - if(!monitoredAlloySolution.finishedBeforeTimeout) { - return createInsuficientResourcesResult => [ - it.problem = problem - it.representation += models - it.trace = trace - it.statistics = transformStatistics(monitoredAlloySolution,transformationTime) - ] - } else { - if(models.last.satisfiable || requiredNumberOfSolution == -1) { +// if(!monitoredAlloySolution.finishedBeforeTimeout) { +// return createInsuficientResourcesResult => [ +// it.problem = problem +// it.representation += models +// it.trace = trace +// it.statistics = transformStatistics(monitoredAlloySolution,transformationTime) +// ] +// } else { + if((!models.isEmpty && models.last.satisfiable) || requiredNumberOfSolution == -1) { return createModelResult => [ it.problem = problem it.representation += models @@ -32,7 +32,7 @@ class Alloy2LogicMapper { it.statistics = transformStatistics(monitoredAlloySolution,transformationTime) ] } - } +// } } def transformStatistics(MonitoredAlloySolution solution, long transformationTime) { diff --git a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_TypeMapper_FilteredTypes.xtend b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_TypeMapper_FilteredTypes.xtend index 3379ba203..fb094bc5f 100644 --- a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_TypeMapper_FilteredTypes.xtend +++ b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_TypeMapper_FilteredTypes.xtend @@ -254,7 +254,7 @@ class Logic2AlloyLanguageMapper_TypeMapper_FilteredTypes implements Logic2AlloyL } override getUndefinedSupertypeScope(int undefinedScope, Logic2AlloyLanguageMapperTrace trace) { - return undefinedScope + trace.typeTrace.definedElement2Declaration.size + if(undefinedScope == Integer.MAX_VALUE) return undefinedScope else return undefinedScope + trace.typeTrace.definedElement2Declaration.size } override getTypeInterpreter() { diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF index 83c90829a..06b3abb36 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: %pluginName Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-ClassPath: . -Bundle-Vendor: %providerName +Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic, diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird index f2a97719b..f18bce286 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird @@ -1,38 +1,38 @@ - + PartialInterpretation.ecore platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore http://www.eclipse.org/emf/2002/Ecore - + - + - + - + - + - + - + - - - + + + @@ -66,7 +66,7 @@ - + @@ -273,6 +273,10 @@ + + + + @@ -649,683 +653,691 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + bold - + - + bold - + - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + - + - + - + - - + + labelSize bold - + labelSize - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor italic - + - + bold - + - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor borderSize - + - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor italic - + - + bold - + - + - + - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor italic - + - + - + - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor italic - + - - + + bold - + - - + + bold - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + - - + + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + italic - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + italic - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + italic - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - - + + - + - - + + - + - - + + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - - + + bold - + - + - - + + bold - + - + - - + + bold - + - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - + strokeColor size - + labelSize labelColor - + labelSize labelColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic + + + + + + + + - + - - + + labelSize - + labelSize - + - + size - - + + - + - - + + strokeColor - - + + - + - - + + labelSize - + labelSize - + - - - + + + @@ -1353,7 +1365,7 @@ - + @@ -1817,547 +1829,547 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - - + + - + - - + + - + - - + + - + - - + + - + - + bold - + - + bold - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + labelSize bold - + labelSize - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - - + + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor italic - + - - + + - + - - + + - + - - + + labelSize - + labelSize - + - - - + + + labelSize - + labelSize - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - - + + - + - - + + - + - - + + bold - + - + - - + + labelSize - + labelSize - + - - - + + + labelSize - + labelSize - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + borderSize italic - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + borderSize - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + borderSize - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + borderSize - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + borderSize - + - + - + - + size - + labelSize - + labelSize - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - - + + labelSize - + labelSize - + - + size - + bold - + - + - + size - + bold - + - + - + size - + bold - + - + - - - - + + + + - + - - - + + + labelSize - + labelSize - + - + size - + bold - + - + - - - + + + @@ -2385,7 +2397,7 @@ - + @@ -3059,724 +3071,724 @@ - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - - + + - + - - + + - + - - + + - + - + bold - + - + bold - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + labelSize bold - + labelSize - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor borderSize - + - + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor italic - + - - + + bold - + - - + + bold - + - - + + labelSize - + labelSize - + - - + + labelSize - + labelSize - + - - + + - - + + - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + backgroundColor foregroundColor - + - + - + - + italic - + - + - + strokeColor size - + labelSize labelColor - + labelSize labelColor - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + - - + + labelSize bold - + labelSize - + - - + + labelSize - + labelSize - + - + size - + labelSize - + labelSize - + - + strokeColor - - + + - + - - + + labelSize - + labelSize - + - + - + labelSize - + labelSize - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + - + bold - + - + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + bold - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + bold - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + bold - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + bold - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + borderSize - + - + bold - + - + bold - + - - + + labelSize - + labelSize - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + italic - + - + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + - + - + italic - + - + KEEP_LOCATION KEEP_SIZE KEEP_RATIO - + - + - + - + italic - + - + - + - - + + - + diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/META-INF/MANIFEST.MF index 754ff55d2..fea5cc003 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/META-INF/MANIFEST.MF +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.visualisation/META-INF/MANIFEST.MF @@ -27,7 +27,8 @@ Require-Bundle: com.google.guava, org.apache.batik.util.gui;bundle-version="[1.6.0,1.6.1]", org.apache.xerces;bundle-version="2.9.0", org.w3c.dom.svg;bundle-version="1.1.0", - org.w3c.css.sac;bundle-version="1.3.1" + org.w3c.css.sac;bundle-version="1.3.1", + org.eclipse.m2e.maven.runtime.slf4j.simple Import-Package: com.eclipsesource.v8;version="4.6.0", com.eclipsesource.v8.debug;version="4.6.0", com.eclipsesource.v8.utils;version="4.6.0", diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.classpath new file mode 100644 index 000000000..1287f96c4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.gitignore new file mode 100644 index 000000000..53edc85ab --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/src-gen/ +/xtend-gen/ \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.project new file mode 100644 index 000000000..696326630 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.project @@ -0,0 +1,34 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.language.ide + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.settings/org.eclipse.core.resources.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4824b8026 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/META-INF/MANIFEST.MF new file mode 100644 index 000000000..f833c9838 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ca.mcgill.ecse.dslreasoner.vampire.language.ide +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.language.ide; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: ca.mcgill.ecse.dslreasoner.vampire.language, + org.eclipse.xtext.ide, + org.eclipse.xtext.xbase.ide, + org.antlr.runtime +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr, + ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/build.properties new file mode 100644 index 000000000..4c654e9b0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/build.properties @@ -0,0 +1,6 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/ +bin.excludes = **/*.xtend diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup new file mode 100644 index 000000000..ada679018 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup @@ -0,0 +1 @@ +ca.mcgill.ecse.dslreasoner.ide.VampireLanguageIdeSetup diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/AbstractVampireLanguageIdeModule.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/AbstractVampireLanguageIdeModule.java new file mode 100644 index 000000000..d3d4b54d8 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/AbstractVampireLanguageIdeModule.java @@ -0,0 +1,60 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ide; + +import ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.VampireLanguageParser; +import ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal.InternalVampireLanguageLexer; +import com.google.inject.Binder; +import com.google.inject.name.Names; +import org.eclipse.xtext.ide.DefaultIdeModule; +import org.eclipse.xtext.ide.LexerIdeBindings; +import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher; +import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; +import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper; +import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper; +import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +import org.eclipse.xtext.ide.refactoring.IRenameStrategy2; +import org.eclipse.xtext.ide.server.rename.IRenameService; +import org.eclipse.xtext.ide.server.rename.RenameService; + +/** + * Manual modifications go to {@link VampireLanguageIdeModule}. + */ +@SuppressWarnings("all") +public abstract class AbstractVampireLanguageIdeModule extends DefaultIdeModule { + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureContentAssistLexer(Binder binder) { + binder.bind(Lexer.class) + .annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST)) + .to(InternalVampireLanguageLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindIContentAssistParser() { + return VampireLanguageParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindIProposalConflictHelper() { + return AntlrProposalConflictHelper.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class bindIPrefixMatcher() { + return FQNPrefixMatcher.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameService() { + return RenameService.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameStrategy2() { + return IRenameStrategy2.DefaultImpl.class; + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/PartialVampireLanguageContentAssistParser.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/PartialVampireLanguageContentAssistParser.java new file mode 100644 index 000000000..3e7d7281a --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/PartialVampireLanguageContentAssistParser.java @@ -0,0 +1,34 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr; + +import java.util.Collection; +import java.util.Collections; +import org.eclipse.xtext.AbstractRule; +import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser; +import org.eclipse.xtext.util.PolymorphicDispatcher; + +public class PartialVampireLanguageContentAssistParser extends VampireLanguageParser implements IPartialEditingContentAssistParser { + + private AbstractRule rule; + + @Override + public void initializeFor(AbstractRule rule) { + this.rule = rule; + } + + @Override + protected Collection getFollowElements(AbstractInternalContentAssistParser parser) { + if (rule == null || rule.eIsProxy()) + return Collections.emptyList(); + String methodName = "entryRule" + rule.getName(); + PolymorphicDispatcher> dispatcher = + new PolymorphicDispatcher>(methodName, 0, 0, Collections.singletonList(parser)); + dispatcher.invoke(); + return parser.getFollowElements(); + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/VampireLanguageParser.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/VampireLanguageParser.java new file mode 100644 index 000000000..3e823077c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/VampireLanguageParser.java @@ -0,0 +1,205 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr; + +import ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal.InternalVampireLanguageParser; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; +import com.google.common.collect.ImmutableMap; +import com.google.inject.Inject; +import com.google.inject.Singleton; +import java.util.Map; +import org.eclipse.xtext.AbstractElement; +import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser; + +public class VampireLanguageParser extends AbstractContentAssistParser { + + @Singleton + public static final class NameMappings { + + private final Map mappings; + + @Inject + public NameMappings(VampireLanguageGrammarAccess grammarAccess) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + init(builder, grammarAccess); + this.mappings = builder.build(); + } + + public String getRuleName(AbstractElement element) { + return mappings.get(element); + } + + private static void init(ImmutableMap.Builder builder, VampireLanguageGrammarAccess grammarAccess) { + builder.put(grammarAccess.getVampireModelAccess().getAlternatives(), "rule__VampireModel__Alternatives"); + builder.put(grammarAccess.getVLSConfirmationsAccess().getAlternatives(), "rule__VLSConfirmations__Alternatives"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getNameAlternatives_2_0(), "rule__VLSFofFormula__NameAlternatives_2_0"); + builder.put(grammarAccess.getVLSTffNameAccess().getAlternatives(), "rule__VLSTffName__Alternatives"); + builder.put(grammarAccess.getVLSTffDeclPredAccess().getAlternatives(), "rule__VLSTffDeclPred__Alternatives"); + builder.put(grammarAccess.getVLSRoleAccess().getAlternatives(), "rule__VLSRole__Alternatives"); + builder.put(grammarAccess.getVLSAnnotationAccess().getNameAlternatives_1_0(), "rule__VLSAnnotation__NameAlternatives_1_0"); + builder.put(grammarAccess.getVLSTffTermAccess().getAlternatives(), "rule__VLSTffTerm__Alternatives"); + builder.put(grammarAccess.getVLSDeclarationAccess().getAlternatives(), "rule__VLSDeclaration__Alternatives"); + builder.put(grammarAccess.getVLSBinaryAccess().getAlternatives_1(), "rule__VLSBinary__Alternatives_1"); + builder.put(grammarAccess.getVLSBinaryAccess().getAlternatives_1_0_0(), "rule__VLSBinary__Alternatives_1_0_0"); + builder.put(grammarAccess.getVLSUnitaryFormulaAccess().getAlternatives(), "rule__VLSUnitaryFormula__Alternatives"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_2_0(), "rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_3_1_0(), "rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_2_0(), "rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_3_1_0(), "rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getAlternatives_1_0(), "rule__VLSUnaryInfix__Alternatives_1_0"); + builder.put(grammarAccess.getVLSAtomicAccess().getAlternatives(), "rule__VLSAtomic__Alternatives"); + builder.put(grammarAccess.getVLSAtomicConstantAccess().getAlternatives(), "rule__VLSAtomicConstant__Alternatives"); + builder.put(grammarAccess.getVLSAtomicConstantAccess().getNameAlternatives_0_1_0(), "rule__VLSAtomicConstant__NameAlternatives_0_1_0"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getAlternatives(), "rule__VLSAtomicFunction__Alternatives"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getConstantAlternatives_0_1_0(), "rule__VLSAtomicFunction__ConstantAlternatives_0_1_0"); + builder.put(grammarAccess.getVLSFofTermAccess().getAlternatives(), "rule__VLSFofTerm__Alternatives"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAlternatives_0_0(), "rule__VLSFunctionAsTerm__FunctorAlternatives_0_0"); + builder.put(grammarAccess.getVLSDefinedTermAccess().getAlternatives(), "rule__VLSDefinedTerm__Alternatives"); + builder.put(grammarAccess.getVLSConfirmationsAccess().getGroup_0(), "rule__VLSConfirmations__Group_0__0"); + builder.put(grammarAccess.getVLSConfirmationsAccess().getGroup_1(), "rule__VLSConfirmations__Group_1__0"); + builder.put(grammarAccess.getVLSConfirmationsAccess().getGroup_2(), "rule__VLSConfirmations__Group_2__0"); + builder.put(grammarAccess.getVLSConfirmationsAccess().getGroup_3(), "rule__VLSConfirmations__Group_3__0"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getGroup(), "rule__VLSFofFormula__Group__0"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getGroup_7(), "rule__VLSFofFormula__Group_7__0"); + builder.put(grammarAccess.getVLSTffFormulaAccess().getGroup(), "rule__VLSTffFormula__Group__0"); + builder.put(grammarAccess.getVLSTffFormulaAccess().getGroup_7(), "rule__VLSTffFormula__Group_7__0"); + builder.put(grammarAccess.getVLSTffDeclPredAccess().getGroup_0(), "rule__VLSTffDeclPred__Group_0__0"); + builder.put(grammarAccess.getVLSAnnotationAccess().getGroup(), "rule__VLSAnnotation__Group__0"); + builder.put(grammarAccess.getVLSAnnotationAccess().getGroup_2(), "rule__VLSAnnotation__Group_2__0"); + builder.put(grammarAccess.getVLSAnnotationTermsAccess().getGroup(), "rule__VLSAnnotationTerms__Group__0"); + builder.put(grammarAccess.getVLSAnnotationTermsAccess().getGroup_1(), "rule__VLSAnnotationTerms__Group_1__0"); + builder.put(grammarAccess.getVLSOtherDeclarationAccess().getGroup(), "rule__VLSOtherDeclaration__Group__0"); + builder.put(grammarAccess.getVLSVariableDeclarationAccess().getGroup(), "rule__VLSVariableDeclaration__Group__0"); + builder.put(grammarAccess.getVLSTypeDefAccess().getGroup(), "rule__VLSTypeDef__Group__0"); + builder.put(grammarAccess.getVLSTypeDefAccess().getGroup_1(), "rule__VLSTypeDef__Group_1__0"); + builder.put(grammarAccess.getVLSUnitaryTermAccess().getGroup(), "rule__VLSUnitaryTerm__Group__0"); + builder.put(grammarAccess.getVLSUnitaryTermAccess().getGroup_1(), "rule__VLSUnitaryTerm__Group_1__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup(), "rule__VLSBinary__Group__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0(), "rule__VLSBinary__Group_1_0__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_0(), "rule__VLSBinary__Group_1_0_0_0__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_1(), "rule__VLSBinary__Group_1_0_0_1__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_2(), "rule__VLSBinary__Group_1_0_0_2__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_3(), "rule__VLSBinary__Group_1_0_0_3__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_4(), "rule__VLSBinary__Group_1_0_0_4__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_5(), "rule__VLSBinary__Group_1_0_0_5__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_1(), "rule__VLSBinary__Group_1_1__0"); + builder.put(grammarAccess.getVLSBinaryAccess().getGroup_1_2(), "rule__VLSBinary__Group_1_2__0"); + builder.put(grammarAccess.getVLSUnitaryFormulaAccess().getGroup_4(), "rule__VLSUnitaryFormula__Group_4__0"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getGroup(), "rule__VLSUniversalQuantifier__Group__0"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1(), "rule__VLSUniversalQuantifier__Group_1__0"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1_3(), "rule__VLSUniversalQuantifier__Group_1_3__0"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getGroup(), "rule__VLSExistentialQuantifier__Group__0"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1(), "rule__VLSExistentialQuantifier__Group_1__0"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1_3(), "rule__VLSExistentialQuantifier__Group_1_3__0"); + builder.put(grammarAccess.getVLSUnaryNegationAccess().getGroup(), "rule__VLSUnaryNegation__Group__0"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getGroup(), "rule__VLSUnaryInfix__Group__0"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getGroup_1(), "rule__VLSUnaryInfix__Group_1__0"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_0(), "rule__VLSUnaryInfix__Group_1_0_0__0"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_1(), "rule__VLSUnaryInfix__Group_1_0_1__0"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_2(), "rule__VLSUnaryInfix__Group_1_0_2__0"); + builder.put(grammarAccess.getVLSAtomicConstantAccess().getGroup_0(), "rule__VLSAtomicConstant__Group_0__0"); + builder.put(grammarAccess.getVLSAtomicConstantAccess().getGroup_1(), "rule__VLSAtomicConstant__Group_1__0"); + builder.put(grammarAccess.getVLSAtomicConstantAccess().getGroup_2(), "rule__VLSAtomicConstant__Group_2__0"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0(), "rule__VLSAtomicFunction__Group_0__0"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2(), "rule__VLSAtomicFunction__Group_0_2__0"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2_2(), "rule__VLSAtomicFunction__Group_0_2_2__0"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getGroup_1(), "rule__VLSAtomicFunction__Group_1__0"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getGroup(), "rule__VLSFunctionAsTerm__Group__0"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1(), "rule__VLSFunctionAsTerm__Group_1__0"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1_2(), "rule__VLSFunctionAsTerm__Group_1_2__0"); + builder.put(grammarAccess.getVLSDefinedTermAccess().getGroup_0(), "rule__VLSDefinedTerm__Group_0__0"); + builder.put(grammarAccess.getVLSDefinedTermAccess().getGroup_1(), "rule__VLSDefinedTerm__Group_1__0"); + builder.put(grammarAccess.getVampireModelAccess().getCommentsAssignment_0(), "rule__VampireModel__CommentsAssignment_0"); + builder.put(grammarAccess.getVampireModelAccess().getConfirmationsAssignment_1(), "rule__VampireModel__ConfirmationsAssignment_1"); + builder.put(grammarAccess.getVampireModelAccess().getFormulasAssignment_2(), "rule__VampireModel__FormulasAssignment_2"); + builder.put(grammarAccess.getVampireModelAccess().getTfformulasAssignment_3(), "rule__VampireModel__TfformulasAssignment_3"); + builder.put(grammarAccess.getVLSCommentAccess().getCommentAssignment(), "rule__VLSComment__CommentAssignment"); + builder.put(grammarAccess.getVLSConfirmationsAccess().getNameAssignment_2_3(), "rule__VLSConfirmations__NameAssignment_2_3"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getNameAssignment_2(), "rule__VLSFofFormula__NameAssignment_2"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getFofRoleAssignment_4(), "rule__VLSFofFormula__FofRoleAssignment_4"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getFofFormulaAssignment_6(), "rule__VLSFofFormula__FofFormulaAssignment_6"); + builder.put(grammarAccess.getVLSFofFormulaAccess().getAnnotationsAssignment_7_1(), "rule__VLSFofFormula__AnnotationsAssignment_7_1"); + builder.put(grammarAccess.getVLSTffFormulaAccess().getNameAssignment_2(), "rule__VLSTffFormula__NameAssignment_2"); + builder.put(grammarAccess.getVLSTffFormulaAccess().getTffRoleAssignment_4(), "rule__VLSTffFormula__TffRoleAssignment_4"); + builder.put(grammarAccess.getVLSTffFormulaAccess().getFofFormulaAssignment_6(), "rule__VLSTffFormula__FofFormulaAssignment_6"); + builder.put(grammarAccess.getVLSTffFormulaAccess().getAnnotationsAssignment_7_1(), "rule__VLSTffFormula__AnnotationsAssignment_7_1"); + builder.put(grammarAccess.getVLSAnnotationAccess().getNameAssignment_1(), "rule__VLSAnnotation__NameAssignment_1"); + builder.put(grammarAccess.getVLSAnnotationAccess().getFollowupAssignment_2_1(), "rule__VLSAnnotation__FollowupAssignment_2_1"); + builder.put(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_0(), "rule__VLSAnnotationTerms__TermsAssignment_0"); + builder.put(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_1_1(), "rule__VLSAnnotationTerms__TermsAssignment_1_1"); + builder.put(grammarAccess.getVLSCommentTermAccess().getCommentAssignment(), "rule__VLSCommentTerm__CommentAssignment"); + builder.put(grammarAccess.getVLSOtherDeclarationAccess().getNameAssignment_0(), "rule__VLSOtherDeclaration__NameAssignment_0"); + builder.put(grammarAccess.getVLSOtherDeclarationAccess().getTypeAssignment_2(), "rule__VLSOtherDeclaration__TypeAssignment_2"); + builder.put(grammarAccess.getVLSVariableDeclarationAccess().getNameAssignment_0(), "rule__VLSVariableDeclaration__NameAssignment_0"); + builder.put(grammarAccess.getVLSVariableDeclarationAccess().getTypeAssignment_2(), "rule__VLSVariableDeclaration__TypeAssignment_2"); + builder.put(grammarAccess.getVLSTypeDefAccess().getTypeSigAssignment_0(), "rule__VLSTypeDef__TypeSigAssignment_0"); + builder.put(grammarAccess.getVLSTypeDefAccess().getMapsToAssignment_1_1(), "rule__VLSTypeDef__MapsToAssignment_1_1"); + builder.put(grammarAccess.getVLSUnitaryTermAccess().getInitTypeAssignment_0(), "rule__VLSUnitaryTerm__InitTypeAssignment_0"); + builder.put(grammarAccess.getVLSUnitaryTermAccess().getNextTypeAssignment_1_1(), "rule__VLSUnitaryTerm__NextTypeAssignment_1_1"); + builder.put(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_0_1(), "rule__VLSBinary__RightAssignment_1_0_1"); + builder.put(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_1_2(), "rule__VLSBinary__RightAssignment_1_1_2"); + builder.put(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_2_2(), "rule__VLSBinary__RightAssignment_1_2_2"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_2(), "rule__VLSUniversalQuantifier__VariablesAssignment_1_2"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_3_1(), "rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1"); + builder.put(grammarAccess.getVLSUniversalQuantifierAccess().getOperandAssignment_2(), "rule__VLSUniversalQuantifier__OperandAssignment_2"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_2(), "rule__VLSExistentialQuantifier__VariablesAssignment_1_2"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_3_1(), "rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1"); + builder.put(grammarAccess.getVLSExistentialQuantifierAccess().getOperandAssignment_2(), "rule__VLSExistentialQuantifier__OperandAssignment_2"); + builder.put(grammarAccess.getVLSUnaryNegationAccess().getOperandAssignment_2(), "rule__VLSUnaryNegation__OperandAssignment_2"); + builder.put(grammarAccess.getVLSUnaryInfixAccess().getRightAssignment_1_1(), "rule__VLSUnaryInfix__RightAssignment_1_1"); + builder.put(grammarAccess.getVLSAtomicConstantAccess().getNameAssignment_0_1(), "rule__VLSAtomicConstant__NameAssignment_0_1"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getConstantAssignment_0_1(), "rule__VLSAtomicFunction__ConstantAssignment_0_1"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_1(), "rule__VLSAtomicFunction__TermsAssignment_0_2_1"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_2_1(), "rule__VLSAtomicFunction__TermsAssignment_0_2_2_1"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getNameAssignment_1_1(), "rule__VLSAtomicFunction__NameAssignment_1_1"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_3(), "rule__VLSAtomicFunction__TermsAssignment_1_3"); + builder.put(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_5(), "rule__VLSAtomicFunction__TermsAssignment_1_5"); + builder.put(grammarAccess.getVLSVariableAccess().getNameAssignment(), "rule__VLSVariable__NameAssignment"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAssignment_0(), "rule__VLSFunctionAsTerm__FunctorAssignment_0"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_1(), "rule__VLSFunctionAsTerm__TermsAssignment_1_1"); + builder.put(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_2_1(), "rule__VLSFunctionAsTerm__TermsAssignment_1_2_1"); + builder.put(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_0_1(), "rule__VLSDefinedTerm__ValueAssignment_0_1"); + builder.put(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_1_1(), "rule__VLSDefinedTerm__ValueAssignment_1_1"); + } + } + + @Inject + private NameMappings nameMappings; + + @Inject + private VampireLanguageGrammarAccess grammarAccess; + + @Override + protected InternalVampireLanguageParser createParser() { + InternalVampireLanguageParser result = new InternalVampireLanguageParser(null); + result.setGrammarAccess(grammarAccess); + return result; + } + + @Override + protected String getRuleName(AbstractElement element) { + return nameMappings.getRuleName(element); + } + + @Override + protected String[] getInitialHiddenTokens() { + return new String[] { "RULE_WS" }; + } + + public VampireLanguageGrammarAccess getGrammarAccess() { + return this.grammarAccess; + } + + public void setGrammarAccess(VampireLanguageGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + public NameMappings getNameMappings() { + return nameMappings; + } + + public void setNameMappings(NameMappings nameMappings) { + this.nameMappings = nameMappings; + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguage.g b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguage.g new file mode 100644 index 000000000..25312fbcb --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguage.g @@ -0,0 +1,6926 @@ +/* + * generated by Xtext 2.14.0 + */ +grammar InternalVampireLanguage; + +options { + superClass=AbstractInternalContentAssistParser; +} + +@lexer::header { +package ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +} + +@parser::header { +package ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal; + +import java.io.InputStream; +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; + +} +@parser::members { + private VampireLanguageGrammarAccess grammarAccess; + + public void setGrammarAccess(VampireLanguageGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + @Override + protected Grammar getGrammar() { + return grammarAccess.getGrammar(); + } + + @Override + protected String getValueForTokenName(String tokenName) { + return tokenName; + } +} + +// Entry rule entryRuleVampireModel +entryRuleVampireModel +: +{ before(grammarAccess.getVampireModelRule()); } + ruleVampireModel +{ after(grammarAccess.getVampireModelRule()); } + EOF +; + +// Rule VampireModel +ruleVampireModel + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVampireModelAccess().getAlternatives()); } + (rule__VampireModel__Alternatives)* + { after(grammarAccess.getVampireModelAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSComment +entryRuleVLSComment +: +{ before(grammarAccess.getVLSCommentRule()); } + ruleVLSComment +{ after(grammarAccess.getVLSCommentRule()); } + EOF +; + +// Rule VLSComment +ruleVLSComment + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSCommentAccess().getCommentAssignment()); } + (rule__VLSComment__CommentAssignment) + { after(grammarAccess.getVLSCommentAccess().getCommentAssignment()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSConfirmations +entryRuleVLSConfirmations +: +{ before(grammarAccess.getVLSConfirmationsRule()); } + ruleVLSConfirmations +{ after(grammarAccess.getVLSConfirmationsRule()); } + EOF +; + +// Rule VLSConfirmations +ruleVLSConfirmations + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSConfirmationsAccess().getAlternatives()); } + (rule__VLSConfirmations__Alternatives) + { after(grammarAccess.getVLSConfirmationsAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSFofFormula +entryRuleVLSFofFormula +: +{ before(grammarAccess.getVLSFofFormulaRule()); } + ruleVLSFofFormula +{ after(grammarAccess.getVLSFofFormulaRule()); } + EOF +; + +// Rule VLSFofFormula +ruleVLSFofFormula + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSFofFormulaAccess().getGroup()); } + (rule__VLSFofFormula__Group__0) + { after(grammarAccess.getVLSFofFormulaAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTffFormula +entryRuleVLSTffFormula +: +{ before(grammarAccess.getVLSTffFormulaRule()); } + ruleVLSTffFormula +{ after(grammarAccess.getVLSTffFormulaRule()); } + EOF +; + +// Rule VLSTffFormula +ruleVLSTffFormula + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTffFormulaAccess().getGroup()); } + (rule__VLSTffFormula__Group__0) + { after(grammarAccess.getVLSTffFormulaAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTffName +entryRuleVLSTffName +: +{ before(grammarAccess.getVLSTffNameRule()); } + ruleVLSTffName +{ after(grammarAccess.getVLSTffNameRule()); } + EOF +; + +// Rule VLSTffName +ruleVLSTffName + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTffNameAccess().getAlternatives()); } + (rule__VLSTffName__Alternatives) + { after(grammarAccess.getVLSTffNameAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTffDistinct +entryRuleVLSTffDistinct +: +{ before(grammarAccess.getVLSTffDistinctRule()); } + ruleVLSTffDistinct +{ after(grammarAccess.getVLSTffDistinctRule()); } + EOF +; + +// Rule VLSTffDistinct +ruleVLSTffDistinct + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTffDistinctAccess().getDistinct_domainKeyword()); } + 'distinct_domain' + { after(grammarAccess.getVLSTffDistinctAccess().getDistinct_domainKeyword()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTffFinite +entryRuleVLSTffFinite +: +{ before(grammarAccess.getVLSTffFiniteRule()); } + ruleVLSTffFinite +{ after(grammarAccess.getVLSTffFiniteRule()); } + EOF +; + +// Rule VLSTffFinite +ruleVLSTffFinite + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTffFiniteAccess().getFinite_domainKeyword()); } + 'finite_domain' + { after(grammarAccess.getVLSTffFiniteAccess().getFinite_domainKeyword()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTffDeclPred +entryRuleVLSTffDeclPred +: +{ before(grammarAccess.getVLSTffDeclPredRule()); } + ruleVLSTffDeclPred +{ after(grammarAccess.getVLSTffDeclPredRule()); } + EOF +; + +// Rule VLSTffDeclPred +ruleVLSTffDeclPred + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTffDeclPredAccess().getAlternatives()); } + (rule__VLSTffDeclPred__Alternatives) + { after(grammarAccess.getVLSTffDeclPredAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSRole +entryRuleVLSRole +: +{ before(grammarAccess.getVLSRoleRule()); } + ruleVLSRole +{ after(grammarAccess.getVLSRoleRule()); } + EOF +; + +// Rule VLSRole +ruleVLSRole + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSRoleAccess().getAlternatives()); } + (rule__VLSRole__Alternatives) + { after(grammarAccess.getVLSRoleAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSAnnotation +entryRuleVLSAnnotation +: +{ before(grammarAccess.getVLSAnnotationRule()); } + ruleVLSAnnotation +{ after(grammarAccess.getVLSAnnotationRule()); } + EOF +; + +// Rule VLSAnnotation +ruleVLSAnnotation + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSAnnotationAccess().getGroup()); } + (rule__VLSAnnotation__Group__0) + { after(grammarAccess.getVLSAnnotationAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSAnnotationTerms +entryRuleVLSAnnotationTerms +: +{ before(grammarAccess.getVLSAnnotationTermsRule()); } + ruleVLSAnnotationTerms +{ after(grammarAccess.getVLSAnnotationTermsRule()); } + EOF +; + +// Rule VLSAnnotationTerms +ruleVLSAnnotationTerms + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSAnnotationTermsAccess().getGroup()); } + (rule__VLSAnnotationTerms__Group__0) + { after(grammarAccess.getVLSAnnotationTermsAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTffTerm +entryRuleVLSTffTerm +: +{ before(grammarAccess.getVLSTffTermRule()); } + ruleVLSTffTerm +{ after(grammarAccess.getVLSTffTermRule()); } + EOF +; + +// Rule VLSTffTerm +ruleVLSTffTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTffTermAccess().getAlternatives()); } + (rule__VLSTffTerm__Alternatives) + { after(grammarAccess.getVLSTffTermAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSCommentTerm +entryRuleVLSCommentTerm +: +{ before(grammarAccess.getVLSCommentTermRule()); } + ruleVLSCommentTerm +{ after(grammarAccess.getVLSCommentTermRule()); } + EOF +; + +// Rule VLSCommentTerm +ruleVLSCommentTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSCommentTermAccess().getCommentAssignment()); } + (rule__VLSCommentTerm__CommentAssignment) + { after(grammarAccess.getVLSCommentTermAccess().getCommentAssignment()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSDeclaration +entryRuleVLSDeclaration +: +{ before(grammarAccess.getVLSDeclarationRule()); } + ruleVLSDeclaration +{ after(grammarAccess.getVLSDeclarationRule()); } + EOF +; + +// Rule VLSDeclaration +ruleVLSDeclaration + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSDeclarationAccess().getAlternatives()); } + (rule__VLSDeclaration__Alternatives) + { after(grammarAccess.getVLSDeclarationAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSOtherDeclaration +entryRuleVLSOtherDeclaration +: +{ before(grammarAccess.getVLSOtherDeclarationRule()); } + ruleVLSOtherDeclaration +{ after(grammarAccess.getVLSOtherDeclarationRule()); } + EOF +; + +// Rule VLSOtherDeclaration +ruleVLSOtherDeclaration + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSOtherDeclarationAccess().getGroup()); } + (rule__VLSOtherDeclaration__Group__0) + { after(grammarAccess.getVLSOtherDeclarationAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSVariableDeclaration +entryRuleVLSVariableDeclaration +: +{ before(grammarAccess.getVLSVariableDeclarationRule()); } + ruleVLSVariableDeclaration +{ after(grammarAccess.getVLSVariableDeclarationRule()); } + EOF +; + +// Rule VLSVariableDeclaration +ruleVLSVariableDeclaration + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSVariableDeclarationAccess().getGroup()); } + (rule__VLSVariableDeclaration__Group__0) + { after(grammarAccess.getVLSVariableDeclarationAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTypeDef +entryRuleVLSTypeDef +: +{ before(grammarAccess.getVLSTypeDefRule()); } + ruleVLSTypeDef +{ after(grammarAccess.getVLSTypeDefRule()); } + EOF +; + +// Rule VLSTypeDef +ruleVLSTypeDef + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTypeDefAccess().getGroup()); } + (rule__VLSTypeDef__Group__0) + { after(grammarAccess.getVLSTypeDefAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSUnitaryTerm +entryRuleVLSUnitaryTerm +: +{ before(grammarAccess.getVLSUnitaryTermRule()); } + ruleVLSUnitaryTerm +{ after(grammarAccess.getVLSUnitaryTermRule()); } + EOF +; + +// Rule VLSUnitaryTerm +ruleVLSUnitaryTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSUnitaryTermAccess().getGroup()); } + (rule__VLSUnitaryTerm__Group__0) + { after(grammarAccess.getVLSUnitaryTermAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSTerm +entryRuleVLSTerm +: +{ before(grammarAccess.getVLSTermRule()); } + ruleVLSTerm +{ after(grammarAccess.getVLSTermRule()); } + EOF +; + +// Rule VLSTerm +ruleVLSTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSTermAccess().getVLSBinaryParserRuleCall()); } + ruleVLSBinary + { after(grammarAccess.getVLSTermAccess().getVLSBinaryParserRuleCall()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSBinary +entryRuleVLSBinary +: +{ before(grammarAccess.getVLSBinaryRule()); } + ruleVLSBinary +{ after(grammarAccess.getVLSBinaryRule()); } + EOF +; + +// Rule VLSBinary +ruleVLSBinary + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup()); } + (rule__VLSBinary__Group__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSUnitaryFormula +entryRuleVLSUnitaryFormula +: +{ before(grammarAccess.getVLSUnitaryFormulaRule()); } + ruleVLSUnitaryFormula +{ after(grammarAccess.getVLSUnitaryFormulaRule()); } + EOF +; + +// Rule VLSUnitaryFormula +ruleVLSUnitaryFormula + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getAlternatives()); } + (rule__VLSUnitaryFormula__Alternatives) + { after(grammarAccess.getVLSUnitaryFormulaAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSUniversalQuantifier +entryRuleVLSUniversalQuantifier +: +{ before(grammarAccess.getVLSUniversalQuantifierRule()); } + ruleVLSUniversalQuantifier +{ after(grammarAccess.getVLSUniversalQuantifierRule()); } + EOF +; + +// Rule VLSUniversalQuantifier +ruleVLSUniversalQuantifier + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getGroup()); } + (rule__VLSUniversalQuantifier__Group__0) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSExistentialQuantifier +entryRuleVLSExistentialQuantifier +: +{ before(grammarAccess.getVLSExistentialQuantifierRule()); } + ruleVLSExistentialQuantifier +{ after(grammarAccess.getVLSExistentialQuantifierRule()); } + EOF +; + +// Rule VLSExistentialQuantifier +ruleVLSExistentialQuantifier + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getGroup()); } + (rule__VLSExistentialQuantifier__Group__0) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSUnaryNegation +entryRuleVLSUnaryNegation +: +{ before(grammarAccess.getVLSUnaryNegationRule()); } + ruleVLSUnaryNegation +{ after(grammarAccess.getVLSUnaryNegationRule()); } + EOF +; + +// Rule VLSUnaryNegation +ruleVLSUnaryNegation + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSUnaryNegationAccess().getGroup()); } + (rule__VLSUnaryNegation__Group__0) + { after(grammarAccess.getVLSUnaryNegationAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSUnaryInfix +entryRuleVLSUnaryInfix +: +{ before(grammarAccess.getVLSUnaryInfixRule()); } + ruleVLSUnaryInfix +{ after(grammarAccess.getVLSUnaryInfixRule()); } + EOF +; + +// Rule VLSUnaryInfix +ruleVLSUnaryInfix + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSUnaryInfixAccess().getGroup()); } + (rule__VLSUnaryInfix__Group__0) + { after(grammarAccess.getVLSUnaryInfixAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSAtomic +entryRuleVLSAtomic +: +{ before(grammarAccess.getVLSAtomicRule()); } + ruleVLSAtomic +{ after(grammarAccess.getVLSAtomicRule()); } + EOF +; + +// Rule VLSAtomic +ruleVLSAtomic + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSAtomicAccess().getAlternatives()); } + (rule__VLSAtomic__Alternatives) + { after(grammarAccess.getVLSAtomicAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSAtomicConstant +entryRuleVLSAtomicConstant +: +{ before(grammarAccess.getVLSAtomicConstantRule()); } + ruleVLSAtomicConstant +{ after(grammarAccess.getVLSAtomicConstantRule()); } + EOF +; + +// Rule VLSAtomicConstant +ruleVLSAtomicConstant + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getAlternatives()); } + (rule__VLSAtomicConstant__Alternatives) + { after(grammarAccess.getVLSAtomicConstantAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSAtomicFunction +entryRuleVLSAtomicFunction +: +{ before(grammarAccess.getVLSAtomicFunctionRule()); } + ruleVLSAtomicFunction +{ after(grammarAccess.getVLSAtomicFunctionRule()); } + EOF +; + +// Rule VLSAtomicFunction +ruleVLSAtomicFunction + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getAlternatives()); } + (rule__VLSAtomicFunction__Alternatives) + { after(grammarAccess.getVLSAtomicFunctionAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSVariable +entryRuleVLSVariable +: +{ before(grammarAccess.getVLSVariableRule()); } + ruleVLSVariable +{ after(grammarAccess.getVLSVariableRule()); } + EOF +; + +// Rule VLSVariable +ruleVLSVariable + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSVariableAccess().getNameAssignment()); } + (rule__VLSVariable__NameAssignment) + { after(grammarAccess.getVLSVariableAccess().getNameAssignment()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSFofTerm +entryRuleVLSFofTerm +: +{ before(grammarAccess.getVLSFofTermRule()); } + ruleVLSFofTerm +{ after(grammarAccess.getVLSFofTermRule()); } + EOF +; + +// Rule VLSFofTerm +ruleVLSFofTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSFofTermAccess().getAlternatives()); } + (rule__VLSFofTerm__Alternatives) + { after(grammarAccess.getVLSFofTermAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSFunctionAsTerm +entryRuleVLSFunctionAsTerm +: +{ before(grammarAccess.getVLSFunctionAsTermRule()); } + ruleVLSFunctionAsTerm +{ after(grammarAccess.getVLSFunctionAsTermRule()); } + EOF +; + +// Rule VLSFunctionAsTerm +ruleVLSFunctionAsTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getGroup()); } + (rule__VLSFunctionAsTerm__Group__0) + { after(grammarAccess.getVLSFunctionAsTermAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleVLSDefinedTerm +entryRuleVLSDefinedTerm +: +{ before(grammarAccess.getVLSDefinedTermRule()); } + ruleVLSDefinedTerm +{ after(grammarAccess.getVLSDefinedTermRule()); } + EOF +; + +// Rule VLSDefinedTerm +ruleVLSDefinedTerm + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getVLSDefinedTermAccess().getAlternatives()); } + (rule__VLSDefinedTerm__Alternatives) + { after(grammarAccess.getVLSDefinedTermAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VampireModel__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVampireModelAccess().getCommentsAssignment_0()); } + (rule__VampireModel__CommentsAssignment_0) + { after(grammarAccess.getVampireModelAccess().getCommentsAssignment_0()); } + ) + | + ( + { before(grammarAccess.getVampireModelAccess().getConfirmationsAssignment_1()); } + (rule__VampireModel__ConfirmationsAssignment_1) + { after(grammarAccess.getVampireModelAccess().getConfirmationsAssignment_1()); } + ) + | + ( + { before(grammarAccess.getVampireModelAccess().getFormulasAssignment_2()); } + (rule__VampireModel__FormulasAssignment_2) + { after(grammarAccess.getVampireModelAccess().getFormulasAssignment_2()); } + ) + | + ( + { before(grammarAccess.getVampireModelAccess().getTfformulasAssignment_3()); } + (rule__VampireModel__TfformulasAssignment_3) + { after(grammarAccess.getVampireModelAccess().getTfformulasAssignment_3()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSConfirmationsAccess().getGroup_0()); } + (rule__VLSConfirmations__Group_0__0) + { after(grammarAccess.getVLSConfirmationsAccess().getGroup_0()); } + ) + | + ( + { before(grammarAccess.getVLSConfirmationsAccess().getGroup_1()); } + (rule__VLSConfirmations__Group_1__0) + { after(grammarAccess.getVLSConfirmationsAccess().getGroup_1()); } + ) + | + ( + { before(grammarAccess.getVLSConfirmationsAccess().getGroup_2()); } + (rule__VLSConfirmations__Group_2__0) + { after(grammarAccess.getVLSConfirmationsAccess().getGroup_2()); } + ) + | + ( + { before(grammarAccess.getVLSConfirmationsAccess().getGroup_3()); } + (rule__VLSConfirmations__Group_3__0) + { after(grammarAccess.getVLSConfirmationsAccess().getGroup_3()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__NameAlternatives_2_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFofFormulaAccess().getNameLOWER_WORD_IDTerminalRuleCall_2_0_0()); } + RULE_LOWER_WORD_ID + { after(grammarAccess.getVLSFofFormulaAccess().getNameLOWER_WORD_IDTerminalRuleCall_2_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSFofFormulaAccess().getNameSIGNED_LITERALTerminalRuleCall_2_0_1()); } + RULE_SIGNED_LITERAL + { after(grammarAccess.getVLSFofFormulaAccess().getNameSIGNED_LITERALTerminalRuleCall_2_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSFofFormulaAccess().getNameSINGLE_QUOTETerminalRuleCall_2_0_2()); } + RULE_SINGLE_QUOTE + { after(grammarAccess.getVLSFofFormulaAccess().getNameSINGLE_QUOTETerminalRuleCall_2_0_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffName__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffNameAccess().getVLSTffDeclPredParserRuleCall_0()); } + ruleVLSTffDeclPred + { after(grammarAccess.getVLSTffNameAccess().getVLSTffDeclPredParserRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getVLSTffNameAccess().getVLSTffFiniteParserRuleCall_1()); } + ruleVLSTffFinite + { after(grammarAccess.getVLSTffNameAccess().getVLSTffFiniteParserRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getVLSTffNameAccess().getVLSTffDistinctParserRuleCall_2()); } + ruleVLSTffDistinct + { after(grammarAccess.getVLSTffNameAccess().getVLSTffDistinctParserRuleCall_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffDeclPred__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffDeclPredAccess().getGroup_0()); } + (rule__VLSTffDeclPred__Group_0__0) + { after(grammarAccess.getVLSTffDeclPredAccess().getGroup_0()); } + ) + | + ( + { before(grammarAccess.getVLSTffDeclPredAccess().getLOWER_WORD_IDTerminalRuleCall_1()); } + RULE_LOWER_WORD_ID + { after(grammarAccess.getVLSTffDeclPredAccess().getLOWER_WORD_IDTerminalRuleCall_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSRole__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSRoleAccess().getAxiomKeyword_0()); } + 'axiom' + { after(grammarAccess.getVLSRoleAccess().getAxiomKeyword_0()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getConjectureKeyword_1()); } + 'conjecture' + { after(grammarAccess.getVLSRoleAccess().getConjectureKeyword_1()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getHypothesisKeyword_2()); } + 'hypothesis' + { after(grammarAccess.getVLSRoleAccess().getHypothesisKeyword_2()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getDefinitionKeyword_3()); } + 'definition' + { after(grammarAccess.getVLSRoleAccess().getDefinitionKeyword_3()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getAssumptionKeyword_4()); } + 'assumption' + { after(grammarAccess.getVLSRoleAccess().getAssumptionKeyword_4()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getLemmaKeyword_5()); } + 'lemma' + { after(grammarAccess.getVLSRoleAccess().getLemmaKeyword_5()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getTheoremKeyword_6()); } + 'theorem' + { after(grammarAccess.getVLSRoleAccess().getTheoremKeyword_6()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getCorollaryKeyword_7()); } + 'corollary' + { after(grammarAccess.getVLSRoleAccess().getCorollaryKeyword_7()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getNegated_conjectureKeyword_8()); } + 'negated_conjecture' + { after(grammarAccess.getVLSRoleAccess().getNegated_conjectureKeyword_8()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getPlainKeyword_9()); } + 'plain' + { after(grammarAccess.getVLSRoleAccess().getPlainKeyword_9()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getTypeKeyword_10()); } + 'type' + { after(grammarAccess.getVLSRoleAccess().getTypeKeyword_10()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getFi_domainKeyword_11()); } + 'fi_domain' + { after(grammarAccess.getVLSRoleAccess().getFi_domainKeyword_11()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getFi_functorsKeyword_12()); } + 'fi_functors' + { after(grammarAccess.getVLSRoleAccess().getFi_functorsKeyword_12()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getFi_predicatesKeyword_13()); } + 'fi_predicates' + { after(grammarAccess.getVLSRoleAccess().getFi_predicatesKeyword_13()); } + ) + | + ( + { before(grammarAccess.getVLSRoleAccess().getUnknownKeyword_14()); } + 'unknown' + { after(grammarAccess.getVLSRoleAccess().getUnknownKeyword_14()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__NameAlternatives_1_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAnnotationAccess().getNameLOWER_WORD_IDTerminalRuleCall_1_0_0()); } + RULE_LOWER_WORD_ID + { after(grammarAccess.getVLSAnnotationAccess().getNameLOWER_WORD_IDTerminalRuleCall_1_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSAnnotationAccess().getNameSINGLE_QUOTETerminalRuleCall_1_0_1()); } + RULE_SINGLE_QUOTE + { after(grammarAccess.getVLSAnnotationAccess().getNameSINGLE_QUOTETerminalRuleCall_1_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSAnnotationAccess().getNameVLSRoleParserRuleCall_1_0_2()); } + ruleVLSRole + { after(grammarAccess.getVLSAnnotationAccess().getNameVLSRoleParserRuleCall_1_0_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffTerm__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffTermAccess().getVLSTermParserRuleCall_0()); } + ruleVLSTerm + { after(grammarAccess.getVLSTffTermAccess().getVLSTermParserRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getVLSTffTermAccess().getVLSDeclarationParserRuleCall_1()); } + ruleVLSDeclaration + { after(grammarAccess.getVLSTffTermAccess().getVLSDeclarationParserRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getVLSTffTermAccess().getVLSCommentTermParserRuleCall_2()); } + ruleVLSCommentTerm + { after(grammarAccess.getVLSTffTermAccess().getVLSCommentTermParserRuleCall_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDeclaration__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSDeclarationAccess().getVLSVariableDeclarationParserRuleCall_0()); } + ruleVLSVariableDeclaration + { after(grammarAccess.getVLSDeclarationAccess().getVLSVariableDeclarationParserRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getVLSDeclarationAccess().getVLSOtherDeclarationParserRuleCall_1()); } + ruleVLSOtherDeclaration + { after(grammarAccess.getVLSDeclarationAccess().getVLSOtherDeclarationParserRuleCall_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Alternatives_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0()); } + (rule__VLSBinary__Group_1_0__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0()); } + ) + | + ( + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); } + (rule__VLSBinary__Group_1_1__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); } + ) + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); } + (rule__VLSBinary__Group_1_1__0)* + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); } + ) + ) + | + ( + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); } + (rule__VLSBinary__Group_1_2__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); } + ) + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); } + (rule__VLSBinary__Group_1_2__0)* + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); } + ) + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Alternatives_1_0_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_0()); } + (rule__VLSBinary__Group_1_0_0_0__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_1()); } + (rule__VLSBinary__Group_1_0_0_1__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_2()); } + (rule__VLSBinary__Group_1_0_0_2__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_2()); } + ) + | + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_3()); } + (rule__VLSBinary__Group_1_0_0_3__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_3()); } + ) + | + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_4()); } + (rule__VLSBinary__Group_1_0_0_4__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_4()); } + ) + | + ( + { before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_5()); } + (rule__VLSBinary__Group_1_0_0_5__0) + { after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_5()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryFormula__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUniversalQuantifierParserRuleCall_0()); } + ruleVLSUniversalQuantifier + { after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUniversalQuantifierParserRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSExistentialQuantifierParserRuleCall_1()); } + ruleVLSExistentialQuantifier + { after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSExistentialQuantifierParserRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryNegationParserRuleCall_2()); } + ruleVLSUnaryNegation + { after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryNegationParserRuleCall_2()); } + ) + | + ( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryInfixParserRuleCall_3()); } + ruleVLSUnaryInfix + { after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryInfixParserRuleCall_3()); } + ) + | + ( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getGroup_4()); } + (rule__VLSUnitaryFormula__Group_4__0) + { after(grammarAccess.getVLSUnitaryFormulaAccess().getGroup_4()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); } + ruleVLSVariable + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); } + ruleVLSVariableDeclaration + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); } + ruleVLSVariable + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); } + ruleVLSVariableDeclaration + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); } + ruleVLSVariable + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); } + ruleVLSVariableDeclaration + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); } + ruleVLSVariable + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); } + ruleVLSVariableDeclaration + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Alternatives_1_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_0()); } + (rule__VLSUnaryInfix__Group_1_0_0__0) + { after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_1()); } + (rule__VLSUnaryInfix__Group_1_0_1__0) + { after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_2()); } + (rule__VLSUnaryInfix__Group_1_0_2__0) + { after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomic__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicAccess().getVLSAtomicConstantParserRuleCall_0()); } + ruleVLSAtomicConstant + { after(grammarAccess.getVLSAtomicAccess().getVLSAtomicConstantParserRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicAccess().getVLSAtomicFunctionParserRuleCall_1()); } + ruleVLSAtomicFunction + { after(grammarAccess.getVLSAtomicAccess().getVLSAtomicFunctionParserRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicAccess().getVLSVariableParserRuleCall_2()); } + ruleVLSVariable + { after(grammarAccess.getVLSAtomicAccess().getVLSVariableParserRuleCall_2()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicAccess().getVLSDefinedTermParserRuleCall_3()); } + ruleVLSDefinedTerm + { after(grammarAccess.getVLSAtomicAccess().getVLSDefinedTermParserRuleCall_3()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getGroup_0()); } + (rule__VLSAtomicConstant__Group_0__0) + { after(grammarAccess.getVLSAtomicConstantAccess().getGroup_0()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getGroup_1()); } + (rule__VLSAtomicConstant__Group_1__0) + { after(grammarAccess.getVLSAtomicConstantAccess().getGroup_1()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getGroup_2()); } + (rule__VLSAtomicConstant__Group_2__0) + { after(grammarAccess.getVLSAtomicConstantAccess().getGroup_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__NameAlternatives_0_1_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); } + RULE_LOWER_WORD_ID + { after(grammarAccess.getVLSAtomicConstantAccess().getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1()); } + RULE_SINGLE_QUOTE + { after(grammarAccess.getVLSAtomicConstantAccess().getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameDOLLAR_IDTerminalRuleCall_0_1_0_2()); } + RULE_DOLLAR_ID + { after(grammarAccess.getVLSAtomicConstantAccess().getNameDOLLAR_IDTerminalRuleCall_0_1_0_2()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); } + RULE_DOUBLE_DOLLAR_ID + { after(grammarAccess.getVLSAtomicConstantAccess().getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameVLSRoleParserRuleCall_0_1_0_4()); } + ruleVLSRole + { after(grammarAccess.getVLSAtomicConstantAccess().getNameVLSRoleParserRuleCall_0_1_0_4()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0()); } + (rule__VLSAtomicFunction__Group_0__0) + { after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_1()); } + (rule__VLSAtomicFunction__Group_1__0) + { after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); } + RULE_LOWER_WORD_ID + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1()); } + RULE_SINGLE_QUOTE + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2()); } + RULE_DOLLAR_ID + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); } + RULE_DOUBLE_DOLLAR_ID + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); } + ) + | + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantVLSRoleParserRuleCall_0_1_0_4()); } + ruleVLSRole + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantVLSRoleParserRuleCall_0_1_0_4()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofTerm__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFofTermAccess().getVLSVariableParserRuleCall_0()); } + ruleVLSVariable + { after(grammarAccess.getVLSFofTermAccess().getVLSVariableParserRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getVLSFofTermAccess().getVLSFunctionAsTermParserRuleCall_1()); } + ruleVLSFunctionAsTerm + { after(grammarAccess.getVLSFofTermAccess().getVLSFunctionAsTermParserRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getVLSFofTermAccess().getVLSDefinedTermParserRuleCall_2()); } + ruleVLSDefinedTerm + { after(grammarAccess.getVLSFofTermAccess().getVLSDefinedTermParserRuleCall_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0()); } + RULE_LOWER_WORD_ID + { after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0()); } + ) + | + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1()); } + RULE_SINGLE_QUOTE + { after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1()); } + ) + | + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOLLAR_IDTerminalRuleCall_0_0_2()); } + RULE_DOLLAR_ID + { after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOLLAR_IDTerminalRuleCall_0_0_2()); } + ) + | + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3()); } + RULE_DOUBLE_DOLLAR_ID + { after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSDefinedTermAccess().getGroup_0()); } + (rule__VLSDefinedTerm__Group_0__0) + { after(grammarAccess.getVLSDefinedTermAccess().getGroup_0()); } + ) + | + ( + { before(grammarAccess.getVLSDefinedTermAccess().getGroup_1()); } + (rule__VLSDefinedTerm__Group_1__0) + { after(grammarAccess.getVLSDefinedTermAccess().getGroup_1()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_0__0__Impl + rule__VLSConfirmations__Group_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getVLSSatisfiableAction_0_0()); } + () + { after(grammarAccess.getVLSConfirmationsAccess().getVLSSatisfiableAction_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getSatisfiableKeyword_0_1()); } + 'Satisfiable!' + { after(grammarAccess.getVLSConfirmationsAccess().getSatisfiableKeyword_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSConfirmations__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__0__Impl + rule__VLSConfirmations__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getVLSWarningAction_1_0()); } + () + { after(grammarAccess.getVLSConfirmationsAccess().getVLSWarningAction_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__1__Impl + rule__VLSConfirmations__Group_1__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getWARNINGKeyword_1_1()); } + 'WARNING!' + { after(grammarAccess.getVLSConfirmationsAccess().getWARNINGKeyword_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__2__Impl + rule__VLSConfirmations__Group_1__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getCouldKeyword_1_2()); } + 'Could' + { after(grammarAccess.getVLSConfirmationsAccess().getCouldKeyword_1_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__3__Impl + rule__VLSConfirmations__Group_1__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getNotKeyword_1_3()); } + 'not' + { after(grammarAccess.getVLSConfirmationsAccess().getNotKeyword_1_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__4__Impl + rule__VLSConfirmations__Group_1__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getSetKeyword_1_4()); } + 'set' + { after(grammarAccess.getVLSConfirmationsAccess().getSetKeyword_1_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__5__Impl + rule__VLSConfirmations__Group_1__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getResourceKeyword_1_5()); } + 'resource' + { after(grammarAccess.getVLSConfirmationsAccess().getResourceKeyword_1_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__6__Impl + rule__VLSConfirmations__Group_1__7 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getLimitKeyword_1_6()); } + 'limit:' + { after(grammarAccess.getVLSConfirmationsAccess().getLimitKeyword_1_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__7 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__7__Impl + rule__VLSConfirmations__Group_1__8 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__7__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getVirtualKeyword_1_7()); } + 'Virtual' + { after(grammarAccess.getVLSConfirmationsAccess().getVirtualKeyword_1_7()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__8 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_1__8__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_1__8__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getMemoryKeyword_1_8()); } + 'memory.' + { after(grammarAccess.getVLSConfirmationsAccess().getMemoryKeyword_1_8()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSConfirmations__Group_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_2__0__Impl + rule__VLSConfirmations__Group_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getVLSTryingAction_2_0()); } + () + { after(grammarAccess.getVLSConfirmationsAccess().getVLSTryingAction_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_2__1__Impl + rule__VLSConfirmations__Group_2__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getTRYINGKeyword_2_1()); } + 'TRYING' + { after(grammarAccess.getVLSConfirmationsAccess().getTRYINGKeyword_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_2__2__Impl + rule__VLSConfirmations__Group_2__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getLeftSquareBracketKeyword_2_2()); } + '[' + { after(grammarAccess.getVLSConfirmationsAccess().getLeftSquareBracketKeyword_2_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_2__3__Impl + rule__VLSConfirmations__Group_2__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getNameAssignment_2_3()); } + (rule__VLSConfirmations__NameAssignment_2_3) + { after(grammarAccess.getVLSConfirmationsAccess().getNameAssignment_2_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_2__4__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_2__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getRightSquareBracketKeyword_2_4()); } + ']' + { after(grammarAccess.getVLSConfirmationsAccess().getRightSquareBracketKeyword_2_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSConfirmations__Group_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_3__0__Impl + rule__VLSConfirmations__Group_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getVLSFiniteModelAction_3_0()); } + () + { after(grammarAccess.getVLSConfirmationsAccess().getVLSFiniteModelAction_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_3__1__Impl + rule__VLSConfirmations__Group_3__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getFiniteKeyword_3_1()); } + 'Finite' + { after(grammarAccess.getVLSConfirmationsAccess().getFiniteKeyword_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_3__2__Impl + rule__VLSConfirmations__Group_3__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getModelKeyword_3_2()); } + 'Model' + { after(grammarAccess.getVLSConfirmationsAccess().getModelKeyword_3_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSConfirmations__Group_3__3__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__Group_3__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSConfirmationsAccess().getFoundKeyword_3_3()); } + 'Found!' + { after(grammarAccess.getVLSConfirmationsAccess().getFoundKeyword_3_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSFofFormula__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__0__Impl + rule__VLSFofFormula__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getFofKeyword_0()); } + 'fof' + { after(grammarAccess.getVLSFofFormulaAccess().getFofKeyword_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__1__Impl + rule__VLSFofFormula__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getLeftParenthesisKeyword_1()); } + '(' + { after(grammarAccess.getVLSFofFormulaAccess().getLeftParenthesisKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__2__Impl + rule__VLSFofFormula__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getNameAssignment_2()); } + (rule__VLSFofFormula__NameAssignment_2) + { after(grammarAccess.getVLSFofFormulaAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__3__Impl + rule__VLSFofFormula__Group__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_3()); } + ',' + { after(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__4__Impl + rule__VLSFofFormula__Group__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getFofRoleAssignment_4()); } + (rule__VLSFofFormula__FofRoleAssignment_4) + { after(grammarAccess.getVLSFofFormulaAccess().getFofRoleAssignment_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__5__Impl + rule__VLSFofFormula__Group__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_5()); } + ',' + { after(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__6__Impl + rule__VLSFofFormula__Group__7 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getFofFormulaAssignment_6()); } + (rule__VLSFofFormula__FofFormulaAssignment_6) + { after(grammarAccess.getVLSFofFormulaAccess().getFofFormulaAssignment_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__7 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__7__Impl + rule__VLSFofFormula__Group__8 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__7__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getGroup_7()); } + (rule__VLSFofFormula__Group_7__0)? + { after(grammarAccess.getVLSFofFormulaAccess().getGroup_7()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__8 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__8__Impl + rule__VLSFofFormula__Group__9 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__8__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getRightParenthesisKeyword_8()); } + ')' + { after(grammarAccess.getVLSFofFormulaAccess().getRightParenthesisKeyword_8()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__9 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group__9__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group__9__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getFullStopKeyword_9()); } + '.' + { after(grammarAccess.getVLSFofFormulaAccess().getFullStopKeyword_9()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSFofFormula__Group_7__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group_7__0__Impl + rule__VLSFofFormula__Group_7__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group_7__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_7_0()); } + ',' + { after(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_7_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group_7__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFofFormula__Group_7__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__Group_7__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFofFormulaAccess().getAnnotationsAssignment_7_1()); } + (rule__VLSFofFormula__AnnotationsAssignment_7_1) + { after(grammarAccess.getVLSFofFormulaAccess().getAnnotationsAssignment_7_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSTffFormula__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__0__Impl + rule__VLSTffFormula__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getTffKeyword_0()); } + 'tff' + { after(grammarAccess.getVLSTffFormulaAccess().getTffKeyword_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__1__Impl + rule__VLSTffFormula__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getLeftParenthesisKeyword_1()); } + '(' + { after(grammarAccess.getVLSTffFormulaAccess().getLeftParenthesisKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__2__Impl + rule__VLSTffFormula__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getNameAssignment_2()); } + (rule__VLSTffFormula__NameAssignment_2) + { after(grammarAccess.getVLSTffFormulaAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__3__Impl + rule__VLSTffFormula__Group__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_3()); } + ',' + { after(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__4__Impl + rule__VLSTffFormula__Group__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getTffRoleAssignment_4()); } + (rule__VLSTffFormula__TffRoleAssignment_4) + { after(grammarAccess.getVLSTffFormulaAccess().getTffRoleAssignment_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__5__Impl + rule__VLSTffFormula__Group__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_5()); } + ',' + { after(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__6__Impl + rule__VLSTffFormula__Group__7 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getFofFormulaAssignment_6()); } + (rule__VLSTffFormula__FofFormulaAssignment_6) + { after(grammarAccess.getVLSTffFormulaAccess().getFofFormulaAssignment_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__7 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__7__Impl + rule__VLSTffFormula__Group__8 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__7__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getGroup_7()); } + (rule__VLSTffFormula__Group_7__0)? + { after(grammarAccess.getVLSTffFormulaAccess().getGroup_7()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__8 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__8__Impl + rule__VLSTffFormula__Group__9 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__8__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getRightParenthesisKeyword_8()); } + ')' + { after(grammarAccess.getVLSTffFormulaAccess().getRightParenthesisKeyword_8()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__9 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group__9__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group__9__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getFullStopKeyword_9()); } + '.' + { after(grammarAccess.getVLSTffFormulaAccess().getFullStopKeyword_9()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSTffFormula__Group_7__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group_7__0__Impl + rule__VLSTffFormula__Group_7__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group_7__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_7_0()); } + ',' + { after(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_7_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group_7__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffFormula__Group_7__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__Group_7__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffFormulaAccess().getAnnotationsAssignment_7_1()); } + (rule__VLSTffFormula__AnnotationsAssignment_7_1) + { after(grammarAccess.getVLSTffFormulaAccess().getAnnotationsAssignment_7_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSTffDeclPred__Group_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffDeclPred__Group_0__0__Impl + rule__VLSTffDeclPred__Group_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffDeclPred__Group_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffDeclPredAccess().getDeclare_Keyword_0_0()); } + 'declare_' + { after(grammarAccess.getVLSTffDeclPredAccess().getDeclare_Keyword_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffDeclPred__Group_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTffDeclPred__Group_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffDeclPred__Group_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTffDeclPredAccess().getDOLLAR_IDTerminalRuleCall_0_1()); } + RULE_DOLLAR_ID + { after(grammarAccess.getVLSTffDeclPredAccess().getDOLLAR_IDTerminalRuleCall_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAnnotation__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group__0__Impl + rule__VLSAnnotation__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); } + ('[')? + { after(grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group__1__Impl + rule__VLSAnnotation__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getNameAssignment_1()); } + (rule__VLSAnnotation__NameAssignment_1)? + { after(grammarAccess.getVLSAnnotationAccess().getNameAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group__2__Impl + rule__VLSAnnotation__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getGroup_2()); } + (rule__VLSAnnotation__Group_2__0)? + { after(grammarAccess.getVLSAnnotationAccess().getGroup_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group__3__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); } + (']')? + { after(grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAnnotation__Group_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group_2__0__Impl + rule__VLSAnnotation__Group_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getLeftParenthesisKeyword_2_0()); } + '(' + { after(grammarAccess.getVLSAnnotationAccess().getLeftParenthesisKeyword_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group_2__1__Impl + rule__VLSAnnotation__Group_2__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getFollowupAssignment_2_1()); } + (rule__VLSAnnotation__FollowupAssignment_2_1) + { after(grammarAccess.getVLSAnnotationAccess().getFollowupAssignment_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group_2__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotation__Group_2__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__Group_2__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationAccess().getRightParenthesisKeyword_2_2()); } + ')' + { after(grammarAccess.getVLSAnnotationAccess().getRightParenthesisKeyword_2_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAnnotationTerms__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotationTerms__Group__0__Impl + rule__VLSAnnotationTerms__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_0()); } + (rule__VLSAnnotationTerms__TermsAssignment_0) + { after(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotationTerms__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationTermsAccess().getGroup_1()); } + (rule__VLSAnnotationTerms__Group_1__0)* + { after(grammarAccess.getVLSAnnotationTermsAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAnnotationTerms__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotationTerms__Group_1__0__Impl + rule__VLSAnnotationTerms__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationTermsAccess().getCommaKeyword_1_0()); } + ',' + { after(grammarAccess.getVLSAnnotationTermsAccess().getCommaKeyword_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAnnotationTerms__Group_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_1_1()); } + (rule__VLSAnnotationTerms__TermsAssignment_1_1) + { after(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSOtherDeclaration__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSOtherDeclaration__Group__0__Impl + rule__VLSOtherDeclaration__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSOtherDeclarationAccess().getNameAssignment_0()); } + (rule__VLSOtherDeclaration__NameAssignment_0) + { after(grammarAccess.getVLSOtherDeclarationAccess().getNameAssignment_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSOtherDeclaration__Group__1__Impl + rule__VLSOtherDeclaration__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSOtherDeclarationAccess().getColonKeyword_1()); } + ':' + { after(grammarAccess.getVLSOtherDeclarationAccess().getColonKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSOtherDeclaration__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSOtherDeclarationAccess().getTypeAssignment_2()); } + (rule__VLSOtherDeclaration__TypeAssignment_2) + { after(grammarAccess.getVLSOtherDeclarationAccess().getTypeAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSVariableDeclaration__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSVariableDeclaration__Group__0__Impl + rule__VLSVariableDeclaration__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSVariableDeclarationAccess().getNameAssignment_0()); } + (rule__VLSVariableDeclaration__NameAssignment_0) + { after(grammarAccess.getVLSVariableDeclarationAccess().getNameAssignment_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSVariableDeclaration__Group__1__Impl + rule__VLSVariableDeclaration__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSVariableDeclarationAccess().getColonKeyword_1()); } + ':' + { after(grammarAccess.getVLSVariableDeclarationAccess().getColonKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSVariableDeclaration__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSVariableDeclarationAccess().getTypeAssignment_2()); } + (rule__VLSVariableDeclaration__TypeAssignment_2) + { after(grammarAccess.getVLSVariableDeclarationAccess().getTypeAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSTypeDef__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTypeDef__Group__0__Impl + rule__VLSTypeDef__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTypeDefAccess().getTypeSigAssignment_0()); } + (rule__VLSTypeDef__TypeSigAssignment_0) + { after(grammarAccess.getVLSTypeDefAccess().getTypeSigAssignment_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTypeDef__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTypeDefAccess().getGroup_1()); } + (rule__VLSTypeDef__Group_1__0)? + { after(grammarAccess.getVLSTypeDefAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSTypeDef__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTypeDef__Group_1__0__Impl + rule__VLSTypeDef__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTypeDefAccess().getGreaterThanSignKeyword_1_0()); } + '>' + { after(grammarAccess.getVLSTypeDefAccess().getGreaterThanSignKeyword_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSTypeDef__Group_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSTypeDefAccess().getMapsToAssignment_1_1()); } + (rule__VLSTypeDef__MapsToAssignment_1_1) + { after(grammarAccess.getVLSTypeDefAccess().getMapsToAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnitaryTerm__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryTerm__Group__0__Impl + rule__VLSUnitaryTerm__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryTermAccess().getInitTypeAssignment_0()); } + (rule__VLSUnitaryTerm__InitTypeAssignment_0) + { after(grammarAccess.getVLSUnitaryTermAccess().getInitTypeAssignment_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryTerm__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryTermAccess().getGroup_1()); } + (rule__VLSUnitaryTerm__Group_1__0)* + { after(grammarAccess.getVLSUnitaryTermAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnitaryTerm__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryTerm__Group_1__0__Impl + rule__VLSUnitaryTerm__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryTermAccess().getAsteriskKeyword_1_0()); } + '*' + { after(grammarAccess.getVLSUnitaryTermAccess().getAsteriskKeyword_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryTerm__Group_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryTermAccess().getNextTypeAssignment_1_1()); } + (rule__VLSUnitaryTerm__NextTypeAssignment_1_1) + { after(grammarAccess.getVLSUnitaryTermAccess().getNextTypeAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group__0__Impl + rule__VLSBinary__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSUnitaryFormulaParserRuleCall_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSBinaryAccess().getVLSUnitaryFormulaParserRuleCall_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getAlternatives_1()); } + (rule__VLSBinary__Alternatives_1)? + { after(grammarAccess.getVLSBinaryAccess().getAlternatives_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0__0__Impl + rule__VLSBinary__Group_1_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getAlternatives_1_0_0()); } + (rule__VLSBinary__Alternatives_1_0_0) + { after(grammarAccess.getVLSBinaryAccess().getAlternatives_1_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_0_1()); } + (rule__VLSBinary__RightAssignment_1_0_1) + { after(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0_0_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_0__0__Impl + rule__VLSBinary__Group_1_0_0_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1()); } + '<=>' + { after(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0_0_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_1__0__Impl + rule__VLSBinary__Group_1_0_0_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getEqualsSignGreaterThanSignKeyword_1_0_0_1_1()); } + '=>' + { after(grammarAccess.getVLSBinaryAccess().getEqualsSignGreaterThanSignKeyword_1_0_0_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0_0_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_2__0__Impl + rule__VLSBinary__Group_1_0_0_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignKeyword_1_0_0_2_1()); } + '<=' + { after(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignKeyword_1_0_0_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0_0_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_3__0__Impl + rule__VLSBinary__Group_1_0_0_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_3__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1()); } + '<~>' + { after(grammarAccess.getVLSBinaryAccess().getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0_0_4__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_4__0__Impl + rule__VLSBinary__Group_1_0_0_4__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_4__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_4__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_4__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_4__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getTildeVerticalLineKeyword_1_0_0_4_1()); } + '~|' + { after(grammarAccess.getVLSBinaryAccess().getTildeVerticalLineKeyword_1_0_0_4_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_0_0_5__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_5__0__Impl + rule__VLSBinary__Group_1_0_0_5__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_5__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_5__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_0_0_5__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_0_0_5__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getTildeAmpersandKeyword_1_0_0_5_1()); } + '~&' + { after(grammarAccess.getVLSBinaryAccess().getTildeAmpersandKeyword_1_0_0_5_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_1__0__Impl + rule__VLSBinary__Group_1_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_1__1__Impl + rule__VLSBinary__Group_1_1__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getAmpersandKeyword_1_1_1()); } + '&' + { after(grammarAccess.getVLSBinaryAccess().getAmpersandKeyword_1_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_1__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_1__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_1__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_1_2()); } + (rule__VLSBinary__RightAssignment_1_1_2) + { after(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_1_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSBinary__Group_1_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_2__0__Impl + rule__VLSBinary__Group_1_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0()); } + () + { after(grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_2__1__Impl + rule__VLSBinary__Group_1_2__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getVerticalLineKeyword_1_2_1()); } + '|' + { after(grammarAccess.getVLSBinaryAccess().getVerticalLineKeyword_1_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_2__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSBinary__Group_1_2__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__Group_1_2__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_2_2()); } + (rule__VLSBinary__RightAssignment_1_2_2) + { after(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_2_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnitaryFormula__Group_4__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryFormula__Group_4__0__Impl + rule__VLSUnitaryFormula__Group_4__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryFormula__Group_4__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); } + '(' + { after(grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryFormula__Group_4__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryFormula__Group_4__1__Impl + rule__VLSUnitaryFormula__Group_4__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryFormula__Group_4__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSTermParserRuleCall_4_1()); } + ruleVLSTerm + { after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSTermParserRuleCall_4_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryFormula__Group_4__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnitaryFormula__Group_4__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryFormula__Group_4__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnitaryFormulaAccess().getRightParenthesisKeyword_4_2()); } + ')' + { after(grammarAccess.getVLSUnitaryFormulaAccess().getRightParenthesisKeyword_4_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUniversalQuantifier__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group__0__Impl + rule__VLSUniversalQuantifier__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVLSUniversalQuantifierAction_0()); } + () + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVLSUniversalQuantifierAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group__1__Impl + rule__VLSUniversalQuantifier__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1()); } + (rule__VLSUniversalQuantifier__Group_1__0) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getOperandAssignment_2()); } + (rule__VLSUniversalQuantifier__OperandAssignment_2) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getOperandAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUniversalQuantifier__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1__0__Impl + rule__VLSUniversalQuantifier__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getExclamationMarkKeyword_1_0()); } + '!' + { after(grammarAccess.getVLSUniversalQuantifierAccess().getExclamationMarkKeyword_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1__1__Impl + rule__VLSUniversalQuantifier__Group_1__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getLeftSquareBracketKeyword_1_1()); } + '[' + { after(grammarAccess.getVLSUniversalQuantifierAccess().getLeftSquareBracketKeyword_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1__2__Impl + rule__VLSUniversalQuantifier__Group_1__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_2()); } + (rule__VLSUniversalQuantifier__VariablesAssignment_1_2) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1__3__Impl + rule__VLSUniversalQuantifier__Group_1__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1_3()); } + (rule__VLSUniversalQuantifier__Group_1_3__0)* + { after(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1__4__Impl + rule__VLSUniversalQuantifier__Group_1__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getRightSquareBracketKeyword_1_4()); } + ']' + { after(grammarAccess.getVLSUniversalQuantifierAccess().getRightSquareBracketKeyword_1_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1__5__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getColonKeyword_1_5()); } + ':' + { after(grammarAccess.getVLSUniversalQuantifierAccess().getColonKeyword_1_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUniversalQuantifier__Group_1_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1_3__0__Impl + rule__VLSUniversalQuantifier__Group_1_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getCommaKeyword_1_3_0()); } + ',' + { after(grammarAccess.getVLSUniversalQuantifierAccess().getCommaKeyword_1_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUniversalQuantifier__Group_1_3__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__Group_1_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_3_1()); } + (rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSExistentialQuantifier__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group__0__Impl + rule__VLSExistentialQuantifier__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVLSExistentialQuantifierAction_0()); } + () + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVLSExistentialQuantifierAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group__1__Impl + rule__VLSExistentialQuantifier__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1()); } + (rule__VLSExistentialQuantifier__Group_1__0) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getOperandAssignment_2()); } + (rule__VLSExistentialQuantifier__OperandAssignment_2) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getOperandAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSExistentialQuantifier__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1__0__Impl + rule__VLSExistentialQuantifier__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getQuestionMarkKeyword_1_0()); } + '?' + { after(grammarAccess.getVLSExistentialQuantifierAccess().getQuestionMarkKeyword_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1__1__Impl + rule__VLSExistentialQuantifier__Group_1__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getLeftSquareBracketKeyword_1_1()); } + '[' + { after(grammarAccess.getVLSExistentialQuantifierAccess().getLeftSquareBracketKeyword_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1__2__Impl + rule__VLSExistentialQuantifier__Group_1__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_2()); } + (rule__VLSExistentialQuantifier__VariablesAssignment_1_2) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1__3__Impl + rule__VLSExistentialQuantifier__Group_1__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1_3()); } + (rule__VLSExistentialQuantifier__Group_1_3__0)* + { after(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1__4__Impl + rule__VLSExistentialQuantifier__Group_1__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getRightSquareBracketKeyword_1_4()); } + ']' + { after(grammarAccess.getVLSExistentialQuantifierAccess().getRightSquareBracketKeyword_1_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1__5__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getColonKeyword_1_5()); } + ':' + { after(grammarAccess.getVLSExistentialQuantifierAccess().getColonKeyword_1_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSExistentialQuantifier__Group_1_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1_3__0__Impl + rule__VLSExistentialQuantifier__Group_1_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getCommaKeyword_1_3_0()); } + ',' + { after(grammarAccess.getVLSExistentialQuantifierAccess().getCommaKeyword_1_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSExistentialQuantifier__Group_1_3__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__Group_1_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_3_1()); } + (rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnaryNegation__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryNegation__Group__0__Impl + rule__VLSUnaryNegation__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryNegation__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryNegationAccess().getVLSUnaryNegationAction_0()); } + () + { after(grammarAccess.getVLSUnaryNegationAccess().getVLSUnaryNegationAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryNegation__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryNegation__Group__1__Impl + rule__VLSUnaryNegation__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryNegation__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryNegationAccess().getTildeKeyword_1()); } + '~' + { after(grammarAccess.getVLSUnaryNegationAccess().getTildeKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryNegation__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryNegation__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryNegation__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryNegationAccess().getOperandAssignment_2()); } + (rule__VLSUnaryNegation__OperandAssignment_2) + { after(grammarAccess.getVLSUnaryNegationAccess().getOperandAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnaryInfix__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group__0__Impl + rule__VLSUnaryInfix__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getVLSAtomicParserRuleCall_0()); } + ruleVLSAtomic + { after(grammarAccess.getVLSUnaryInfixAccess().getVLSAtomicParserRuleCall_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1()); } + (rule__VLSUnaryInfix__Group_1__0)? + { after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnaryInfix__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1__0__Impl + rule__VLSUnaryInfix__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getAlternatives_1_0()); } + (rule__VLSUnaryInfix__Alternatives_1_0) + { after(grammarAccess.getVLSUnaryInfixAccess().getAlternatives_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getRightAssignment_1_1()); } + (rule__VLSUnaryInfix__RightAssignment_1_1) + { after(grammarAccess.getVLSUnaryInfixAccess().getRightAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnaryInfix__Group_1_0_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1_0_0__0__Impl + rule__VLSUnaryInfix__Group_1_0_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0()); } + () + { after(grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1_0_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getExclamationMarkEqualsSignKeyword_1_0_0_1()); } + '!=' + { after(grammarAccess.getVLSUnaryInfixAccess().getExclamationMarkEqualsSignKeyword_1_0_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnaryInfix__Group_1_0_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1_0_1__0__Impl + rule__VLSUnaryInfix__Group_1_0_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0()); } + () + { after(grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1_0_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getEqualsSignKeyword_1_0_1_1()); } + '=' + { after(grammarAccess.getVLSUnaryInfixAccess().getEqualsSignKeyword_1_0_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSUnaryInfix__Group_1_0_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1_0_2__0__Impl + rule__VLSUnaryInfix__Group_1_0_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0()); } + () + { after(grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSUnaryInfix__Group_1_0_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__Group_1_0_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSUnaryInfixAccess().getColonEqualsSignKeyword_1_0_2_1()); } + ':=' + { after(grammarAccess.getVLSUnaryInfixAccess().getColonEqualsSignKeyword_1_0_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicConstant__Group_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicConstant__Group_0__0__Impl + rule__VLSAtomicConstant__Group_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicConstantAccess().getVLSConstantAction_0_0()); } + () + { after(grammarAccess.getVLSAtomicConstantAccess().getVLSConstantAction_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicConstant__Group_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameAssignment_0_1()); } + (rule__VLSAtomicConstant__NameAssignment_0_1) + { after(grammarAccess.getVLSAtomicConstantAccess().getNameAssignment_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicConstant__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicConstant__Group_1__0__Impl + rule__VLSAtomicConstant__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicConstantAccess().getVLSTrueAction_1_0()); } + () + { after(grammarAccess.getVLSAtomicConstantAccess().getVLSTrueAction_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicConstant__Group_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicConstantAccess().getTrueKeyword_1_1()); } + '$true' + { after(grammarAccess.getVLSAtomicConstantAccess().getTrueKeyword_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicConstant__Group_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicConstant__Group_2__0__Impl + rule__VLSAtomicConstant__Group_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicConstantAccess().getVLSFalseAction_2_0()); } + () + { after(grammarAccess.getVLSAtomicConstantAccess().getVLSFalseAction_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicConstant__Group_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__Group_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicConstantAccess().getFalseKeyword_2_1()); } + '$false' + { after(grammarAccess.getVLSAtomicConstantAccess().getFalseKeyword_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicFunction__Group_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0__0__Impl + rule__VLSAtomicFunction__Group_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getVLSFunctionAction_0_0()); } + () + { after(grammarAccess.getVLSAtomicFunctionAccess().getVLSFunctionAction_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0__1__Impl + rule__VLSAtomicFunction__Group_0__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantAssignment_0_1()); } + (rule__VLSAtomicFunction__ConstantAssignment_0_1) + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantAssignment_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2()); } + (rule__VLSAtomicFunction__Group_0_2__0) + { after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicFunction__Group_0_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0_2__0__Impl + rule__VLSAtomicFunction__Group_0_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_0_2_0()); } + '(' + { after(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_0_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0_2__1__Impl + rule__VLSAtomicFunction__Group_0_2__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_1()); } + (rule__VLSAtomicFunction__TermsAssignment_0_2_1) + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0_2__2__Impl + rule__VLSAtomicFunction__Group_0_2__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2_2()); } + (rule__VLSAtomicFunction__Group_0_2_2__0)* + { after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0_2__3__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_0_2_3()); } + ')' + { after(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_0_2_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicFunction__Group_0_2_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0_2_2__0__Impl + rule__VLSAtomicFunction__Group_0_2_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_0_2_2_0()); } + ',' + { after(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_0_2_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_0_2_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_0_2_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_2_1()); } + (rule__VLSAtomicFunction__TermsAssignment_0_2_2_1) + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSAtomicFunction__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__0__Impl + rule__VLSAtomicFunction__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getVLSLessAction_1_0()); } + () + { after(grammarAccess.getVLSAtomicFunctionAccess().getVLSLessAction_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__1__Impl + rule__VLSAtomicFunction__Group_1__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getNameAssignment_1_1()); } + (rule__VLSAtomicFunction__NameAssignment_1_1) + { after(grammarAccess.getVLSAtomicFunctionAccess().getNameAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__2__Impl + rule__VLSAtomicFunction__Group_1__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_1_2()); } + '(' + { after(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_1_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__3__Impl + rule__VLSAtomicFunction__Group_1__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_3()); } + (rule__VLSAtomicFunction__TermsAssignment_1_3) + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__4__Impl + rule__VLSAtomicFunction__Group_1__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_1_4()); } + ',' + { after(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_1_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__5__Impl + rule__VLSAtomicFunction__Group_1__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_5()); } + (rule__VLSAtomicFunction__TermsAssignment_1_5) + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSAtomicFunction__Group_1__6__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__Group_1__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_1_6()); } + ')' + { after(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_1_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSFunctionAsTerm__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group__0__Impl + rule__VLSFunctionAsTerm__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAssignment_0()); } + (rule__VLSFunctionAsTerm__FunctorAssignment_0) + { after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAssignment_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1()); } + (rule__VLSFunctionAsTerm__Group_1__0)? + { after(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSFunctionAsTerm__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group_1__0__Impl + rule__VLSFunctionAsTerm__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getLeftParenthesisKeyword_1_0()); } + '(' + { after(grammarAccess.getVLSFunctionAsTermAccess().getLeftParenthesisKeyword_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group_1__1__Impl + rule__VLSFunctionAsTerm__Group_1__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_1()); } + (rule__VLSFunctionAsTerm__TermsAssignment_1_1) + { after(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group_1__2__Impl + rule__VLSFunctionAsTerm__Group_1__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1_2()); } + (rule__VLSFunctionAsTerm__Group_1_2__0)* + { after(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group_1__3__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getRightParenthesisKeyword_1_3()); } + ')' + { after(grammarAccess.getVLSFunctionAsTermAccess().getRightParenthesisKeyword_1_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSFunctionAsTerm__Group_1_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group_1_2__0__Impl + rule__VLSFunctionAsTerm__Group_1_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getCommaKeyword_1_2_0()); } + ',' + { after(grammarAccess.getVLSFunctionAsTermAccess().getCommaKeyword_1_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSFunctionAsTerm__Group_1_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__Group_1_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_2_1()); } + (rule__VLSFunctionAsTerm__TermsAssignment_1_2_1) + { after(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSDefinedTerm__Group_0__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSDefinedTerm__Group_0__0__Impl + rule__VLSDefinedTerm__Group_0__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Group_0__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSDefinedTermAccess().getVLSIntAction_0_0()); } + () + { after(grammarAccess.getVLSDefinedTermAccess().getVLSIntAction_0_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Group_0__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSDefinedTerm__Group_0__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Group_0__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_0_1()); } + (rule__VLSDefinedTerm__ValueAssignment_0_1) + { after(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_0_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VLSDefinedTerm__Group_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSDefinedTerm__Group_1__0__Impl + rule__VLSDefinedTerm__Group_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Group_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSDefinedTermAccess().getVLSDoubleQuoteAction_1_0()); } + () + { after(grammarAccess.getVLSDefinedTermAccess().getVLSDoubleQuoteAction_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Group_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__VLSDefinedTerm__Group_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__Group_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_1_1()); } + (rule__VLSDefinedTerm__ValueAssignment_1_1) + { after(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__VampireModel__CommentsAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVampireModelAccess().getCommentsVLSCommentParserRuleCall_0_0()); } + ruleVLSComment + { after(grammarAccess.getVampireModelAccess().getCommentsVLSCommentParserRuleCall_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VampireModel__ConfirmationsAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVampireModelAccess().getConfirmationsVLSConfirmationsParserRuleCall_1_0()); } + ruleVLSConfirmations + { after(grammarAccess.getVampireModelAccess().getConfirmationsVLSConfirmationsParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VampireModel__FormulasAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVampireModelAccess().getFormulasVLSFofFormulaParserRuleCall_2_0()); } + ruleVLSFofFormula + { after(grammarAccess.getVampireModelAccess().getFormulasVLSFofFormulaParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VampireModel__TfformulasAssignment_3 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVampireModelAccess().getTfformulasVLSTffFormulaParserRuleCall_3_0()); } + ruleVLSTffFormula + { after(grammarAccess.getVampireModelAccess().getTfformulasVLSTffFormulaParserRuleCall_3_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSComment__CommentAssignment + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); } + RULE_SINGLE_COMMENT + { after(grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSConfirmations__NameAssignment_2_3 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0()); } + RULE_LITERAL + { after(grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFofFormulaAccess().getNameAlternatives_2_0()); } + (rule__VLSFofFormula__NameAlternatives_2_0) + { after(grammarAccess.getVLSFofFormulaAccess().getNameAlternatives_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__FofRoleAssignment_4 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFofFormulaAccess().getFofRoleVLSRoleParserRuleCall_4_0()); } + ruleVLSRole + { after(grammarAccess.getVLSFofFormulaAccess().getFofRoleVLSRoleParserRuleCall_4_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__FofFormulaAssignment_6 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFofFormulaAccess().getFofFormulaVLSTermParserRuleCall_6_0()); } + ruleVLSTerm + { after(grammarAccess.getVLSFofFormulaAccess().getFofFormulaVLSTermParserRuleCall_6_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFofFormula__AnnotationsAssignment_7_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFofFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); } + ruleVLSAnnotation + { after(grammarAccess.getVLSFofFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffFormulaAccess().getNameVLSTffNameParserRuleCall_2_0()); } + ruleVLSTffName + { after(grammarAccess.getVLSTffFormulaAccess().getNameVLSTffNameParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__TffRoleAssignment_4 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffFormulaAccess().getTffRoleVLSRoleParserRuleCall_4_0()); } + ruleVLSRole + { after(grammarAccess.getVLSTffFormulaAccess().getTffRoleVLSRoleParserRuleCall_4_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__FofFormulaAssignment_6 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffFormulaAccess().getFofFormulaVLSTffTermParserRuleCall_6_0()); } + ruleVLSTffTerm + { after(grammarAccess.getVLSTffFormulaAccess().getFofFormulaVLSTffTermParserRuleCall_6_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTffFormula__AnnotationsAssignment_7_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTffFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); } + ruleVLSAnnotation + { after(grammarAccess.getVLSTffFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__NameAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAnnotationAccess().getNameAlternatives_1_0()); } + (rule__VLSAnnotation__NameAlternatives_1_0) + { after(grammarAccess.getVLSAnnotationAccess().getNameAlternatives_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotation__FollowupAssignment_2_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAnnotationAccess().getFollowupVLSAnnotationTermsParserRuleCall_2_1_0()); } + ruleVLSAnnotationTerms + { after(grammarAccess.getVLSAnnotationAccess().getFollowupVLSAnnotationTermsParserRuleCall_2_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__TermsAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_0_0()); } + ruleVLSAnnotation + { after(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAnnotationTerms__TermsAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_1_1_0()); } + ruleVLSAnnotation + { after(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSCommentTerm__CommentAssignment + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); } + RULE_SINGLE_COMMENT + { after(grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__NameAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0()); } + ruleVLSAtomicConstant + { after(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSOtherDeclaration__TypeAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); } + ruleVLSTypeDef + { after(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__NameAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0()); } + ruleVLSVariable + { after(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariableDeclaration__TypeAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); } + ruleVLSTypeDef + { after(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__TypeSigAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTypeDefAccess().getTypeSigVLSUnitaryTermParserRuleCall_0_0()); } + ruleVLSUnitaryTerm + { after(grammarAccess.getVLSTypeDefAccess().getTypeSigVLSUnitaryTermParserRuleCall_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSTypeDef__MapsToAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSTypeDefAccess().getMapsToVLSAtomicConstantParserRuleCall_1_1_0()); } + ruleVLSAtomicConstant + { after(grammarAccess.getVLSTypeDefAccess().getMapsToVLSAtomicConstantParserRuleCall_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__InitTypeAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUnitaryTermAccess().getInitTypeVLSAtomicParserRuleCall_0_0()); } + ruleVLSAtomic + { after(grammarAccess.getVLSUnitaryTermAccess().getInitTypeVLSAtomicParserRuleCall_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnitaryTerm__NextTypeAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUnitaryTermAccess().getNextTypeVLSAtomicConstantParserRuleCall_1_1_0()); } + ruleVLSAtomicConstant + { after(grammarAccess.getVLSUnitaryTermAccess().getNextTypeVLSAtomicConstantParserRuleCall_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__RightAssignment_1_0_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__RightAssignment_1_1_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSBinary__RightAssignment_1_2_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__VariablesAssignment_1_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_2_0()); } + (rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_3_1_0()); } + (rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0) + { after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_3_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUniversalQuantifier__OperandAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUniversalQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSUniversalQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__VariablesAssignment_1_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_2_0()); } + (rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_3_1_0()); } + (rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0) + { after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_3_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSExistentialQuantifier__OperandAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSExistentialQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSExistentialQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryNegation__OperandAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); } + ruleVLSUnitaryFormula + { after(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSUnaryInfix__RightAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0()); } + ruleVLSAtomic + { after(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicConstant__NameAssignment_0_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicConstantAccess().getNameAlternatives_0_1_0()); } + (rule__VLSAtomicConstant__NameAlternatives_0_1_0) + { after(grammarAccess.getVLSAtomicConstantAccess().getNameAlternatives_0_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__ConstantAssignment_0_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getConstantAlternatives_0_1_0()); } + (rule__VLSAtomicFunction__ConstantAlternatives_0_1_0) + { after(grammarAccess.getVLSAtomicFunctionAccess().getConstantAlternatives_0_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__TermsAssignment_0_2_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_1_0()); } + ruleVLSFofTerm + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_2_1_0()); } + ruleVLSFofTerm + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_2_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__NameAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); } + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); } + '$less' + { after(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); } + ) + { after(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__TermsAssignment_1_3 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_3_0()); } + ruleVLSFofTerm + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_3_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSAtomicFunction__TermsAssignment_1_5 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_5_0()); } + ruleVLSFofTerm + { after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_5_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSVariable__NameAssignment + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0()); } + RULE_UPPER_WORD_ID + { after(grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__FunctorAssignment_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAlternatives_0_0()); } + (rule__VLSFunctionAsTerm__FunctorAlternatives_0_0) + { after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAlternatives_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__TermsAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_1_0()); } + ruleVLSFofTerm + { after(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_2_1_0()); } + ruleVLSFofTerm + { after(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_2_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__ValueAssignment_0_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0()); } + RULE_SIGNED_LITERAL + { after(grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__VLSDefinedTerm__ValueAssignment_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0()); } + RULE_DOUBLE_QUOTE + { after(grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +fragment RULE_ALPHA_NUMERIC : ('a'..'z'|'A'..'Z'|'0'..'9'|'_'); + +RULE_UPPER_WORD_ID : 'A'..'Z' RULE_ALPHA_NUMERIC*; + +RULE_LOWER_WORD_ID : 'a'..'z' RULE_ALPHA_NUMERIC*; + +RULE_DOUBLE_QUOTE : '"' ('\\' ('"'|'\\')|~(('\\'|'"')))* '"'; + +RULE_SINGLE_QUOTE : '\'' ('\\' ('\''|'\\')|~(('\\'|'\'')))+ '\''; + +fragment RULE_SIGN : ('+'|'-'); + +RULE_DOLLAR_ID : '$' RULE_LOWER_WORD_ID; + +RULE_DOUBLE_DOLLAR_ID : '$$' RULE_LOWER_WORD_ID; + +RULE_LITERAL : ('0'|'1'..'9' RULE_INT?); + +RULE_SIGNED_LITERAL : RULE_SIGN* RULE_LITERAL; + +RULE_SINGLE_COMMENT : '%' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + +fragment RULE_INT : ('0'..'9')+; + +RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\''); + +RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/'; + +RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_WS : (' '|'\t'|'\r'|'\n')+; + +RULE_ANY_OTHER : .; diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguage.tokens b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguage.tokens new file mode 100644 index 000000000..0f70141cf --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguage.tokens @@ -0,0 +1,136 @@ +'!'=72 +'!='=75 +'$false'=79 +'$less'=80 +'$true'=78 +'&'=70 +'('=55 +')'=57 +'*'=63 +','=56 +'.'=58 +':'=61 +':='=77 +'<='=66 +'<=>'=64 +'<~>'=67 +'='=76 +'=>'=65 +'>'=62 +'?'=73 +'Could'=41 +'Finite'=51 +'Found!'=53 +'Model'=52 +'Satisfiable!'=39 +'TRYING'=48 +'Virtual'=46 +'WARNING!'=40 +'['=49 +']'=50 +'assumption'=28 +'axiom'=24 +'conjecture'=25 +'corollary'=31 +'declare_'=60 +'definition'=27 +'distinct_domain'=22 +'fi_domain'=35 +'fi_functors'=36 +'fi_predicates'=37 +'finite_domain'=23 +'fof'=54 +'hypothesis'=26 +'lemma'=29 +'limit:'=45 +'memory.'=47 +'negated_conjecture'=32 +'not'=42 +'plain'=33 +'resource'=44 +'set'=43 +'tff'=59 +'theorem'=30 +'type'=34 +'unknown'=38 +'|'=71 +'~&'=69 +'~'=74 +'~|'=68 +RULE_ALPHA_NUMERIC=13 +RULE_ANY_OTHER=21 +RULE_DOLLAR_ID=7 +RULE_DOUBLE_DOLLAR_ID=8 +RULE_DOUBLE_QUOTE=12 +RULE_ID=16 +RULE_INT=15 +RULE_LITERAL=10 +RULE_LOWER_WORD_ID=4 +RULE_ML_COMMENT=18 +RULE_SIGN=14 +RULE_SIGNED_LITERAL=5 +RULE_SINGLE_COMMENT=9 +RULE_SINGLE_QUOTE=6 +RULE_SL_COMMENT=19 +RULE_STRING=17 +RULE_UPPER_WORD_ID=11 +RULE_WS=20 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 +T__28=28 +T__29=29 +T__30=30 +T__31=31 +T__32=32 +T__33=33 +T__34=34 +T__35=35 +T__36=36 +T__37=37 +T__38=38 +T__39=39 +T__40=40 +T__41=41 +T__42=42 +T__43=43 +T__44=44 +T__45=45 +T__46=46 +T__47=47 +T__48=48 +T__49=49 +T__50=50 +T__51=51 +T__52=52 +T__53=53 +T__54=54 +T__55=55 +T__56=56 +T__57=57 +T__58=58 +T__59=59 +T__60=60 +T__61=61 +T__62=62 +T__63=63 +T__64=64 +T__65=65 +T__66=66 +T__67=67 +T__68=68 +T__69=69 +T__70=70 +T__71=71 +T__72=72 +T__73=73 +T__74=74 +T__75=75 +T__76=76 +T__77=77 +T__78=78 +T__79=79 +T__80=80 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguageLexer.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguageLexer.java new file mode 100644 index 000000000..224e9fe9e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguageLexer.java @@ -0,0 +1,3515 @@ +package ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalVampireLanguageLexer extends Lexer { + public static final int T__50=50; + public static final int RULE_SIGN=14; + public static final int T__59=59; + public static final int RULE_SIGNED_LITERAL=5; + public static final int T__55=55; + public static final int T__56=56; + public static final int T__57=57; + public static final int T__58=58; + public static final int T__51=51; + public static final int RULE_DOUBLE_QUOTE=12; + public static final int T__52=52; + public static final int RULE_LITERAL=10; + public static final int T__53=53; + public static final int T__54=54; + public static final int T__60=60; + public static final int T__61=61; + public static final int RULE_ID=16; + public static final int RULE_SINGLE_QUOTE=6; + public static final int RULE_SINGLE_COMMENT=9; + public static final int T__26=26; + public static final int T__27=27; + public static final int T__28=28; + public static final int RULE_INT=15; + public static final int T__29=29; + public static final int T__22=22; + public static final int T__66=66; + public static final int RULE_ML_COMMENT=18; + public static final int T__23=23; + public static final int T__67=67; + public static final int T__24=24; + public static final int T__68=68; + public static final int T__25=25; + public static final int T__69=69; + public static final int T__62=62; + public static final int T__63=63; + public static final int T__64=64; + public static final int T__65=65; + public static final int T__70=70; + public static final int T__71=71; + public static final int T__72=72; + public static final int RULE_LOWER_WORD_ID=4; + public static final int RULE_STRING=17; + public static final int RULE_SL_COMMENT=19; + public static final int T__37=37; + public static final int T__38=38; + public static final int T__39=39; + public static final int T__33=33; + public static final int T__77=77; + public static final int T__34=34; + public static final int T__78=78; + public static final int T__35=35; + public static final int T__79=79; + public static final int T__36=36; + public static final int T__73=73; + public static final int EOF=-1; + public static final int T__30=30; + public static final int T__74=74; + public static final int T__31=31; + public static final int T__75=75; + public static final int T__32=32; + public static final int T__76=76; + public static final int T__80=80; + public static final int RULE_UPPER_WORD_ID=11; + public static final int RULE_WS=20; + public static final int RULE_DOLLAR_ID=7; + public static final int RULE_ALPHA_NUMERIC=13; + public static final int RULE_ANY_OTHER=21; + public static final int RULE_DOUBLE_DOLLAR_ID=8; + public static final int T__48=48; + public static final int T__49=49; + public static final int T__44=44; + public static final int T__45=45; + public static final int T__46=46; + public static final int T__47=47; + public static final int T__40=40; + public static final int T__41=41; + public static final int T__42=42; + public static final int T__43=43; + + // delegates + // delegators + + public InternalVampireLanguageLexer() {;} + public InternalVampireLanguageLexer(CharStream input) { + this(input, new RecognizerSharedState()); + } + public InternalVampireLanguageLexer(CharStream input, RecognizerSharedState state) { + super(input,state); + + } + public String getGrammarFileName() { return "InternalVampireLanguage.g"; } + + // $ANTLR start "T__22" + public final void mT__22() throws RecognitionException { + try { + int _type = T__22; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:11:7: ( 'distinct_domain' ) + // InternalVampireLanguage.g:11:9: 'distinct_domain' + { + match("distinct_domain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__22" + + // $ANTLR start "T__23" + public final void mT__23() throws RecognitionException { + try { + int _type = T__23; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:12:7: ( 'finite_domain' ) + // InternalVampireLanguage.g:12:9: 'finite_domain' + { + match("finite_domain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__23" + + // $ANTLR start "T__24" + public final void mT__24() throws RecognitionException { + try { + int _type = T__24; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:13:7: ( 'axiom' ) + // InternalVampireLanguage.g:13:9: 'axiom' + { + match("axiom"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__24" + + // $ANTLR start "T__25" + public final void mT__25() throws RecognitionException { + try { + int _type = T__25; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:14:7: ( 'conjecture' ) + // InternalVampireLanguage.g:14:9: 'conjecture' + { + match("conjecture"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__25" + + // $ANTLR start "T__26" + public final void mT__26() throws RecognitionException { + try { + int _type = T__26; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:15:7: ( 'hypothesis' ) + // InternalVampireLanguage.g:15:9: 'hypothesis' + { + match("hypothesis"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__26" + + // $ANTLR start "T__27" + public final void mT__27() throws RecognitionException { + try { + int _type = T__27; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:16:7: ( 'definition' ) + // InternalVampireLanguage.g:16:9: 'definition' + { + match("definition"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__27" + + // $ANTLR start "T__28" + public final void mT__28() throws RecognitionException { + try { + int _type = T__28; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:17:7: ( 'assumption' ) + // InternalVampireLanguage.g:17:9: 'assumption' + { + match("assumption"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__28" + + // $ANTLR start "T__29" + public final void mT__29() throws RecognitionException { + try { + int _type = T__29; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:18:7: ( 'lemma' ) + // InternalVampireLanguage.g:18:9: 'lemma' + { + match("lemma"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__29" + + // $ANTLR start "T__30" + public final void mT__30() throws RecognitionException { + try { + int _type = T__30; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:19:7: ( 'theorem' ) + // InternalVampireLanguage.g:19:9: 'theorem' + { + match("theorem"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__30" + + // $ANTLR start "T__31" + public final void mT__31() throws RecognitionException { + try { + int _type = T__31; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:20:7: ( 'corollary' ) + // InternalVampireLanguage.g:20:9: 'corollary' + { + match("corollary"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__31" + + // $ANTLR start "T__32" + public final void mT__32() throws RecognitionException { + try { + int _type = T__32; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:21:7: ( 'negated_conjecture' ) + // InternalVampireLanguage.g:21:9: 'negated_conjecture' + { + match("negated_conjecture"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__32" + + // $ANTLR start "T__33" + public final void mT__33() throws RecognitionException { + try { + int _type = T__33; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:22:7: ( 'plain' ) + // InternalVampireLanguage.g:22:9: 'plain' + { + match("plain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__33" + + // $ANTLR start "T__34" + public final void mT__34() throws RecognitionException { + try { + int _type = T__34; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:23:7: ( 'type' ) + // InternalVampireLanguage.g:23:9: 'type' + { + match("type"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__34" + + // $ANTLR start "T__35" + public final void mT__35() throws RecognitionException { + try { + int _type = T__35; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:24:7: ( 'fi_domain' ) + // InternalVampireLanguage.g:24:9: 'fi_domain' + { + match("fi_domain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__35" + + // $ANTLR start "T__36" + public final void mT__36() throws RecognitionException { + try { + int _type = T__36; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:25:7: ( 'fi_functors' ) + // InternalVampireLanguage.g:25:9: 'fi_functors' + { + match("fi_functors"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__36" + + // $ANTLR start "T__37" + public final void mT__37() throws RecognitionException { + try { + int _type = T__37; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:26:7: ( 'fi_predicates' ) + // InternalVampireLanguage.g:26:9: 'fi_predicates' + { + match("fi_predicates"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__37" + + // $ANTLR start "T__38" + public final void mT__38() throws RecognitionException { + try { + int _type = T__38; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:27:7: ( 'unknown' ) + // InternalVampireLanguage.g:27:9: 'unknown' + { + match("unknown"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__38" + + // $ANTLR start "T__39" + public final void mT__39() throws RecognitionException { + try { + int _type = T__39; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:28:7: ( 'Satisfiable!' ) + // InternalVampireLanguage.g:28:9: 'Satisfiable!' + { + match("Satisfiable!"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__39" + + // $ANTLR start "T__40" + public final void mT__40() throws RecognitionException { + try { + int _type = T__40; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:29:7: ( 'WARNING!' ) + // InternalVampireLanguage.g:29:9: 'WARNING!' + { + match("WARNING!"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__40" + + // $ANTLR start "T__41" + public final void mT__41() throws RecognitionException { + try { + int _type = T__41; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:30:7: ( 'Could' ) + // InternalVampireLanguage.g:30:9: 'Could' + { + match("Could"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__41" + + // $ANTLR start "T__42" + public final void mT__42() throws RecognitionException { + try { + int _type = T__42; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:31:7: ( 'not' ) + // InternalVampireLanguage.g:31:9: 'not' + { + match("not"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__42" + + // $ANTLR start "T__43" + public final void mT__43() throws RecognitionException { + try { + int _type = T__43; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:32:7: ( 'set' ) + // InternalVampireLanguage.g:32:9: 'set' + { + match("set"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__43" + + // $ANTLR start "T__44" + public final void mT__44() throws RecognitionException { + try { + int _type = T__44; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:33:7: ( 'resource' ) + // InternalVampireLanguage.g:33:9: 'resource' + { + match("resource"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__44" + + // $ANTLR start "T__45" + public final void mT__45() throws RecognitionException { + try { + int _type = T__45; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:34:7: ( 'limit:' ) + // InternalVampireLanguage.g:34:9: 'limit:' + { + match("limit:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__45" + + // $ANTLR start "T__46" + public final void mT__46() throws RecognitionException { + try { + int _type = T__46; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:35:7: ( 'Virtual' ) + // InternalVampireLanguage.g:35:9: 'Virtual' + { + match("Virtual"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__46" + + // $ANTLR start "T__47" + public final void mT__47() throws RecognitionException { + try { + int _type = T__47; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:36:7: ( 'memory.' ) + // InternalVampireLanguage.g:36:9: 'memory.' + { + match("memory."); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__47" + + // $ANTLR start "T__48" + public final void mT__48() throws RecognitionException { + try { + int _type = T__48; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:37:7: ( 'TRYING' ) + // InternalVampireLanguage.g:37:9: 'TRYING' + { + match("TRYING"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__48" + + // $ANTLR start "T__49" + public final void mT__49() throws RecognitionException { + try { + int _type = T__49; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:38:7: ( '[' ) + // InternalVampireLanguage.g:38:9: '[' + { + match('['); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__49" + + // $ANTLR start "T__50" + public final void mT__50() throws RecognitionException { + try { + int _type = T__50; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:39:7: ( ']' ) + // InternalVampireLanguage.g:39:9: ']' + { + match(']'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__50" + + // $ANTLR start "T__51" + public final void mT__51() throws RecognitionException { + try { + int _type = T__51; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:40:7: ( 'Finite' ) + // InternalVampireLanguage.g:40:9: 'Finite' + { + match("Finite"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__51" + + // $ANTLR start "T__52" + public final void mT__52() throws RecognitionException { + try { + int _type = T__52; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:41:7: ( 'Model' ) + // InternalVampireLanguage.g:41:9: 'Model' + { + match("Model"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__52" + + // $ANTLR start "T__53" + public final void mT__53() throws RecognitionException { + try { + int _type = T__53; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:42:7: ( 'Found!' ) + // InternalVampireLanguage.g:42:9: 'Found!' + { + match("Found!"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__53" + + // $ANTLR start "T__54" + public final void mT__54() throws RecognitionException { + try { + int _type = T__54; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:43:7: ( 'fof' ) + // InternalVampireLanguage.g:43:9: 'fof' + { + match("fof"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__54" + + // $ANTLR start "T__55" + public final void mT__55() throws RecognitionException { + try { + int _type = T__55; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:44:7: ( '(' ) + // InternalVampireLanguage.g:44:9: '(' + { + match('('); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__55" + + // $ANTLR start "T__56" + public final void mT__56() throws RecognitionException { + try { + int _type = T__56; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:45:7: ( ',' ) + // InternalVampireLanguage.g:45:9: ',' + { + match(','); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__56" + + // $ANTLR start "T__57" + public final void mT__57() throws RecognitionException { + try { + int _type = T__57; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:46:7: ( ')' ) + // InternalVampireLanguage.g:46:9: ')' + { + match(')'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__57" + + // $ANTLR start "T__58" + public final void mT__58() throws RecognitionException { + try { + int _type = T__58; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:47:7: ( '.' ) + // InternalVampireLanguage.g:47:9: '.' + { + match('.'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__58" + + // $ANTLR start "T__59" + public final void mT__59() throws RecognitionException { + try { + int _type = T__59; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:48:7: ( 'tff' ) + // InternalVampireLanguage.g:48:9: 'tff' + { + match("tff"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__59" + + // $ANTLR start "T__60" + public final void mT__60() throws RecognitionException { + try { + int _type = T__60; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:49:7: ( 'declare_' ) + // InternalVampireLanguage.g:49:9: 'declare_' + { + match("declare_"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__60" + + // $ANTLR start "T__61" + public final void mT__61() throws RecognitionException { + try { + int _type = T__61; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:50:7: ( ':' ) + // InternalVampireLanguage.g:50:9: ':' + { + match(':'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__61" + + // $ANTLR start "T__62" + public final void mT__62() throws RecognitionException { + try { + int _type = T__62; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:51:7: ( '>' ) + // InternalVampireLanguage.g:51:9: '>' + { + match('>'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__62" + + // $ANTLR start "T__63" + public final void mT__63() throws RecognitionException { + try { + int _type = T__63; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:52:7: ( '*' ) + // InternalVampireLanguage.g:52:9: '*' + { + match('*'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__63" + + // $ANTLR start "T__64" + public final void mT__64() throws RecognitionException { + try { + int _type = T__64; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:53:7: ( '<=>' ) + // InternalVampireLanguage.g:53:9: '<=>' + { + match("<=>"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__64" + + // $ANTLR start "T__65" + public final void mT__65() throws RecognitionException { + try { + int _type = T__65; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:54:7: ( '=>' ) + // InternalVampireLanguage.g:54:9: '=>' + { + match("=>"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__65" + + // $ANTLR start "T__66" + public final void mT__66() throws RecognitionException { + try { + int _type = T__66; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:55:7: ( '<=' ) + // InternalVampireLanguage.g:55:9: '<=' + { + match("<="); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__66" + + // $ANTLR start "T__67" + public final void mT__67() throws RecognitionException { + try { + int _type = T__67; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:56:7: ( '<~>' ) + // InternalVampireLanguage.g:56:9: '<~>' + { + match("<~>"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__67" + + // $ANTLR start "T__68" + public final void mT__68() throws RecognitionException { + try { + int _type = T__68; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:57:7: ( '~|' ) + // InternalVampireLanguage.g:57:9: '~|' + { + match("~|"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__68" + + // $ANTLR start "T__69" + public final void mT__69() throws RecognitionException { + try { + int _type = T__69; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:58:7: ( '~&' ) + // InternalVampireLanguage.g:58:9: '~&' + { + match("~&"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__69" + + // $ANTLR start "T__70" + public final void mT__70() throws RecognitionException { + try { + int _type = T__70; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:59:7: ( '&' ) + // InternalVampireLanguage.g:59:9: '&' + { + match('&'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__70" + + // $ANTLR start "T__71" + public final void mT__71() throws RecognitionException { + try { + int _type = T__71; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:60:7: ( '|' ) + // InternalVampireLanguage.g:60:9: '|' + { + match('|'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__71" + + // $ANTLR start "T__72" + public final void mT__72() throws RecognitionException { + try { + int _type = T__72; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:61:7: ( '!' ) + // InternalVampireLanguage.g:61:9: '!' + { + match('!'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__72" + + // $ANTLR start "T__73" + public final void mT__73() throws RecognitionException { + try { + int _type = T__73; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:62:7: ( '?' ) + // InternalVampireLanguage.g:62:9: '?' + { + match('?'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__73" + + // $ANTLR start "T__74" + public final void mT__74() throws RecognitionException { + try { + int _type = T__74; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:63:7: ( '~' ) + // InternalVampireLanguage.g:63:9: '~' + { + match('~'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__74" + + // $ANTLR start "T__75" + public final void mT__75() throws RecognitionException { + try { + int _type = T__75; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:64:7: ( '!=' ) + // InternalVampireLanguage.g:64:9: '!=' + { + match("!="); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__75" + + // $ANTLR start "T__76" + public final void mT__76() throws RecognitionException { + try { + int _type = T__76; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:65:7: ( '=' ) + // InternalVampireLanguage.g:65:9: '=' + { + match('='); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__76" + + // $ANTLR start "T__77" + public final void mT__77() throws RecognitionException { + try { + int _type = T__77; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:66:7: ( ':=' ) + // InternalVampireLanguage.g:66:9: ':=' + { + match(":="); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__77" + + // $ANTLR start "T__78" + public final void mT__78() throws RecognitionException { + try { + int _type = T__78; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:67:7: ( '$true' ) + // InternalVampireLanguage.g:67:9: '$true' + { + match("$true"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__78" + + // $ANTLR start "T__79" + public final void mT__79() throws RecognitionException { + try { + int _type = T__79; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:68:7: ( '$false' ) + // InternalVampireLanguage.g:68:9: '$false' + { + match("$false"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__79" + + // $ANTLR start "T__80" + public final void mT__80() throws RecognitionException { + try { + int _type = T__80; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:69:7: ( '$less' ) + // InternalVampireLanguage.g:69:9: '$less' + { + match("$less"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__80" + + // $ANTLR start "RULE_ALPHA_NUMERIC" + public final void mRULE_ALPHA_NUMERIC() throws RecognitionException { + try { + // InternalVampireLanguage.g:6892:29: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' ) ) + // InternalVampireLanguage.g:6892:31: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' ) + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + } + finally { + } + } + // $ANTLR end "RULE_ALPHA_NUMERIC" + + // $ANTLR start "RULE_UPPER_WORD_ID" + public final void mRULE_UPPER_WORD_ID() throws RecognitionException { + try { + int _type = RULE_UPPER_WORD_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6894:20: ( 'A' .. 'Z' ( RULE_ALPHA_NUMERIC )* ) + // InternalVampireLanguage.g:6894:22: 'A' .. 'Z' ( RULE_ALPHA_NUMERIC )* + { + matchRange('A','Z'); + // InternalVampireLanguage.g:6894:31: ( RULE_ALPHA_NUMERIC )* + loop1: + do { + int alt1=2; + int LA1_0 = input.LA(1); + + if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) { + alt1=1; + } + + + switch (alt1) { + case 1 : + // InternalVampireLanguage.g:6894:31: RULE_ALPHA_NUMERIC + { + mRULE_ALPHA_NUMERIC(); + + } + break; + + default : + break loop1; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_UPPER_WORD_ID" + + // $ANTLR start "RULE_LOWER_WORD_ID" + public final void mRULE_LOWER_WORD_ID() throws RecognitionException { + try { + int _type = RULE_LOWER_WORD_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6896:20: ( 'a' .. 'z' ( RULE_ALPHA_NUMERIC )* ) + // InternalVampireLanguage.g:6896:22: 'a' .. 'z' ( RULE_ALPHA_NUMERIC )* + { + matchRange('a','z'); + // InternalVampireLanguage.g:6896:31: ( RULE_ALPHA_NUMERIC )* + loop2: + do { + int alt2=2; + int LA2_0 = input.LA(1); + + if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) { + alt2=1; + } + + + switch (alt2) { + case 1 : + // InternalVampireLanguage.g:6896:31: RULE_ALPHA_NUMERIC + { + mRULE_ALPHA_NUMERIC(); + + } + break; + + default : + break loop2; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_LOWER_WORD_ID" + + // $ANTLR start "RULE_DOUBLE_QUOTE" + public final void mRULE_DOUBLE_QUOTE() throws RecognitionException { + try { + int _type = RULE_DOUBLE_QUOTE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6898:19: ( '\"' ( '\\\\' ( '\"' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' ) + // InternalVampireLanguage.g:6898:21: '\"' ( '\\\\' ( '\"' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + { + match('\"'); + // InternalVampireLanguage.g:6898:25: ( '\\\\' ( '\"' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* + loop3: + do { + int alt3=3; + int LA3_0 = input.LA(1); + + if ( (LA3_0=='\\') ) { + alt3=1; + } + else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=']' && LA3_0<='\uFFFF')) ) { + alt3=2; + } + + + switch (alt3) { + case 1 : + // InternalVampireLanguage.g:6898:26: '\\\\' ( '\"' | '\\\\' ) + { + match('\\'); + if ( input.LA(1)=='\"'||input.LA(1)=='\\' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + case 2 : + // InternalVampireLanguage.g:6898:42: ~ ( ( '\\\\' | '\"' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop3; + } + } while (true); + + match('\"'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_DOUBLE_QUOTE" + + // $ANTLR start "RULE_SINGLE_QUOTE" + public final void mRULE_SINGLE_QUOTE() throws RecognitionException { + try { + int _type = RULE_SINGLE_QUOTE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6900:19: ( '\\'' ( '\\\\' ( '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )+ '\\'' ) + // InternalVampireLanguage.g:6900:21: '\\'' ( '\\\\' ( '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )+ '\\'' + { + match('\''); + // InternalVampireLanguage.g:6900:26: ( '\\\\' ( '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )+ + int cnt4=0; + loop4: + do { + int alt4=3; + int LA4_0 = input.LA(1); + + if ( (LA4_0=='\\') ) { + alt4=1; + } + else if ( ((LA4_0>='\u0000' && LA4_0<='&')||(LA4_0>='(' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) { + alt4=2; + } + + + switch (alt4) { + case 1 : + // InternalVampireLanguage.g:6900:27: '\\\\' ( '\\'' | '\\\\' ) + { + match('\\'); + if ( input.LA(1)=='\''||input.LA(1)=='\\' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + case 2 : + // InternalVampireLanguage.g:6900:44: ~ ( ( '\\\\' | '\\'' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt4 >= 1 ) break loop4; + EarlyExitException eee = + new EarlyExitException(4, input); + throw eee; + } + cnt4++; + } while (true); + + match('\''); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SINGLE_QUOTE" + + // $ANTLR start "RULE_SIGN" + public final void mRULE_SIGN() throws RecognitionException { + try { + // InternalVampireLanguage.g:6902:20: ( ( '+' | '-' ) ) + // InternalVampireLanguage.g:6902:22: ( '+' | '-' ) + { + if ( input.LA(1)=='+'||input.LA(1)=='-' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + } + finally { + } + } + // $ANTLR end "RULE_SIGN" + + // $ANTLR start "RULE_DOLLAR_ID" + public final void mRULE_DOLLAR_ID() throws RecognitionException { + try { + int _type = RULE_DOLLAR_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6904:16: ( '$' RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:6904:18: '$' RULE_LOWER_WORD_ID + { + match('$'); + mRULE_LOWER_WORD_ID(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_DOLLAR_ID" + + // $ANTLR start "RULE_DOUBLE_DOLLAR_ID" + public final void mRULE_DOUBLE_DOLLAR_ID() throws RecognitionException { + try { + int _type = RULE_DOUBLE_DOLLAR_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6906:23: ( '$$' RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:6906:25: '$$' RULE_LOWER_WORD_ID + { + match("$$"); + + mRULE_LOWER_WORD_ID(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_DOUBLE_DOLLAR_ID" + + // $ANTLR start "RULE_LITERAL" + public final void mRULE_LITERAL() throws RecognitionException { + try { + int _type = RULE_LITERAL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6908:14: ( ( '0' | '1' .. '9' ( RULE_INT )? ) ) + // InternalVampireLanguage.g:6908:16: ( '0' | '1' .. '9' ( RULE_INT )? ) + { + // InternalVampireLanguage.g:6908:16: ( '0' | '1' .. '9' ( RULE_INT )? ) + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0=='0') ) { + alt6=1; + } + else if ( ((LA6_0>='1' && LA6_0<='9')) ) { + alt6=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 6, 0, input); + + throw nvae; + } + switch (alt6) { + case 1 : + // InternalVampireLanguage.g:6908:17: '0' + { + match('0'); + + } + break; + case 2 : + // InternalVampireLanguage.g:6908:21: '1' .. '9' ( RULE_INT )? + { + matchRange('1','9'); + // InternalVampireLanguage.g:6908:30: ( RULE_INT )? + int alt5=2; + int LA5_0 = input.LA(1); + + if ( ((LA5_0>='0' && LA5_0<='9')) ) { + alt5=1; + } + switch (alt5) { + case 1 : + // InternalVampireLanguage.g:6908:30: RULE_INT + { + mRULE_INT(); + + } + break; + + } + + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_LITERAL" + + // $ANTLR start "RULE_SIGNED_LITERAL" + public final void mRULE_SIGNED_LITERAL() throws RecognitionException { + try { + int _type = RULE_SIGNED_LITERAL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6910:21: ( ( RULE_SIGN )* RULE_LITERAL ) + // InternalVampireLanguage.g:6910:23: ( RULE_SIGN )* RULE_LITERAL + { + // InternalVampireLanguage.g:6910:23: ( RULE_SIGN )* + loop7: + do { + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0=='+'||LA7_0=='-') ) { + alt7=1; + } + + + switch (alt7) { + case 1 : + // InternalVampireLanguage.g:6910:23: RULE_SIGN + { + mRULE_SIGN(); + + } + break; + + default : + break loop7; + } + } while (true); + + mRULE_LITERAL(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SIGNED_LITERAL" + + // $ANTLR start "RULE_SINGLE_COMMENT" + public final void mRULE_SINGLE_COMMENT() throws RecognitionException { + try { + int _type = RULE_SINGLE_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6912:21: ( '%' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalVampireLanguage.g:6912:23: '%' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + { + match('%'); + // InternalVampireLanguage.g:6912:27: (~ ( ( '\\n' | '\\r' ) ) )* + loop8: + do { + int alt8=2; + int LA8_0 = input.LA(1); + + if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) { + alt8=1; + } + + + switch (alt8) { + case 1 : + // InternalVampireLanguage.g:6912:27: ~ ( ( '\\n' | '\\r' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop8; + } + } while (true); + + // InternalVampireLanguage.g:6912:43: ( ( '\\r' )? '\\n' )? + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0=='\n'||LA10_0=='\r') ) { + alt10=1; + } + switch (alt10) { + case 1 : + // InternalVampireLanguage.g:6912:44: ( '\\r' )? '\\n' + { + // InternalVampireLanguage.g:6912:44: ( '\\r' )? + int alt9=2; + int LA9_0 = input.LA(1); + + if ( (LA9_0=='\r') ) { + alt9=1; + } + switch (alt9) { + case 1 : + // InternalVampireLanguage.g:6912:44: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SINGLE_COMMENT" + + // $ANTLR start "RULE_ID" + public final void mRULE_ID() throws RecognitionException { + try { + int _type = RULE_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6914:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalVampireLanguage.g:6914:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + { + // InternalVampireLanguage.g:6914:11: ( '^' )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0=='^') ) { + alt11=1; + } + switch (alt11) { + case 1 : + // InternalVampireLanguage.g:6914:11: '^' + { + match('^'); + + } + break; + + } + + if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + // InternalVampireLanguage.g:6914:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + loop12: + do { + int alt12=2; + int LA12_0 = input.LA(1); + + if ( ((LA12_0>='0' && LA12_0<='9')||(LA12_0>='A' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='z')) ) { + alt12=1; + } + + + switch (alt12) { + case 1 : + // InternalVampireLanguage.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop12; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ID" + + // $ANTLR start "RULE_INT" + public final void mRULE_INT() throws RecognitionException { + try { + // InternalVampireLanguage.g:6916:19: ( ( '0' .. '9' )+ ) + // InternalVampireLanguage.g:6916:21: ( '0' .. '9' )+ + { + // InternalVampireLanguage.g:6916:21: ( '0' .. '9' )+ + int cnt13=0; + loop13: + do { + int alt13=2; + int LA13_0 = input.LA(1); + + if ( ((LA13_0>='0' && LA13_0<='9')) ) { + alt13=1; + } + + + switch (alt13) { + case 1 : + // InternalVampireLanguage.g:6916:22: '0' .. '9' + { + matchRange('0','9'); + + } + break; + + default : + if ( cnt13 >= 1 ) break loop13; + EarlyExitException eee = + new EarlyExitException(13, input); + throw eee; + } + cnt13++; + } while (true); + + + } + + } + finally { + } + } + // $ANTLR end "RULE_INT" + + // $ANTLR start "RULE_STRING" + public final void mRULE_STRING() throws RecognitionException { + try { + int _type = RULE_STRING; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6918:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalVampireLanguage.g:6918:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + { + // InternalVampireLanguage.g:6918:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0=='\"') ) { + alt16=1; + } + else if ( (LA16_0=='\'') ) { + alt16=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 16, 0, input); + + throw nvae; + } + switch (alt16) { + case 1 : + // InternalVampireLanguage.g:6918:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + { + match('\"'); + // InternalVampireLanguage.g:6918:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + loop14: + do { + int alt14=3; + int LA14_0 = input.LA(1); + + if ( (LA14_0=='\\') ) { + alt14=1; + } + else if ( ((LA14_0>='\u0000' && LA14_0<='!')||(LA14_0>='#' && LA14_0<='[')||(LA14_0>=']' && LA14_0<='\uFFFF')) ) { + alt14=2; + } + + + switch (alt14) { + case 1 : + // InternalVampireLanguage.g:6918:21: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalVampireLanguage.g:6918:28: ~ ( ( '\\\\' | '\"' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop14; + } + } while (true); + + match('\"'); + + } + break; + case 2 : + // InternalVampireLanguage.g:6918:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + { + match('\''); + // InternalVampireLanguage.g:6918:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + loop15: + do { + int alt15=3; + int LA15_0 = input.LA(1); + + if ( (LA15_0=='\\') ) { + alt15=1; + } + else if ( ((LA15_0>='\u0000' && LA15_0<='&')||(LA15_0>='(' && LA15_0<='[')||(LA15_0>=']' && LA15_0<='\uFFFF')) ) { + alt15=2; + } + + + switch (alt15) { + case 1 : + // InternalVampireLanguage.g:6918:54: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalVampireLanguage.g:6918:61: ~ ( ( '\\\\' | '\\'' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop15; + } + } while (true); + + match('\''); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_STRING" + + // $ANTLR start "RULE_ML_COMMENT" + public final void mRULE_ML_COMMENT() throws RecognitionException { + try { + int _type = RULE_ML_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6920:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalVampireLanguage.g:6920:19: '/*' ( options {greedy=false; } : . )* '*/' + { + match("/*"); + + // InternalVampireLanguage.g:6920:24: ( options {greedy=false; } : . )* + loop17: + do { + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0=='*') ) { + int LA17_1 = input.LA(2); + + if ( (LA17_1=='/') ) { + alt17=2; + } + else if ( ((LA17_1>='\u0000' && LA17_1<='.')||(LA17_1>='0' && LA17_1<='\uFFFF')) ) { + alt17=1; + } + + + } + else if ( ((LA17_0>='\u0000' && LA17_0<=')')||(LA17_0>='+' && LA17_0<='\uFFFF')) ) { + alt17=1; + } + + + switch (alt17) { + case 1 : + // InternalVampireLanguage.g:6920:52: . + { + matchAny(); + + } + break; + + default : + break loop17; + } + } while (true); + + match("*/"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ML_COMMENT" + + // $ANTLR start "RULE_SL_COMMENT" + public final void mRULE_SL_COMMENT() throws RecognitionException { + try { + int _type = RULE_SL_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6922:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalVampireLanguage.g:6922:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + { + match("//"); + + // InternalVampireLanguage.g:6922:24: (~ ( ( '\\n' | '\\r' ) ) )* + loop18: + do { + int alt18=2; + int LA18_0 = input.LA(1); + + if ( ((LA18_0>='\u0000' && LA18_0<='\t')||(LA18_0>='\u000B' && LA18_0<='\f')||(LA18_0>='\u000E' && LA18_0<='\uFFFF')) ) { + alt18=1; + } + + + switch (alt18) { + case 1 : + // InternalVampireLanguage.g:6922:24: ~ ( ( '\\n' | '\\r' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop18; + } + } while (true); + + // InternalVampireLanguage.g:6922:40: ( ( '\\r' )? '\\n' )? + int alt20=2; + int LA20_0 = input.LA(1); + + if ( (LA20_0=='\n'||LA20_0=='\r') ) { + alt20=1; + } + switch (alt20) { + case 1 : + // InternalVampireLanguage.g:6922:41: ( '\\r' )? '\\n' + { + // InternalVampireLanguage.g:6922:41: ( '\\r' )? + int alt19=2; + int LA19_0 = input.LA(1); + + if ( (LA19_0=='\r') ) { + alt19=1; + } + switch (alt19) { + case 1 : + // InternalVampireLanguage.g:6922:41: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SL_COMMENT" + + // $ANTLR start "RULE_WS" + public final void mRULE_WS() throws RecognitionException { + try { + int _type = RULE_WS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6924:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalVampireLanguage.g:6924:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + { + // InternalVampireLanguage.g:6924:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + int cnt21=0; + loop21: + do { + int alt21=2; + int LA21_0 = input.LA(1); + + if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) { + alt21=1; + } + + + switch (alt21) { + case 1 : + // InternalVampireLanguage.g: + { + if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt21 >= 1 ) break loop21; + EarlyExitException eee = + new EarlyExitException(21, input); + throw eee; + } + cnt21++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_WS" + + // $ANTLR start "RULE_ANY_OTHER" + public final void mRULE_ANY_OTHER() throws RecognitionException { + try { + int _type = RULE_ANY_OTHER; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:6926:16: ( . ) + // InternalVampireLanguage.g:6926:18: . + { + matchAny(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ANY_OTHER" + + public void mTokens() throws RecognitionException { + // InternalVampireLanguage.g:1:8: ( T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | RULE_UPPER_WORD_ID | RULE_LOWER_WORD_ID | RULE_DOUBLE_QUOTE | RULE_SINGLE_QUOTE | RULE_DOLLAR_ID | RULE_DOUBLE_DOLLAR_ID | RULE_LITERAL | RULE_SIGNED_LITERAL | RULE_SINGLE_COMMENT | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) + int alt22=74; + alt22 = dfa22.predict(input); + switch (alt22) { + case 1 : + // InternalVampireLanguage.g:1:10: T__22 + { + mT__22(); + + } + break; + case 2 : + // InternalVampireLanguage.g:1:16: T__23 + { + mT__23(); + + } + break; + case 3 : + // InternalVampireLanguage.g:1:22: T__24 + { + mT__24(); + + } + break; + case 4 : + // InternalVampireLanguage.g:1:28: T__25 + { + mT__25(); + + } + break; + case 5 : + // InternalVampireLanguage.g:1:34: T__26 + { + mT__26(); + + } + break; + case 6 : + // InternalVampireLanguage.g:1:40: T__27 + { + mT__27(); + + } + break; + case 7 : + // InternalVampireLanguage.g:1:46: T__28 + { + mT__28(); + + } + break; + case 8 : + // InternalVampireLanguage.g:1:52: T__29 + { + mT__29(); + + } + break; + case 9 : + // InternalVampireLanguage.g:1:58: T__30 + { + mT__30(); + + } + break; + case 10 : + // InternalVampireLanguage.g:1:64: T__31 + { + mT__31(); + + } + break; + case 11 : + // InternalVampireLanguage.g:1:70: T__32 + { + mT__32(); + + } + break; + case 12 : + // InternalVampireLanguage.g:1:76: T__33 + { + mT__33(); + + } + break; + case 13 : + // InternalVampireLanguage.g:1:82: T__34 + { + mT__34(); + + } + break; + case 14 : + // InternalVampireLanguage.g:1:88: T__35 + { + mT__35(); + + } + break; + case 15 : + // InternalVampireLanguage.g:1:94: T__36 + { + mT__36(); + + } + break; + case 16 : + // InternalVampireLanguage.g:1:100: T__37 + { + mT__37(); + + } + break; + case 17 : + // InternalVampireLanguage.g:1:106: T__38 + { + mT__38(); + + } + break; + case 18 : + // InternalVampireLanguage.g:1:112: T__39 + { + mT__39(); + + } + break; + case 19 : + // InternalVampireLanguage.g:1:118: T__40 + { + mT__40(); + + } + break; + case 20 : + // InternalVampireLanguage.g:1:124: T__41 + { + mT__41(); + + } + break; + case 21 : + // InternalVampireLanguage.g:1:130: T__42 + { + mT__42(); + + } + break; + case 22 : + // InternalVampireLanguage.g:1:136: T__43 + { + mT__43(); + + } + break; + case 23 : + // InternalVampireLanguage.g:1:142: T__44 + { + mT__44(); + + } + break; + case 24 : + // InternalVampireLanguage.g:1:148: T__45 + { + mT__45(); + + } + break; + case 25 : + // InternalVampireLanguage.g:1:154: T__46 + { + mT__46(); + + } + break; + case 26 : + // InternalVampireLanguage.g:1:160: T__47 + { + mT__47(); + + } + break; + case 27 : + // InternalVampireLanguage.g:1:166: T__48 + { + mT__48(); + + } + break; + case 28 : + // InternalVampireLanguage.g:1:172: T__49 + { + mT__49(); + + } + break; + case 29 : + // InternalVampireLanguage.g:1:178: T__50 + { + mT__50(); + + } + break; + case 30 : + // InternalVampireLanguage.g:1:184: T__51 + { + mT__51(); + + } + break; + case 31 : + // InternalVampireLanguage.g:1:190: T__52 + { + mT__52(); + + } + break; + case 32 : + // InternalVampireLanguage.g:1:196: T__53 + { + mT__53(); + + } + break; + case 33 : + // InternalVampireLanguage.g:1:202: T__54 + { + mT__54(); + + } + break; + case 34 : + // InternalVampireLanguage.g:1:208: T__55 + { + mT__55(); + + } + break; + case 35 : + // InternalVampireLanguage.g:1:214: T__56 + { + mT__56(); + + } + break; + case 36 : + // InternalVampireLanguage.g:1:220: T__57 + { + mT__57(); + + } + break; + case 37 : + // InternalVampireLanguage.g:1:226: T__58 + { + mT__58(); + + } + break; + case 38 : + // InternalVampireLanguage.g:1:232: T__59 + { + mT__59(); + + } + break; + case 39 : + // InternalVampireLanguage.g:1:238: T__60 + { + mT__60(); + + } + break; + case 40 : + // InternalVampireLanguage.g:1:244: T__61 + { + mT__61(); + + } + break; + case 41 : + // InternalVampireLanguage.g:1:250: T__62 + { + mT__62(); + + } + break; + case 42 : + // InternalVampireLanguage.g:1:256: T__63 + { + mT__63(); + + } + break; + case 43 : + // InternalVampireLanguage.g:1:262: T__64 + { + mT__64(); + + } + break; + case 44 : + // InternalVampireLanguage.g:1:268: T__65 + { + mT__65(); + + } + break; + case 45 : + // InternalVampireLanguage.g:1:274: T__66 + { + mT__66(); + + } + break; + case 46 : + // InternalVampireLanguage.g:1:280: T__67 + { + mT__67(); + + } + break; + case 47 : + // InternalVampireLanguage.g:1:286: T__68 + { + mT__68(); + + } + break; + case 48 : + // InternalVampireLanguage.g:1:292: T__69 + { + mT__69(); + + } + break; + case 49 : + // InternalVampireLanguage.g:1:298: T__70 + { + mT__70(); + + } + break; + case 50 : + // InternalVampireLanguage.g:1:304: T__71 + { + mT__71(); + + } + break; + case 51 : + // InternalVampireLanguage.g:1:310: T__72 + { + mT__72(); + + } + break; + case 52 : + // InternalVampireLanguage.g:1:316: T__73 + { + mT__73(); + + } + break; + case 53 : + // InternalVampireLanguage.g:1:322: T__74 + { + mT__74(); + + } + break; + case 54 : + // InternalVampireLanguage.g:1:328: T__75 + { + mT__75(); + + } + break; + case 55 : + // InternalVampireLanguage.g:1:334: T__76 + { + mT__76(); + + } + break; + case 56 : + // InternalVampireLanguage.g:1:340: T__77 + { + mT__77(); + + } + break; + case 57 : + // InternalVampireLanguage.g:1:346: T__78 + { + mT__78(); + + } + break; + case 58 : + // InternalVampireLanguage.g:1:352: T__79 + { + mT__79(); + + } + break; + case 59 : + // InternalVampireLanguage.g:1:358: T__80 + { + mT__80(); + + } + break; + case 60 : + // InternalVampireLanguage.g:1:364: RULE_UPPER_WORD_ID + { + mRULE_UPPER_WORD_ID(); + + } + break; + case 61 : + // InternalVampireLanguage.g:1:383: RULE_LOWER_WORD_ID + { + mRULE_LOWER_WORD_ID(); + + } + break; + case 62 : + // InternalVampireLanguage.g:1:402: RULE_DOUBLE_QUOTE + { + mRULE_DOUBLE_QUOTE(); + + } + break; + case 63 : + // InternalVampireLanguage.g:1:420: RULE_SINGLE_QUOTE + { + mRULE_SINGLE_QUOTE(); + + } + break; + case 64 : + // InternalVampireLanguage.g:1:438: RULE_DOLLAR_ID + { + mRULE_DOLLAR_ID(); + + } + break; + case 65 : + // InternalVampireLanguage.g:1:453: RULE_DOUBLE_DOLLAR_ID + { + mRULE_DOUBLE_DOLLAR_ID(); + + } + break; + case 66 : + // InternalVampireLanguage.g:1:475: RULE_LITERAL + { + mRULE_LITERAL(); + + } + break; + case 67 : + // InternalVampireLanguage.g:1:488: RULE_SIGNED_LITERAL + { + mRULE_SIGNED_LITERAL(); + + } + break; + case 68 : + // InternalVampireLanguage.g:1:508: RULE_SINGLE_COMMENT + { + mRULE_SINGLE_COMMENT(); + + } + break; + case 69 : + // InternalVampireLanguage.g:1:528: RULE_ID + { + mRULE_ID(); + + } + break; + case 70 : + // InternalVampireLanguage.g:1:536: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 71 : + // InternalVampireLanguage.g:1:548: RULE_ML_COMMENT + { + mRULE_ML_COMMENT(); + + } + break; + case 72 : + // InternalVampireLanguage.g:1:564: RULE_SL_COMMENT + { + mRULE_SL_COMMENT(); + + } + break; + case 73 : + // InternalVampireLanguage.g:1:580: RULE_WS + { + mRULE_WS(); + + } + break; + case 74 : + // InternalVampireLanguage.g:1:588: RULE_ANY_OTHER + { + mRULE_ANY_OTHER(); + + } + break; + + } + + } + + + protected DFA22 dfa22 = new DFA22(this); + static final String DFA22_eotS = + "\1\uffff\12\65\3\107\2\65\1\107\1\65\1\107\2\uffff\2\107\4\uffff\1\132\2\uffff\1\62\1\140\1\143\2\uffff\1\147\1\uffff\1\62\1\107\1\65\2\62\1\uffff\1\164\1\62\1\uffff\1\62\1\uffff\1\62\2\uffff\2\65\1\uffff\20\65\1\107\1\uffff\3\107\2\65\1\107\1\65\1\107\2\uffff\3\107\10\uffff\1\u009c\13\uffff\3\155\11\uffff\1\164\6\uffff\5\65\1\u00ab\11\65\1\u00b5\1\65\1\u00b7\2\65\3\107\1\u00bd\1\65\1\107\1\65\4\107\2\uffff\3\155\4\uffff\7\65\1\uffff\10\65\1\u00d8\1\uffff\1\65\1\uffff\2\65\3\107\1\uffff\1\65\1\107\1\65\4\107\3\155\1\uffff\7\65\1\u00f0\4\65\1\u00f5\2\65\1\uffff\1\65\1\u00f9\1\65\2\107\1\u00fd\1\65\1\107\1\65\3\107\1\u0104\1\u0105\1\155\1\u0107\7\65\1\uffff\4\65\2\uffff\2\65\1\uffff\1\65\2\107\1\uffff\1\65\1\107\1\65\1\u011b\1\u011c\3\uffff\1\u011d\1\uffff\13\65\1\u0129\1\65\1\u012b\2\107\1\65\1\u012f\4\uffff\2\65\1\u0132\10\65\1\uffff\1\65\1\uffff\1\107\1\uffff\1\u013d\1\uffff\2\65\1\uffff\1\65\1\u0141\4\65\1\u0146\2\65\1\107\1\uffff\1\65\1\u014b\1\65\1\uffff\2\65\1\u014f\1\u0150\1\uffff\1\u0151\1\65\1\107\1\65\1\uffff\1\65\1\u0156\1\65\3\uffff\1\65\1\107\2\65\1\uffff\2\65\1\uffff\1\65\1\u015f\1\u0160\2\65\2\uffff\1\65\1\u0164\1\65\1\uffff\2\65\1\u0168\1\uffff"; + static final String DFA22_eofS = + "\u0169\uffff"; + static final String DFA22_minS = + "\1\0\22\60\2\uffff\2\60\4\uffff\1\75\2\uffff\1\75\1\76\1\46\2\uffff\1\75\1\uffff\1\44\2\60\2\0\1\uffff\1\60\1\53\1\uffff\1\101\1\uffff\1\52\2\uffff\2\60\1\uffff\21\60\1\uffff\10\60\2\uffff\3\60\10\uffff\1\76\13\uffff\1\162\1\141\1\145\2\uffff\2\0\1\uffff\2\0\2\uffff\1\60\6\uffff\37\60\2\uffff\1\165\1\154\1\163\1\0\1\uffff\1\0\1\uffff\7\60\1\uffff\11\60\1\uffff\1\60\1\uffff\5\60\1\uffff\7\60\1\145\2\163\1\uffff\17\60\1\uffff\13\60\1\41\2\60\1\145\10\60\1\uffff\4\60\2\uffff\2\60\1\uffff\3\60\1\uffff\2\60\1\56\2\60\3\uffff\1\60\1\uffff\17\60\1\41\2\60\4\uffff\13\60\1\uffff\1\60\1\uffff\1\60\1\uffff\1\60\1\uffff\2\60\1\uffff\12\60\1\uffff\3\60\1\uffff\4\60\1\uffff\4\60\1\uffff\3\60\3\uffff\1\60\1\41\2\60\1\uffff\2\60\1\uffff\5\60\2\uffff\3\60\1\uffff\3\60\1\uffff"; + static final String DFA22_maxS = + "\1\uffff\22\172\2\uffff\2\172\4\uffff\1\75\2\uffff\1\176\1\76\1\174\2\uffff\1\75\1\uffff\3\172\2\uffff\1\uffff\2\71\1\uffff\1\172\1\uffff\1\57\2\uffff\2\172\1\uffff\21\172\1\uffff\10\172\2\uffff\3\172\10\uffff\1\76\13\uffff\1\162\1\141\1\145\2\uffff\2\uffff\1\uffff\2\uffff\2\uffff\1\71\6\uffff\37\172\2\uffff\1\165\1\154\1\163\1\uffff\1\uffff\1\uffff\1\uffff\7\172\1\uffff\11\172\1\uffff\1\172\1\uffff\5\172\1\uffff\7\172\1\145\2\163\1\uffff\17\172\1\uffff\16\172\1\145\10\172\1\uffff\4\172\2\uffff\2\172\1\uffff\3\172\1\uffff\5\172\3\uffff\1\172\1\uffff\22\172\4\uffff\13\172\1\uffff\1\172\1\uffff\1\172\1\uffff\1\172\1\uffff\2\172\1\uffff\12\172\1\uffff\3\172\1\uffff\4\172\1\uffff\4\172\1\uffff\3\172\3\uffff\4\172\1\uffff\2\172\1\uffff\5\172\2\uffff\3\172\1\uffff\3\172\1\uffff"; + static final String DFA22_acceptS = + "\23\uffff\1\34\1\35\2\uffff\1\42\1\43\1\44\1\45\1\uffff\1\51\1\52\3\uffff\1\61\1\62\1\uffff\1\64\5\uffff\1\102\2\uffff\1\104\1\uffff\1\105\1\uffff\1\111\1\112\2\uffff\1\75\21\uffff\1\74\10\uffff\1\34\1\35\3\uffff\1\42\1\43\1\44\1\45\1\70\1\50\1\51\1\52\1\uffff\1\56\1\54\1\67\1\57\1\60\1\65\1\61\1\62\1\66\1\63\1\64\3\uffff\1\101\1\100\2\uffff\1\76\2\uffff\1\106\1\102\1\uffff\1\103\1\104\1\105\1\107\1\110\1\111\37\uffff\1\53\1\55\4\uffff\1\76\1\uffff\1\77\7\uffff\1\41\11\uffff\1\46\1\uffff\1\25\5\uffff\1\26\12\uffff\1\77\17\uffff\1\15\27\uffff\1\3\4\uffff\1\10\1\30\2\uffff\1\14\3\uffff\1\24\5\uffff\1\40\1\37\1\71\1\uffff\1\73\22\uffff\1\32\1\33\1\36\1\72\13\uffff\1\11\1\uffff\1\21\1\uffff\1\23\1\uffff\1\31\2\uffff\1\47\12\uffff\1\27\3\uffff\1\16\4\uffff\1\12\4\uffff\1\6\3\uffff\1\7\1\4\1\5\4\uffff\1\17\2\uffff\1\22\5\uffff\1\2\1\20\3\uffff\1\1\3\uffff\1\13"; + static final String DFA22_specialS = + "\1\0\47\uffff\1\4\1\3\104\uffff\1\7\1\2\1\uffff\1\10\1\6\55\uffff\1\1\1\uffff\1\5\u00c6\uffff}>"; + static final String[] DFA22_transitionS = { + "\11\62\2\61\2\62\1\61\22\62\1\61\1\43\1\50\1\62\1\45\1\55\1\41\1\51\1\27\1\31\1\35\1\54\1\30\1\54\1\32\1\60\1\52\11\53\1\33\1\62\1\36\1\37\1\34\1\44\1\62\2\46\1\15\2\46\1\25\6\46\1\26\5\46\1\13\1\22\1\46\1\20\1\14\3\46\1\23\1\62\1\24\1\56\1\57\1\62\1\3\1\47\1\4\1\1\1\47\1\2\1\47\1\5\3\47\1\6\1\21\1\10\1\47\1\11\1\47\1\17\1\16\1\7\1\12\5\47\1\62\1\42\1\62\1\40\uff81\62", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\64\3\66\1\63\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\67\5\66\1\70\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\72\4\66\1\71\2\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\73\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\30\66\1\74\1\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\75\3\66\1\76\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\5\66\1\101\1\66\1\77\20\66\1\100\1\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\102\11\66\1\103\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\13\66\1\104\16\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\105\14\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\1\106\31\110", + "\12\110\7\uffff\1\111\31\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\16\110\1\112\13\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\113\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\114\25\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\10\110\1\115\21\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\116\25\66", + "\12\110\7\uffff\21\110\1\117\10\110\4\uffff\1\110\1\uffff\32\110", + "", + "", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\10\110\1\122\5\110\1\123\13\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\16\110\1\124\13\110", + "", + "", + "", + "", + "\1\131", + "", + "", + "\1\135\100\uffff\1\136", + "\1\137", + "\1\142\125\uffff\1\141", + "", + "", + "\1\146", + "", + "\1\154\74\uffff\5\155\1\152\5\155\1\153\7\155\1\151\6\155", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\42\157\1\160\71\157\1\156\uffa3\157", + "\47\162\1\163\64\162\1\161\uffa3\162", + "", + "\12\165", + "\1\166\1\uffff\1\166\2\uffff\12\166", + "", + "\32\170\4\uffff\1\170\1\uffff\32\170", + "", + "\1\171\4\uffff\1\172", + "", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\174\7\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\176\2\66\1\175\24\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\u0080\1\uffff\15\66\1\177\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\5\66\1\u0081\24\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u0082\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u0083\7\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u0084\3\66\1\u0085\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\17\66\1\u0086\12\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u0087\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u0088\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u0089\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\17\66\1\u008a\12\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\5\66\1\u008b\24\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\6\66\1\u008c\23\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u008d\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u008e\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\12\66\1\u008f\17\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\23\110\1\u0090\6\110", + "", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\21\110\1\u0091\10\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\24\110\1\u0092\5\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u0093\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u0094\7\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\21\110\1\u0095\10\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u0096\15\66", + "\12\110\7\uffff\30\110\1\u0097\1\110\4\uffff\1\110\1\uffff\32\110", + "", + "", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\15\110\1\u0098\14\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\24\110\1\u0099\5\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\3\110\1\u009a\26\110", + "", + "", + "", + "", + "", + "", + "", + "", + "\1\u009b", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\1\u009d", + "\1\u009e", + "\1\u009f", + "", + "", + "\42\163\1\u00a0\71\163\1\u00a0\uffa3\163", + "\42\157\1\160\71\157\1\156\uffa3\157", + "", + "\47\163\1\u00a2\64\163\1\u00a2\uffa3\163", + "\47\162\1\u00a3\64\162\1\161\uffa3\162", + "", + "", + "\12\165", + "", + "", + "", + "", + "", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u00a4\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u00a5\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\13\66\1\u00a6\16\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u00a7\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\3\66\1\u00a8\1\66\1\u00a9\11\66\1\u00aa\12\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00ac\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\24\66\1\u00ad\5\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\11\66\1\u00ae\20\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00af\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00b0\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u00b1\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u00b2\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00b3\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u00b4\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u00b6\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u00b8\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u00b9\14\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\10\110\1\u00ba\21\110", + "\12\110\7\uffff\15\110\1\u00bb\14\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\13\110\1\u00bc\16\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00be\13\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\23\110\1\u00bf\6\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00c0\13\66", + "\12\110\7\uffff\10\110\1\u00c1\21\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\10\110\1\u00c2\21\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\15\110\1\u00c3\14\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\4\110\1\u00c4\25\110", + "", + "", + "\1\u00c5", + "\1\u00c6", + "\1\u00c7", + "\42\157\1\160\71\157\1\156\uffa3\157", + "", + "\47\162\1\u00a3\64\162\1\161\uffa3\162", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u00c9\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u00ca\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u00cb\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u00cc\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00cd\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\24\66\1\u00ce\5\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u00cf\10\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u00d0\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u00d1\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u00d2\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\13\66\1\u00d3\16\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u00d4\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u00d5\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u00d6\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u00d7\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u00d9\6\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u00da\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u00db\13\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\22\110\1\u00dc\7\110", + "\12\110\7\uffff\10\110\1\u00dd\21\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\3\110\1\u00de\26\110", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\24\66\1\u00df\5\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\24\110\1\u00e0\5\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u00e1\10\66", + "\12\110\7\uffff\15\110\1\u00e2\14\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\23\110\1\u00e3\6\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\3\110\1\u00e4\26\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\13\110\1\u00e5\16\110", + "\1\u00e6", + "\1\u00e7", + "\1\u00e8", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u00e9\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u00ea\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u00eb\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u00ec\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u00ed\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u00ee\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u00ef\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\17\66\1\u00f1\12\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u00f2\27\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\13\66\1\u00f3\16\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\7\66\1\u00f4\22\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\1\u00f6\6\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u00f7\25\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u00f8\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\26\66\1\u00fa\3\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\5\110\1\u00fb\24\110", + "\12\110\7\uffff\15\110\1\u00fc\14\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u00fe\10\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\1\u00ff\31\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\30\66\1\u0100\1\66", + "\12\110\7\uffff\6\110\1\u0101\23\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\4\110\1\u0102\25\110", + "\1\u0103\16\uffff\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\155\7\uffff\32\155\4\uffff\1\155\1\uffff\32\155", + "\1\u0106", + "\12\155\7\uffff\32\155\4\uffff\1\155\1\uffff\32\155", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u0108\27\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u0109\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u010a\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\u010b\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u010c\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u010d\27\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\3\66\1\u010e\26\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u010f\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u0110\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u0111\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u0112\25\66", + "", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u0113\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\3\66\1\u0114\26\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u0115\14\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\10\110\1\u0116\21\110", + "\12\110\7\uffff\6\110\1\u0117\23\110\4\uffff\1\110\1\uffff\32\110", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u0118\27\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\13\110\1\u0119\16\110", + "\1\u011a\1\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "", + "", + "", + "\12\155\7\uffff\32\155\4\uffff\1\155\1\uffff\32\155", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u011e\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u011f\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\u0120\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\3\66\1\u0121\26\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u0122\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u0123\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u0124\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u0125\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\24\66\1\u0126\5\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u0127\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u0128\7\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\u012a\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\1\u012c\31\110", + "\1\u012d\16\uffff\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u012e\25\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "", + "", + "", + "", + "\12\66\7\uffff\32\66\4\uffff\1\u0130\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u0131\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u0133\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u0134\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u0135\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u0136\27\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u0137\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u0138\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\30\66\1\u0139\1\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u013a\21\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u013b\27\66", + "", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\1\110\1\u013c\30\110", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\3\66\1\u013e\26\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u013f\14\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u0140\15\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u0142\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u0143\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u0144\14\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u0145\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u0147\7\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u0148\13\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\13\110\1\u0149\16\110", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\16\66\1\u014a\13\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u014c\31\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u014d\7\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u014e\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u0152\14\66", + "\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\4\110\1\u0153\25\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\14\66\1\u0154\15\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u0155\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u0157\25\66", + "", + "", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\11\66\1\u0158\20\66", + "\1\u0159\16\uffff\12\110\7\uffff\32\110\4\uffff\1\110\1\uffff\32\110", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\1\u015a\31\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u015b\14\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\22\66\1\u015c\7\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u015d\25\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\10\66\1\u015e\21\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\2\66\1\u0161\27\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\15\66\1\u0162\14\66", + "", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\23\66\1\u0163\6\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\24\66\1\u0165\5\66", + "", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\21\66\1\u0166\10\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u0167\25\66", + "\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66", + "" + }; + + static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS); + static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS); + static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS); + static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS); + static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS); + static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS); + static final short[][] DFA22_transition; + + static { + int numStates = DFA22_transitionS.length; + DFA22_transition = new short[numStates][]; + for (int i=0; i') ) {s = 28;} + + else if ( (LA22_0=='*') ) {s = 29;} + + else if ( (LA22_0=='<') ) {s = 30;} + + else if ( (LA22_0=='=') ) {s = 31;} + + else if ( (LA22_0=='~') ) {s = 32;} + + else if ( (LA22_0=='&') ) {s = 33;} + + else if ( (LA22_0=='|') ) {s = 34;} + + else if ( (LA22_0=='!') ) {s = 35;} + + else if ( (LA22_0=='?') ) {s = 36;} + + else if ( (LA22_0=='$') ) {s = 37;} + + else if ( ((LA22_0>='A' && LA22_0<='B')||(LA22_0>='D' && LA22_0<='E')||(LA22_0>='G' && LA22_0<='L')||(LA22_0>='N' && LA22_0<='R')||LA22_0=='U'||(LA22_0>='X' && LA22_0<='Z')) ) {s = 38;} + + else if ( (LA22_0=='b'||LA22_0=='e'||LA22_0=='g'||(LA22_0>='i' && LA22_0<='k')||LA22_0=='o'||LA22_0=='q'||(LA22_0>='v' && LA22_0<='z')) ) {s = 39;} + + else if ( (LA22_0=='\"') ) {s = 40;} + + else if ( (LA22_0=='\'') ) {s = 41;} + + else if ( (LA22_0=='0') ) {s = 42;} + + else if ( ((LA22_0>='1' && LA22_0<='9')) ) {s = 43;} + + else if ( (LA22_0=='+'||LA22_0=='-') ) {s = 44;} + + else if ( (LA22_0=='%') ) {s = 45;} + + else if ( (LA22_0=='^') ) {s = 46;} + + else if ( (LA22_0=='_') ) {s = 47;} + + else if ( (LA22_0=='/') ) {s = 48;} + + else if ( ((LA22_0>='\t' && LA22_0<='\n')||LA22_0=='\r'||LA22_0==' ') ) {s = 49;} + + else if ( ((LA22_0>='\u0000' && LA22_0<='\b')||(LA22_0>='\u000B' && LA22_0<='\f')||(LA22_0>='\u000E' && LA22_0<='\u001F')||LA22_0=='#'||LA22_0==';'||LA22_0=='@'||LA22_0=='\\'||LA22_0=='`'||LA22_0=='{'||LA22_0=='}'||(LA22_0>='\u007F' && LA22_0<='\uFFFF')) ) {s = 50;} + + if ( s>=0 ) return s; + break; + case 1 : + int LA22_160 = input.LA(1); + + s = -1; + if ( (LA22_160=='\"') ) {s = 112;} + + else if ( (LA22_160=='\\') ) {s = 110;} + + else if ( ((LA22_160>='\u0000' && LA22_160<='!')||(LA22_160>='#' && LA22_160<='[')||(LA22_160>=']' && LA22_160<='\uFFFF')) ) {s = 111;} + + if ( s>=0 ) return s; + break; + case 2 : + int LA22_111 = input.LA(1); + + s = -1; + if ( (LA22_111=='\"') ) {s = 112;} + + else if ( (LA22_111=='\\') ) {s = 110;} + + else if ( ((LA22_111>='\u0000' && LA22_111<='!')||(LA22_111>='#' && LA22_111<='[')||(LA22_111>=']' && LA22_111<='\uFFFF')) ) {s = 111;} + + if ( s>=0 ) return s; + break; + case 3 : + int LA22_41 = input.LA(1); + + s = -1; + if ( (LA22_41=='\\') ) {s = 113;} + + else if ( ((LA22_41>='\u0000' && LA22_41<='&')||(LA22_41>='(' && LA22_41<='[')||(LA22_41>=']' && LA22_41<='\uFFFF')) ) {s = 114;} + + else if ( (LA22_41=='\'') ) {s = 115;} + + else s = 50; + + if ( s>=0 ) return s; + break; + case 4 : + int LA22_40 = input.LA(1); + + s = -1; + if ( (LA22_40=='\\') ) {s = 110;} + + else if ( ((LA22_40>='\u0000' && LA22_40<='!')||(LA22_40>='#' && LA22_40<='[')||(LA22_40>=']' && LA22_40<='\uFFFF')) ) {s = 111;} + + else if ( (LA22_40=='\"') ) {s = 112;} + + else s = 50; + + if ( s>=0 ) return s; + break; + case 5 : + int LA22_162 = input.LA(1); + + s = -1; + if ( (LA22_162=='\'') ) {s = 163;} + + else if ( (LA22_162=='\\') ) {s = 113;} + + else if ( ((LA22_162>='\u0000' && LA22_162<='&')||(LA22_162>='(' && LA22_162<='[')||(LA22_162>=']' && LA22_162<='\uFFFF')) ) {s = 114;} + + if ( s>=0 ) return s; + break; + case 6 : + int LA22_114 = input.LA(1); + + s = -1; + if ( (LA22_114=='\'') ) {s = 163;} + + else if ( (LA22_114=='\\') ) {s = 113;} + + else if ( ((LA22_114>='\u0000' && LA22_114<='&')||(LA22_114>='(' && LA22_114<='[')||(LA22_114>=']' && LA22_114<='\uFFFF')) ) {s = 114;} + + if ( s>=0 ) return s; + break; + case 7 : + int LA22_110 = input.LA(1); + + s = -1; + if ( (LA22_110=='\"'||LA22_110=='\\') ) {s = 160;} + + else if ( ((LA22_110>='\u0000' && LA22_110<='!')||(LA22_110>='#' && LA22_110<='[')||(LA22_110>=']' && LA22_110<='\uFFFF')) ) {s = 115;} + + if ( s>=0 ) return s; + break; + case 8 : + int LA22_113 = input.LA(1); + + s = -1; + if ( (LA22_113=='\''||LA22_113=='\\') ) {s = 162;} + + else if ( ((LA22_113>='\u0000' && LA22_113<='&')||(LA22_113>='(' && LA22_113<='[')||(LA22_113>=']' && LA22_113<='\uFFFF')) ) {s = 115;} + + if ( s>=0 ) return s; + break; + } + NoViableAltException nvae = + new NoViableAltException(getDescription(), 22, _s, input); + error(nvae); + throw nvae; + } + } + + +} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguageParser.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguageParser.java new file mode 100644 index 000000000..d5378c6f4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src-gen/ca/mcgill/ecse/dslreasoner/ide/contentassist/antlr/internal/InternalVampireLanguageParser.java @@ -0,0 +1,21219 @@ +package ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal; + +import java.io.InputStream; +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; + + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalVampireLanguageParser extends AbstractInternalContentAssistParser { + public static final String[] tokenNames = new String[] { + "", "", "", "", "RULE_LOWER_WORD_ID", "RULE_SIGNED_LITERAL", "RULE_SINGLE_QUOTE", "RULE_DOLLAR_ID", "RULE_DOUBLE_DOLLAR_ID", "RULE_SINGLE_COMMENT", "RULE_LITERAL", "RULE_UPPER_WORD_ID", "RULE_DOUBLE_QUOTE", "RULE_ALPHA_NUMERIC", "RULE_SIGN", "RULE_INT", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'distinct_domain'", "'finite_domain'", "'axiom'", "'conjecture'", "'hypothesis'", "'definition'", "'assumption'", "'lemma'", "'theorem'", "'corollary'", "'negated_conjecture'", "'plain'", "'type'", "'fi_domain'", "'fi_functors'", "'fi_predicates'", "'unknown'", "'Satisfiable!'", "'WARNING!'", "'Could'", "'not'", "'set'", "'resource'", "'limit:'", "'Virtual'", "'memory.'", "'TRYING'", "'['", "']'", "'Finite'", "'Model'", "'Found!'", "'fof'", "'('", "','", "')'", "'.'", "'tff'", "'declare_'", "':'", "'>'", "'*'", "'<=>'", "'=>'", "'<='", "'<~>'", "'~|'", "'~&'", "'&'", "'|'", "'!'", "'?'", "'~'", "'!='", "'='", "':='", "'$true'", "'$false'", "'$less'" + }; + public static final int T__50=50; + public static final int RULE_SIGN=14; + public static final int T__59=59; + public static final int RULE_SIGNED_LITERAL=5; + public static final int T__55=55; + public static final int T__56=56; + public static final int T__57=57; + public static final int T__58=58; + public static final int T__51=51; + public static final int RULE_DOUBLE_QUOTE=12; + public static final int T__52=52; + public static final int RULE_LITERAL=10; + public static final int T__53=53; + public static final int T__54=54; + public static final int T__60=60; + public static final int T__61=61; + public static final int RULE_ID=16; + public static final int RULE_SINGLE_QUOTE=6; + public static final int RULE_SINGLE_COMMENT=9; + public static final int T__26=26; + public static final int T__27=27; + public static final int T__28=28; + public static final int RULE_INT=15; + public static final int T__29=29; + public static final int T__22=22; + public static final int T__66=66; + public static final int RULE_ML_COMMENT=18; + public static final int T__23=23; + public static final int T__67=67; + public static final int T__24=24; + public static final int T__68=68; + public static final int T__25=25; + public static final int T__69=69; + public static final int T__62=62; + public static final int T__63=63; + public static final int T__64=64; + public static final int T__65=65; + public static final int T__70=70; + public static final int T__71=71; + public static final int T__72=72; + public static final int RULE_LOWER_WORD_ID=4; + public static final int RULE_STRING=17; + public static final int RULE_SL_COMMENT=19; + public static final int T__37=37; + public static final int T__38=38; + public static final int T__39=39; + public static final int T__33=33; + public static final int T__77=77; + public static final int T__34=34; + public static final int T__78=78; + public static final int T__35=35; + public static final int T__79=79; + public static final int T__36=36; + public static final int T__73=73; + public static final int EOF=-1; + public static final int T__30=30; + public static final int T__74=74; + public static final int T__31=31; + public static final int T__75=75; + public static final int T__32=32; + public static final int T__76=76; + public static final int T__80=80; + public static final int RULE_UPPER_WORD_ID=11; + public static final int RULE_WS=20; + public static final int RULE_DOLLAR_ID=7; + public static final int RULE_ALPHA_NUMERIC=13; + public static final int RULE_ANY_OTHER=21; + public static final int RULE_DOUBLE_DOLLAR_ID=8; + public static final int T__48=48; + public static final int T__49=49; + public static final int T__44=44; + public static final int T__45=45; + public static final int T__46=46; + public static final int T__47=47; + public static final int T__40=40; + public static final int T__41=41; + public static final int T__42=42; + public static final int T__43=43; + + // delegates + // delegators + + + public InternalVampireLanguageParser(TokenStream input) { + this(input, new RecognizerSharedState()); + } + public InternalVampireLanguageParser(TokenStream input, RecognizerSharedState state) { + super(input, state); + + } + + + public String[] getTokenNames() { return InternalVampireLanguageParser.tokenNames; } + public String getGrammarFileName() { return "InternalVampireLanguage.g"; } + + + private VampireLanguageGrammarAccess grammarAccess; + + public void setGrammarAccess(VampireLanguageGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + @Override + protected Grammar getGrammar() { + return grammarAccess.getGrammar(); + } + + @Override + protected String getValueForTokenName(String tokenName) { + return tokenName; + } + + + + // $ANTLR start "entryRuleVampireModel" + // InternalVampireLanguage.g:53:1: entryRuleVampireModel : ruleVampireModel EOF ; + public final void entryRuleVampireModel() throws RecognitionException { + try { + // InternalVampireLanguage.g:54:1: ( ruleVampireModel EOF ) + // InternalVampireLanguage.g:55:1: ruleVampireModel EOF + { + before(grammarAccess.getVampireModelRule()); + pushFollow(FOLLOW_1); + ruleVampireModel(); + + state._fsp--; + + after(grammarAccess.getVampireModelRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVampireModel" + + + // $ANTLR start "ruleVampireModel" + // InternalVampireLanguage.g:62:1: ruleVampireModel : ( ( rule__VampireModel__Alternatives )* ) ; + public final void ruleVampireModel() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:66:2: ( ( ( rule__VampireModel__Alternatives )* ) ) + // InternalVampireLanguage.g:67:2: ( ( rule__VampireModel__Alternatives )* ) + { + // InternalVampireLanguage.g:67:2: ( ( rule__VampireModel__Alternatives )* ) + // InternalVampireLanguage.g:68:3: ( rule__VampireModel__Alternatives )* + { + before(grammarAccess.getVampireModelAccess().getAlternatives()); + // InternalVampireLanguage.g:69:3: ( rule__VampireModel__Alternatives )* + loop1: + do { + int alt1=2; + int LA1_0 = input.LA(1); + + if ( (LA1_0==RULE_SINGLE_COMMENT||(LA1_0>=39 && LA1_0<=40)||LA1_0==48||LA1_0==51||LA1_0==54||LA1_0==59) ) { + alt1=1; + } + + + switch (alt1) { + case 1 : + // InternalVampireLanguage.g:69:4: rule__VampireModel__Alternatives + { + pushFollow(FOLLOW_3); + rule__VampireModel__Alternatives(); + + state._fsp--; + + + } + break; + + default : + break loop1; + } + } while (true); + + after(grammarAccess.getVampireModelAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVampireModel" + + + // $ANTLR start "entryRuleVLSComment" + // InternalVampireLanguage.g:78:1: entryRuleVLSComment : ruleVLSComment EOF ; + public final void entryRuleVLSComment() throws RecognitionException { + try { + // InternalVampireLanguage.g:79:1: ( ruleVLSComment EOF ) + // InternalVampireLanguage.g:80:1: ruleVLSComment EOF + { + before(grammarAccess.getVLSCommentRule()); + pushFollow(FOLLOW_1); + ruleVLSComment(); + + state._fsp--; + + after(grammarAccess.getVLSCommentRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSComment" + + + // $ANTLR start "ruleVLSComment" + // InternalVampireLanguage.g:87:1: ruleVLSComment : ( ( rule__VLSComment__CommentAssignment ) ) ; + public final void ruleVLSComment() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:91:2: ( ( ( rule__VLSComment__CommentAssignment ) ) ) + // InternalVampireLanguage.g:92:2: ( ( rule__VLSComment__CommentAssignment ) ) + { + // InternalVampireLanguage.g:92:2: ( ( rule__VLSComment__CommentAssignment ) ) + // InternalVampireLanguage.g:93:3: ( rule__VLSComment__CommentAssignment ) + { + before(grammarAccess.getVLSCommentAccess().getCommentAssignment()); + // InternalVampireLanguage.g:94:3: ( rule__VLSComment__CommentAssignment ) + // InternalVampireLanguage.g:94:4: rule__VLSComment__CommentAssignment + { + pushFollow(FOLLOW_2); + rule__VLSComment__CommentAssignment(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSCommentAccess().getCommentAssignment()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSComment" + + + // $ANTLR start "entryRuleVLSConfirmations" + // InternalVampireLanguage.g:103:1: entryRuleVLSConfirmations : ruleVLSConfirmations EOF ; + public final void entryRuleVLSConfirmations() throws RecognitionException { + try { + // InternalVampireLanguage.g:104:1: ( ruleVLSConfirmations EOF ) + // InternalVampireLanguage.g:105:1: ruleVLSConfirmations EOF + { + before(grammarAccess.getVLSConfirmationsRule()); + pushFollow(FOLLOW_1); + ruleVLSConfirmations(); + + state._fsp--; + + after(grammarAccess.getVLSConfirmationsRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSConfirmations" + + + // $ANTLR start "ruleVLSConfirmations" + // InternalVampireLanguage.g:112:1: ruleVLSConfirmations : ( ( rule__VLSConfirmations__Alternatives ) ) ; + public final void ruleVLSConfirmations() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:116:2: ( ( ( rule__VLSConfirmations__Alternatives ) ) ) + // InternalVampireLanguage.g:117:2: ( ( rule__VLSConfirmations__Alternatives ) ) + { + // InternalVampireLanguage.g:117:2: ( ( rule__VLSConfirmations__Alternatives ) ) + // InternalVampireLanguage.g:118:3: ( rule__VLSConfirmations__Alternatives ) + { + before(grammarAccess.getVLSConfirmationsAccess().getAlternatives()); + // InternalVampireLanguage.g:119:3: ( rule__VLSConfirmations__Alternatives ) + // InternalVampireLanguage.g:119:4: rule__VLSConfirmations__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSConfirmationsAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSConfirmations" + + + // $ANTLR start "entryRuleVLSFofFormula" + // InternalVampireLanguage.g:128:1: entryRuleVLSFofFormula : ruleVLSFofFormula EOF ; + public final void entryRuleVLSFofFormula() throws RecognitionException { + try { + // InternalVampireLanguage.g:129:1: ( ruleVLSFofFormula EOF ) + // InternalVampireLanguage.g:130:1: ruleVLSFofFormula EOF + { + before(grammarAccess.getVLSFofFormulaRule()); + pushFollow(FOLLOW_1); + ruleVLSFofFormula(); + + state._fsp--; + + after(grammarAccess.getVLSFofFormulaRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSFofFormula" + + + // $ANTLR start "ruleVLSFofFormula" + // InternalVampireLanguage.g:137:1: ruleVLSFofFormula : ( ( rule__VLSFofFormula__Group__0 ) ) ; + public final void ruleVLSFofFormula() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:141:2: ( ( ( rule__VLSFofFormula__Group__0 ) ) ) + // InternalVampireLanguage.g:142:2: ( ( rule__VLSFofFormula__Group__0 ) ) + { + // InternalVampireLanguage.g:142:2: ( ( rule__VLSFofFormula__Group__0 ) ) + // InternalVampireLanguage.g:143:3: ( rule__VLSFofFormula__Group__0 ) + { + before(grammarAccess.getVLSFofFormulaAccess().getGroup()); + // InternalVampireLanguage.g:144:3: ( rule__VLSFofFormula__Group__0 ) + // InternalVampireLanguage.g:144:4: rule__VLSFofFormula__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofFormulaAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSFofFormula" + + + // $ANTLR start "entryRuleVLSTffFormula" + // InternalVampireLanguage.g:153:1: entryRuleVLSTffFormula : ruleVLSTffFormula EOF ; + public final void entryRuleVLSTffFormula() throws RecognitionException { + try { + // InternalVampireLanguage.g:154:1: ( ruleVLSTffFormula EOF ) + // InternalVampireLanguage.g:155:1: ruleVLSTffFormula EOF + { + before(grammarAccess.getVLSTffFormulaRule()); + pushFollow(FOLLOW_1); + ruleVLSTffFormula(); + + state._fsp--; + + after(grammarAccess.getVLSTffFormulaRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTffFormula" + + + // $ANTLR start "ruleVLSTffFormula" + // InternalVampireLanguage.g:162:1: ruleVLSTffFormula : ( ( rule__VLSTffFormula__Group__0 ) ) ; + public final void ruleVLSTffFormula() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:166:2: ( ( ( rule__VLSTffFormula__Group__0 ) ) ) + // InternalVampireLanguage.g:167:2: ( ( rule__VLSTffFormula__Group__0 ) ) + { + // InternalVampireLanguage.g:167:2: ( ( rule__VLSTffFormula__Group__0 ) ) + // InternalVampireLanguage.g:168:3: ( rule__VLSTffFormula__Group__0 ) + { + before(grammarAccess.getVLSTffFormulaAccess().getGroup()); + // InternalVampireLanguage.g:169:3: ( rule__VLSTffFormula__Group__0 ) + // InternalVampireLanguage.g:169:4: rule__VLSTffFormula__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffFormulaAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTffFormula" + + + // $ANTLR start "entryRuleVLSTffName" + // InternalVampireLanguage.g:178:1: entryRuleVLSTffName : ruleVLSTffName EOF ; + public final void entryRuleVLSTffName() throws RecognitionException { + try { + // InternalVampireLanguage.g:179:1: ( ruleVLSTffName EOF ) + // InternalVampireLanguage.g:180:1: ruleVLSTffName EOF + { + before(grammarAccess.getVLSTffNameRule()); + pushFollow(FOLLOW_1); + ruleVLSTffName(); + + state._fsp--; + + after(grammarAccess.getVLSTffNameRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTffName" + + + // $ANTLR start "ruleVLSTffName" + // InternalVampireLanguage.g:187:1: ruleVLSTffName : ( ( rule__VLSTffName__Alternatives ) ) ; + public final void ruleVLSTffName() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:191:2: ( ( ( rule__VLSTffName__Alternatives ) ) ) + // InternalVampireLanguage.g:192:2: ( ( rule__VLSTffName__Alternatives ) ) + { + // InternalVampireLanguage.g:192:2: ( ( rule__VLSTffName__Alternatives ) ) + // InternalVampireLanguage.g:193:3: ( rule__VLSTffName__Alternatives ) + { + before(grammarAccess.getVLSTffNameAccess().getAlternatives()); + // InternalVampireLanguage.g:194:3: ( rule__VLSTffName__Alternatives ) + // InternalVampireLanguage.g:194:4: rule__VLSTffName__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSTffName__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffNameAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTffName" + + + // $ANTLR start "entryRuleVLSTffDistinct" + // InternalVampireLanguage.g:203:1: entryRuleVLSTffDistinct : ruleVLSTffDistinct EOF ; + public final void entryRuleVLSTffDistinct() throws RecognitionException { + try { + // InternalVampireLanguage.g:204:1: ( ruleVLSTffDistinct EOF ) + // InternalVampireLanguage.g:205:1: ruleVLSTffDistinct EOF + { + before(grammarAccess.getVLSTffDistinctRule()); + pushFollow(FOLLOW_1); + ruleVLSTffDistinct(); + + state._fsp--; + + after(grammarAccess.getVLSTffDistinctRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTffDistinct" + + + // $ANTLR start "ruleVLSTffDistinct" + // InternalVampireLanguage.g:212:1: ruleVLSTffDistinct : ( 'distinct_domain' ) ; + public final void ruleVLSTffDistinct() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:216:2: ( ( 'distinct_domain' ) ) + // InternalVampireLanguage.g:217:2: ( 'distinct_domain' ) + { + // InternalVampireLanguage.g:217:2: ( 'distinct_domain' ) + // InternalVampireLanguage.g:218:3: 'distinct_domain' + { + before(grammarAccess.getVLSTffDistinctAccess().getDistinct_domainKeyword()); + match(input,22,FOLLOW_2); + after(grammarAccess.getVLSTffDistinctAccess().getDistinct_domainKeyword()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTffDistinct" + + + // $ANTLR start "entryRuleVLSTffFinite" + // InternalVampireLanguage.g:228:1: entryRuleVLSTffFinite : ruleVLSTffFinite EOF ; + public final void entryRuleVLSTffFinite() throws RecognitionException { + try { + // InternalVampireLanguage.g:229:1: ( ruleVLSTffFinite EOF ) + // InternalVampireLanguage.g:230:1: ruleVLSTffFinite EOF + { + before(grammarAccess.getVLSTffFiniteRule()); + pushFollow(FOLLOW_1); + ruleVLSTffFinite(); + + state._fsp--; + + after(grammarAccess.getVLSTffFiniteRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTffFinite" + + + // $ANTLR start "ruleVLSTffFinite" + // InternalVampireLanguage.g:237:1: ruleVLSTffFinite : ( 'finite_domain' ) ; + public final void ruleVLSTffFinite() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:241:2: ( ( 'finite_domain' ) ) + // InternalVampireLanguage.g:242:2: ( 'finite_domain' ) + { + // InternalVampireLanguage.g:242:2: ( 'finite_domain' ) + // InternalVampireLanguage.g:243:3: 'finite_domain' + { + before(grammarAccess.getVLSTffFiniteAccess().getFinite_domainKeyword()); + match(input,23,FOLLOW_2); + after(grammarAccess.getVLSTffFiniteAccess().getFinite_domainKeyword()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTffFinite" + + + // $ANTLR start "entryRuleVLSTffDeclPred" + // InternalVampireLanguage.g:253:1: entryRuleVLSTffDeclPred : ruleVLSTffDeclPred EOF ; + public final void entryRuleVLSTffDeclPred() throws RecognitionException { + try { + // InternalVampireLanguage.g:254:1: ( ruleVLSTffDeclPred EOF ) + // InternalVampireLanguage.g:255:1: ruleVLSTffDeclPred EOF + { + before(grammarAccess.getVLSTffDeclPredRule()); + pushFollow(FOLLOW_1); + ruleVLSTffDeclPred(); + + state._fsp--; + + after(grammarAccess.getVLSTffDeclPredRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTffDeclPred" + + + // $ANTLR start "ruleVLSTffDeclPred" + // InternalVampireLanguage.g:262:1: ruleVLSTffDeclPred : ( ( rule__VLSTffDeclPred__Alternatives ) ) ; + public final void ruleVLSTffDeclPred() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:266:2: ( ( ( rule__VLSTffDeclPred__Alternatives ) ) ) + // InternalVampireLanguage.g:267:2: ( ( rule__VLSTffDeclPred__Alternatives ) ) + { + // InternalVampireLanguage.g:267:2: ( ( rule__VLSTffDeclPred__Alternatives ) ) + // InternalVampireLanguage.g:268:3: ( rule__VLSTffDeclPred__Alternatives ) + { + before(grammarAccess.getVLSTffDeclPredAccess().getAlternatives()); + // InternalVampireLanguage.g:269:3: ( rule__VLSTffDeclPred__Alternatives ) + // InternalVampireLanguage.g:269:4: rule__VLSTffDeclPred__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSTffDeclPred__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffDeclPredAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTffDeclPred" + + + // $ANTLR start "entryRuleVLSRole" + // InternalVampireLanguage.g:278:1: entryRuleVLSRole : ruleVLSRole EOF ; + public final void entryRuleVLSRole() throws RecognitionException { + try { + // InternalVampireLanguage.g:279:1: ( ruleVLSRole EOF ) + // InternalVampireLanguage.g:280:1: ruleVLSRole EOF + { + before(grammarAccess.getVLSRoleRule()); + pushFollow(FOLLOW_1); + ruleVLSRole(); + + state._fsp--; + + after(grammarAccess.getVLSRoleRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSRole" + + + // $ANTLR start "ruleVLSRole" + // InternalVampireLanguage.g:287:1: ruleVLSRole : ( ( rule__VLSRole__Alternatives ) ) ; + public final void ruleVLSRole() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:291:2: ( ( ( rule__VLSRole__Alternatives ) ) ) + // InternalVampireLanguage.g:292:2: ( ( rule__VLSRole__Alternatives ) ) + { + // InternalVampireLanguage.g:292:2: ( ( rule__VLSRole__Alternatives ) ) + // InternalVampireLanguage.g:293:3: ( rule__VLSRole__Alternatives ) + { + before(grammarAccess.getVLSRoleAccess().getAlternatives()); + // InternalVampireLanguage.g:294:3: ( rule__VLSRole__Alternatives ) + // InternalVampireLanguage.g:294:4: rule__VLSRole__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSRole__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSRoleAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSRole" + + + // $ANTLR start "entryRuleVLSAnnotation" + // InternalVampireLanguage.g:303:1: entryRuleVLSAnnotation : ruleVLSAnnotation EOF ; + public final void entryRuleVLSAnnotation() throws RecognitionException { + try { + // InternalVampireLanguage.g:304:1: ( ruleVLSAnnotation EOF ) + // InternalVampireLanguage.g:305:1: ruleVLSAnnotation EOF + { + before(grammarAccess.getVLSAnnotationRule()); + pushFollow(FOLLOW_1); + ruleVLSAnnotation(); + + state._fsp--; + + after(grammarAccess.getVLSAnnotationRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSAnnotation" + + + // $ANTLR start "ruleVLSAnnotation" + // InternalVampireLanguage.g:312:1: ruleVLSAnnotation : ( ( rule__VLSAnnotation__Group__0 ) ) ; + public final void ruleVLSAnnotation() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:316:2: ( ( ( rule__VLSAnnotation__Group__0 ) ) ) + // InternalVampireLanguage.g:317:2: ( ( rule__VLSAnnotation__Group__0 ) ) + { + // InternalVampireLanguage.g:317:2: ( ( rule__VLSAnnotation__Group__0 ) ) + // InternalVampireLanguage.g:318:3: ( rule__VLSAnnotation__Group__0 ) + { + before(grammarAccess.getVLSAnnotationAccess().getGroup()); + // InternalVampireLanguage.g:319:3: ( rule__VLSAnnotation__Group__0 ) + // InternalVampireLanguage.g:319:4: rule__VLSAnnotation__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAnnotationAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSAnnotation" + + + // $ANTLR start "entryRuleVLSAnnotationTerms" + // InternalVampireLanguage.g:328:1: entryRuleVLSAnnotationTerms : ruleVLSAnnotationTerms EOF ; + public final void entryRuleVLSAnnotationTerms() throws RecognitionException { + try { + // InternalVampireLanguage.g:329:1: ( ruleVLSAnnotationTerms EOF ) + // InternalVampireLanguage.g:330:1: ruleVLSAnnotationTerms EOF + { + before(grammarAccess.getVLSAnnotationTermsRule()); + pushFollow(FOLLOW_1); + ruleVLSAnnotationTerms(); + + state._fsp--; + + after(grammarAccess.getVLSAnnotationTermsRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSAnnotationTerms" + + + // $ANTLR start "ruleVLSAnnotationTerms" + // InternalVampireLanguage.g:337:1: ruleVLSAnnotationTerms : ( ( rule__VLSAnnotationTerms__Group__0 ) ) ; + public final void ruleVLSAnnotationTerms() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:341:2: ( ( ( rule__VLSAnnotationTerms__Group__0 ) ) ) + // InternalVampireLanguage.g:342:2: ( ( rule__VLSAnnotationTerms__Group__0 ) ) + { + // InternalVampireLanguage.g:342:2: ( ( rule__VLSAnnotationTerms__Group__0 ) ) + // InternalVampireLanguage.g:343:3: ( rule__VLSAnnotationTerms__Group__0 ) + { + before(grammarAccess.getVLSAnnotationTermsAccess().getGroup()); + // InternalVampireLanguage.g:344:3: ( rule__VLSAnnotationTerms__Group__0 ) + // InternalVampireLanguage.g:344:4: rule__VLSAnnotationTerms__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAnnotationTermsAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSAnnotationTerms" + + + // $ANTLR start "entryRuleVLSTffTerm" + // InternalVampireLanguage.g:353:1: entryRuleVLSTffTerm : ruleVLSTffTerm EOF ; + public final void entryRuleVLSTffTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:354:1: ( ruleVLSTffTerm EOF ) + // InternalVampireLanguage.g:355:1: ruleVLSTffTerm EOF + { + before(grammarAccess.getVLSTffTermRule()); + pushFollow(FOLLOW_1); + ruleVLSTffTerm(); + + state._fsp--; + + after(grammarAccess.getVLSTffTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTffTerm" + + + // $ANTLR start "ruleVLSTffTerm" + // InternalVampireLanguage.g:362:1: ruleVLSTffTerm : ( ( rule__VLSTffTerm__Alternatives ) ) ; + public final void ruleVLSTffTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:366:2: ( ( ( rule__VLSTffTerm__Alternatives ) ) ) + // InternalVampireLanguage.g:367:2: ( ( rule__VLSTffTerm__Alternatives ) ) + { + // InternalVampireLanguage.g:367:2: ( ( rule__VLSTffTerm__Alternatives ) ) + // InternalVampireLanguage.g:368:3: ( rule__VLSTffTerm__Alternatives ) + { + before(grammarAccess.getVLSTffTermAccess().getAlternatives()); + // InternalVampireLanguage.g:369:3: ( rule__VLSTffTerm__Alternatives ) + // InternalVampireLanguage.g:369:4: rule__VLSTffTerm__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSTffTerm__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffTermAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTffTerm" + + + // $ANTLR start "entryRuleVLSCommentTerm" + // InternalVampireLanguage.g:378:1: entryRuleVLSCommentTerm : ruleVLSCommentTerm EOF ; + public final void entryRuleVLSCommentTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:379:1: ( ruleVLSCommentTerm EOF ) + // InternalVampireLanguage.g:380:1: ruleVLSCommentTerm EOF + { + before(grammarAccess.getVLSCommentTermRule()); + pushFollow(FOLLOW_1); + ruleVLSCommentTerm(); + + state._fsp--; + + after(grammarAccess.getVLSCommentTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSCommentTerm" + + + // $ANTLR start "ruleVLSCommentTerm" + // InternalVampireLanguage.g:387:1: ruleVLSCommentTerm : ( ( rule__VLSCommentTerm__CommentAssignment ) ) ; + public final void ruleVLSCommentTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:391:2: ( ( ( rule__VLSCommentTerm__CommentAssignment ) ) ) + // InternalVampireLanguage.g:392:2: ( ( rule__VLSCommentTerm__CommentAssignment ) ) + { + // InternalVampireLanguage.g:392:2: ( ( rule__VLSCommentTerm__CommentAssignment ) ) + // InternalVampireLanguage.g:393:3: ( rule__VLSCommentTerm__CommentAssignment ) + { + before(grammarAccess.getVLSCommentTermAccess().getCommentAssignment()); + // InternalVampireLanguage.g:394:3: ( rule__VLSCommentTerm__CommentAssignment ) + // InternalVampireLanguage.g:394:4: rule__VLSCommentTerm__CommentAssignment + { + pushFollow(FOLLOW_2); + rule__VLSCommentTerm__CommentAssignment(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSCommentTermAccess().getCommentAssignment()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSCommentTerm" + + + // $ANTLR start "entryRuleVLSDeclaration" + // InternalVampireLanguage.g:403:1: entryRuleVLSDeclaration : ruleVLSDeclaration EOF ; + public final void entryRuleVLSDeclaration() throws RecognitionException { + try { + // InternalVampireLanguage.g:404:1: ( ruleVLSDeclaration EOF ) + // InternalVampireLanguage.g:405:1: ruleVLSDeclaration EOF + { + before(grammarAccess.getVLSDeclarationRule()); + pushFollow(FOLLOW_1); + ruleVLSDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSDeclarationRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSDeclaration" + + + // $ANTLR start "ruleVLSDeclaration" + // InternalVampireLanguage.g:412:1: ruleVLSDeclaration : ( ( rule__VLSDeclaration__Alternatives ) ) ; + public final void ruleVLSDeclaration() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:416:2: ( ( ( rule__VLSDeclaration__Alternatives ) ) ) + // InternalVampireLanguage.g:417:2: ( ( rule__VLSDeclaration__Alternatives ) ) + { + // InternalVampireLanguage.g:417:2: ( ( rule__VLSDeclaration__Alternatives ) ) + // InternalVampireLanguage.g:418:3: ( rule__VLSDeclaration__Alternatives ) + { + before(grammarAccess.getVLSDeclarationAccess().getAlternatives()); + // InternalVampireLanguage.g:419:3: ( rule__VLSDeclaration__Alternatives ) + // InternalVampireLanguage.g:419:4: rule__VLSDeclaration__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSDeclaration__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSDeclarationAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSDeclaration" + + + // $ANTLR start "entryRuleVLSOtherDeclaration" + // InternalVampireLanguage.g:428:1: entryRuleVLSOtherDeclaration : ruleVLSOtherDeclaration EOF ; + public final void entryRuleVLSOtherDeclaration() throws RecognitionException { + try { + // InternalVampireLanguage.g:429:1: ( ruleVLSOtherDeclaration EOF ) + // InternalVampireLanguage.g:430:1: ruleVLSOtherDeclaration EOF + { + before(grammarAccess.getVLSOtherDeclarationRule()); + pushFollow(FOLLOW_1); + ruleVLSOtherDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSOtherDeclarationRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSOtherDeclaration" + + + // $ANTLR start "ruleVLSOtherDeclaration" + // InternalVampireLanguage.g:437:1: ruleVLSOtherDeclaration : ( ( rule__VLSOtherDeclaration__Group__0 ) ) ; + public final void ruleVLSOtherDeclaration() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:441:2: ( ( ( rule__VLSOtherDeclaration__Group__0 ) ) ) + // InternalVampireLanguage.g:442:2: ( ( rule__VLSOtherDeclaration__Group__0 ) ) + { + // InternalVampireLanguage.g:442:2: ( ( rule__VLSOtherDeclaration__Group__0 ) ) + // InternalVampireLanguage.g:443:3: ( rule__VLSOtherDeclaration__Group__0 ) + { + before(grammarAccess.getVLSOtherDeclarationAccess().getGroup()); + // InternalVampireLanguage.g:444:3: ( rule__VLSOtherDeclaration__Group__0 ) + // InternalVampireLanguage.g:444:4: rule__VLSOtherDeclaration__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSOtherDeclaration__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSOtherDeclarationAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSOtherDeclaration" + + + // $ANTLR start "entryRuleVLSVariableDeclaration" + // InternalVampireLanguage.g:453:1: entryRuleVLSVariableDeclaration : ruleVLSVariableDeclaration EOF ; + public final void entryRuleVLSVariableDeclaration() throws RecognitionException { + try { + // InternalVampireLanguage.g:454:1: ( ruleVLSVariableDeclaration EOF ) + // InternalVampireLanguage.g:455:1: ruleVLSVariableDeclaration EOF + { + before(grammarAccess.getVLSVariableDeclarationRule()); + pushFollow(FOLLOW_1); + ruleVLSVariableDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSVariableDeclarationRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSVariableDeclaration" + + + // $ANTLR start "ruleVLSVariableDeclaration" + // InternalVampireLanguage.g:462:1: ruleVLSVariableDeclaration : ( ( rule__VLSVariableDeclaration__Group__0 ) ) ; + public final void ruleVLSVariableDeclaration() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:466:2: ( ( ( rule__VLSVariableDeclaration__Group__0 ) ) ) + // InternalVampireLanguage.g:467:2: ( ( rule__VLSVariableDeclaration__Group__0 ) ) + { + // InternalVampireLanguage.g:467:2: ( ( rule__VLSVariableDeclaration__Group__0 ) ) + // InternalVampireLanguage.g:468:3: ( rule__VLSVariableDeclaration__Group__0 ) + { + before(grammarAccess.getVLSVariableDeclarationAccess().getGroup()); + // InternalVampireLanguage.g:469:3: ( rule__VLSVariableDeclaration__Group__0 ) + // InternalVampireLanguage.g:469:4: rule__VLSVariableDeclaration__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSVariableDeclaration__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSVariableDeclarationAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSVariableDeclaration" + + + // $ANTLR start "entryRuleVLSTypeDef" + // InternalVampireLanguage.g:478:1: entryRuleVLSTypeDef : ruleVLSTypeDef EOF ; + public final void entryRuleVLSTypeDef() throws RecognitionException { + try { + // InternalVampireLanguage.g:479:1: ( ruleVLSTypeDef EOF ) + // InternalVampireLanguage.g:480:1: ruleVLSTypeDef EOF + { + before(grammarAccess.getVLSTypeDefRule()); + pushFollow(FOLLOW_1); + ruleVLSTypeDef(); + + state._fsp--; + + after(grammarAccess.getVLSTypeDefRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTypeDef" + + + // $ANTLR start "ruleVLSTypeDef" + // InternalVampireLanguage.g:487:1: ruleVLSTypeDef : ( ( rule__VLSTypeDef__Group__0 ) ) ; + public final void ruleVLSTypeDef() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:491:2: ( ( ( rule__VLSTypeDef__Group__0 ) ) ) + // InternalVampireLanguage.g:492:2: ( ( rule__VLSTypeDef__Group__0 ) ) + { + // InternalVampireLanguage.g:492:2: ( ( rule__VLSTypeDef__Group__0 ) ) + // InternalVampireLanguage.g:493:3: ( rule__VLSTypeDef__Group__0 ) + { + before(grammarAccess.getVLSTypeDefAccess().getGroup()); + // InternalVampireLanguage.g:494:3: ( rule__VLSTypeDef__Group__0 ) + // InternalVampireLanguage.g:494:4: rule__VLSTypeDef__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSTypeDef__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTypeDefAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTypeDef" + + + // $ANTLR start "entryRuleVLSUnitaryTerm" + // InternalVampireLanguage.g:503:1: entryRuleVLSUnitaryTerm : ruleVLSUnitaryTerm EOF ; + public final void entryRuleVLSUnitaryTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:504:1: ( ruleVLSUnitaryTerm EOF ) + // InternalVampireLanguage.g:505:1: ruleVLSUnitaryTerm EOF + { + before(grammarAccess.getVLSUnitaryTermRule()); + pushFollow(FOLLOW_1); + ruleVLSUnitaryTerm(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSUnitaryTerm" + + + // $ANTLR start "ruleVLSUnitaryTerm" + // InternalVampireLanguage.g:512:1: ruleVLSUnitaryTerm : ( ( rule__VLSUnitaryTerm__Group__0 ) ) ; + public final void ruleVLSUnitaryTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:516:2: ( ( ( rule__VLSUnitaryTerm__Group__0 ) ) ) + // InternalVampireLanguage.g:517:2: ( ( rule__VLSUnitaryTerm__Group__0 ) ) + { + // InternalVampireLanguage.g:517:2: ( ( rule__VLSUnitaryTerm__Group__0 ) ) + // InternalVampireLanguage.g:518:3: ( rule__VLSUnitaryTerm__Group__0 ) + { + before(grammarAccess.getVLSUnitaryTermAccess().getGroup()); + // InternalVampireLanguage.g:519:3: ( rule__VLSUnitaryTerm__Group__0 ) + // InternalVampireLanguage.g:519:4: rule__VLSUnitaryTerm__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnitaryTermAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSUnitaryTerm" + + + // $ANTLR start "entryRuleVLSTerm" + // InternalVampireLanguage.g:528:1: entryRuleVLSTerm : ruleVLSTerm EOF ; + public final void entryRuleVLSTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:529:1: ( ruleVLSTerm EOF ) + // InternalVampireLanguage.g:530:1: ruleVLSTerm EOF + { + before(grammarAccess.getVLSTermRule()); + pushFollow(FOLLOW_1); + ruleVLSTerm(); + + state._fsp--; + + after(grammarAccess.getVLSTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSTerm" + + + // $ANTLR start "ruleVLSTerm" + // InternalVampireLanguage.g:537:1: ruleVLSTerm : ( ruleVLSBinary ) ; + public final void ruleVLSTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:541:2: ( ( ruleVLSBinary ) ) + // InternalVampireLanguage.g:542:2: ( ruleVLSBinary ) + { + // InternalVampireLanguage.g:542:2: ( ruleVLSBinary ) + // InternalVampireLanguage.g:543:3: ruleVLSBinary + { + before(grammarAccess.getVLSTermAccess().getVLSBinaryParserRuleCall()); + pushFollow(FOLLOW_2); + ruleVLSBinary(); + + state._fsp--; + + after(grammarAccess.getVLSTermAccess().getVLSBinaryParserRuleCall()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSTerm" + + + // $ANTLR start "entryRuleVLSBinary" + // InternalVampireLanguage.g:553:1: entryRuleVLSBinary : ruleVLSBinary EOF ; + public final void entryRuleVLSBinary() throws RecognitionException { + try { + // InternalVampireLanguage.g:554:1: ( ruleVLSBinary EOF ) + // InternalVampireLanguage.g:555:1: ruleVLSBinary EOF + { + before(grammarAccess.getVLSBinaryRule()); + pushFollow(FOLLOW_1); + ruleVLSBinary(); + + state._fsp--; + + after(grammarAccess.getVLSBinaryRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSBinary" + + + // $ANTLR start "ruleVLSBinary" + // InternalVampireLanguage.g:562:1: ruleVLSBinary : ( ( rule__VLSBinary__Group__0 ) ) ; + public final void ruleVLSBinary() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:566:2: ( ( ( rule__VLSBinary__Group__0 ) ) ) + // InternalVampireLanguage.g:567:2: ( ( rule__VLSBinary__Group__0 ) ) + { + // InternalVampireLanguage.g:567:2: ( ( rule__VLSBinary__Group__0 ) ) + // InternalVampireLanguage.g:568:3: ( rule__VLSBinary__Group__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup()); + // InternalVampireLanguage.g:569:3: ( rule__VLSBinary__Group__0 ) + // InternalVampireLanguage.g:569:4: rule__VLSBinary__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSBinary" + + + // $ANTLR start "entryRuleVLSUnitaryFormula" + // InternalVampireLanguage.g:578:1: entryRuleVLSUnitaryFormula : ruleVLSUnitaryFormula EOF ; + public final void entryRuleVLSUnitaryFormula() throws RecognitionException { + try { + // InternalVampireLanguage.g:579:1: ( ruleVLSUnitaryFormula EOF ) + // InternalVampireLanguage.g:580:1: ruleVLSUnitaryFormula EOF + { + before(grammarAccess.getVLSUnitaryFormulaRule()); + pushFollow(FOLLOW_1); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryFormulaRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSUnitaryFormula" + + + // $ANTLR start "ruleVLSUnitaryFormula" + // InternalVampireLanguage.g:587:1: ruleVLSUnitaryFormula : ( ( rule__VLSUnitaryFormula__Alternatives ) ) ; + public final void ruleVLSUnitaryFormula() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:591:2: ( ( ( rule__VLSUnitaryFormula__Alternatives ) ) ) + // InternalVampireLanguage.g:592:2: ( ( rule__VLSUnitaryFormula__Alternatives ) ) + { + // InternalVampireLanguage.g:592:2: ( ( rule__VLSUnitaryFormula__Alternatives ) ) + // InternalVampireLanguage.g:593:3: ( rule__VLSUnitaryFormula__Alternatives ) + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getAlternatives()); + // InternalVampireLanguage.g:594:3: ( rule__VLSUnitaryFormula__Alternatives ) + // InternalVampireLanguage.g:594:4: rule__VLSUnitaryFormula__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryFormula__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnitaryFormulaAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSUnitaryFormula" + + + // $ANTLR start "entryRuleVLSUniversalQuantifier" + // InternalVampireLanguage.g:603:1: entryRuleVLSUniversalQuantifier : ruleVLSUniversalQuantifier EOF ; + public final void entryRuleVLSUniversalQuantifier() throws RecognitionException { + try { + // InternalVampireLanguage.g:604:1: ( ruleVLSUniversalQuantifier EOF ) + // InternalVampireLanguage.g:605:1: ruleVLSUniversalQuantifier EOF + { + before(grammarAccess.getVLSUniversalQuantifierRule()); + pushFollow(FOLLOW_1); + ruleVLSUniversalQuantifier(); + + state._fsp--; + + after(grammarAccess.getVLSUniversalQuantifierRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSUniversalQuantifier" + + + // $ANTLR start "ruleVLSUniversalQuantifier" + // InternalVampireLanguage.g:612:1: ruleVLSUniversalQuantifier : ( ( rule__VLSUniversalQuantifier__Group__0 ) ) ; + public final void ruleVLSUniversalQuantifier() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:616:2: ( ( ( rule__VLSUniversalQuantifier__Group__0 ) ) ) + // InternalVampireLanguage.g:617:2: ( ( rule__VLSUniversalQuantifier__Group__0 ) ) + { + // InternalVampireLanguage.g:617:2: ( ( rule__VLSUniversalQuantifier__Group__0 ) ) + // InternalVampireLanguage.g:618:3: ( rule__VLSUniversalQuantifier__Group__0 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getGroup()); + // InternalVampireLanguage.g:619:3: ( rule__VLSUniversalQuantifier__Group__0 ) + // InternalVampireLanguage.g:619:4: rule__VLSUniversalQuantifier__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSUniversalQuantifier" + + + // $ANTLR start "entryRuleVLSExistentialQuantifier" + // InternalVampireLanguage.g:628:1: entryRuleVLSExistentialQuantifier : ruleVLSExistentialQuantifier EOF ; + public final void entryRuleVLSExistentialQuantifier() throws RecognitionException { + try { + // InternalVampireLanguage.g:629:1: ( ruleVLSExistentialQuantifier EOF ) + // InternalVampireLanguage.g:630:1: ruleVLSExistentialQuantifier EOF + { + before(grammarAccess.getVLSExistentialQuantifierRule()); + pushFollow(FOLLOW_1); + ruleVLSExistentialQuantifier(); + + state._fsp--; + + after(grammarAccess.getVLSExistentialQuantifierRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSExistentialQuantifier" + + + // $ANTLR start "ruleVLSExistentialQuantifier" + // InternalVampireLanguage.g:637:1: ruleVLSExistentialQuantifier : ( ( rule__VLSExistentialQuantifier__Group__0 ) ) ; + public final void ruleVLSExistentialQuantifier() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:641:2: ( ( ( rule__VLSExistentialQuantifier__Group__0 ) ) ) + // InternalVampireLanguage.g:642:2: ( ( rule__VLSExistentialQuantifier__Group__0 ) ) + { + // InternalVampireLanguage.g:642:2: ( ( rule__VLSExistentialQuantifier__Group__0 ) ) + // InternalVampireLanguage.g:643:3: ( rule__VLSExistentialQuantifier__Group__0 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getGroup()); + // InternalVampireLanguage.g:644:3: ( rule__VLSExistentialQuantifier__Group__0 ) + // InternalVampireLanguage.g:644:4: rule__VLSExistentialQuantifier__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSExistentialQuantifier" + + + // $ANTLR start "entryRuleVLSUnaryNegation" + // InternalVampireLanguage.g:653:1: entryRuleVLSUnaryNegation : ruleVLSUnaryNegation EOF ; + public final void entryRuleVLSUnaryNegation() throws RecognitionException { + try { + // InternalVampireLanguage.g:654:1: ( ruleVLSUnaryNegation EOF ) + // InternalVampireLanguage.g:655:1: ruleVLSUnaryNegation EOF + { + before(grammarAccess.getVLSUnaryNegationRule()); + pushFollow(FOLLOW_1); + ruleVLSUnaryNegation(); + + state._fsp--; + + after(grammarAccess.getVLSUnaryNegationRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSUnaryNegation" + + + // $ANTLR start "ruleVLSUnaryNegation" + // InternalVampireLanguage.g:662:1: ruleVLSUnaryNegation : ( ( rule__VLSUnaryNegation__Group__0 ) ) ; + public final void ruleVLSUnaryNegation() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:666:2: ( ( ( rule__VLSUnaryNegation__Group__0 ) ) ) + // InternalVampireLanguage.g:667:2: ( ( rule__VLSUnaryNegation__Group__0 ) ) + { + // InternalVampireLanguage.g:667:2: ( ( rule__VLSUnaryNegation__Group__0 ) ) + // InternalVampireLanguage.g:668:3: ( rule__VLSUnaryNegation__Group__0 ) + { + before(grammarAccess.getVLSUnaryNegationAccess().getGroup()); + // InternalVampireLanguage.g:669:3: ( rule__VLSUnaryNegation__Group__0 ) + // InternalVampireLanguage.g:669:4: rule__VLSUnaryNegation__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryNegation__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryNegationAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSUnaryNegation" + + + // $ANTLR start "entryRuleVLSUnaryInfix" + // InternalVampireLanguage.g:678:1: entryRuleVLSUnaryInfix : ruleVLSUnaryInfix EOF ; + public final void entryRuleVLSUnaryInfix() throws RecognitionException { + try { + // InternalVampireLanguage.g:679:1: ( ruleVLSUnaryInfix EOF ) + // InternalVampireLanguage.g:680:1: ruleVLSUnaryInfix EOF + { + before(grammarAccess.getVLSUnaryInfixRule()); + pushFollow(FOLLOW_1); + ruleVLSUnaryInfix(); + + state._fsp--; + + after(grammarAccess.getVLSUnaryInfixRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSUnaryInfix" + + + // $ANTLR start "ruleVLSUnaryInfix" + // InternalVampireLanguage.g:687:1: ruleVLSUnaryInfix : ( ( rule__VLSUnaryInfix__Group__0 ) ) ; + public final void ruleVLSUnaryInfix() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:691:2: ( ( ( rule__VLSUnaryInfix__Group__0 ) ) ) + // InternalVampireLanguage.g:692:2: ( ( rule__VLSUnaryInfix__Group__0 ) ) + { + // InternalVampireLanguage.g:692:2: ( ( rule__VLSUnaryInfix__Group__0 ) ) + // InternalVampireLanguage.g:693:3: ( rule__VLSUnaryInfix__Group__0 ) + { + before(grammarAccess.getVLSUnaryInfixAccess().getGroup()); + // InternalVampireLanguage.g:694:3: ( rule__VLSUnaryInfix__Group__0 ) + // InternalVampireLanguage.g:694:4: rule__VLSUnaryInfix__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSUnaryInfix" + + + // $ANTLR start "entryRuleVLSAtomic" + // InternalVampireLanguage.g:703:1: entryRuleVLSAtomic : ruleVLSAtomic EOF ; + public final void entryRuleVLSAtomic() throws RecognitionException { + try { + // InternalVampireLanguage.g:704:1: ( ruleVLSAtomic EOF ) + // InternalVampireLanguage.g:705:1: ruleVLSAtomic EOF + { + before(grammarAccess.getVLSAtomicRule()); + pushFollow(FOLLOW_1); + ruleVLSAtomic(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSAtomic" + + + // $ANTLR start "ruleVLSAtomic" + // InternalVampireLanguage.g:712:1: ruleVLSAtomic : ( ( rule__VLSAtomic__Alternatives ) ) ; + public final void ruleVLSAtomic() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:716:2: ( ( ( rule__VLSAtomic__Alternatives ) ) ) + // InternalVampireLanguage.g:717:2: ( ( rule__VLSAtomic__Alternatives ) ) + { + // InternalVampireLanguage.g:717:2: ( ( rule__VLSAtomic__Alternatives ) ) + // InternalVampireLanguage.g:718:3: ( rule__VLSAtomic__Alternatives ) + { + before(grammarAccess.getVLSAtomicAccess().getAlternatives()); + // InternalVampireLanguage.g:719:3: ( rule__VLSAtomic__Alternatives ) + // InternalVampireLanguage.g:719:4: rule__VLSAtomic__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSAtomic__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSAtomic" + + + // $ANTLR start "entryRuleVLSAtomicConstant" + // InternalVampireLanguage.g:728:1: entryRuleVLSAtomicConstant : ruleVLSAtomicConstant EOF ; + public final void entryRuleVLSAtomicConstant() throws RecognitionException { + try { + // InternalVampireLanguage.g:729:1: ( ruleVLSAtomicConstant EOF ) + // InternalVampireLanguage.g:730:1: ruleVLSAtomicConstant EOF + { + before(grammarAccess.getVLSAtomicConstantRule()); + pushFollow(FOLLOW_1); + ruleVLSAtomicConstant(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicConstantRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSAtomicConstant" + + + // $ANTLR start "ruleVLSAtomicConstant" + // InternalVampireLanguage.g:737:1: ruleVLSAtomicConstant : ( ( rule__VLSAtomicConstant__Alternatives ) ) ; + public final void ruleVLSAtomicConstant() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:741:2: ( ( ( rule__VLSAtomicConstant__Alternatives ) ) ) + // InternalVampireLanguage.g:742:2: ( ( rule__VLSAtomicConstant__Alternatives ) ) + { + // InternalVampireLanguage.g:742:2: ( ( rule__VLSAtomicConstant__Alternatives ) ) + // InternalVampireLanguage.g:743:3: ( rule__VLSAtomicConstant__Alternatives ) + { + before(grammarAccess.getVLSAtomicConstantAccess().getAlternatives()); + // InternalVampireLanguage.g:744:3: ( rule__VLSAtomicConstant__Alternatives ) + // InternalVampireLanguage.g:744:4: rule__VLSAtomicConstant__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicConstantAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSAtomicConstant" + + + // $ANTLR start "entryRuleVLSAtomicFunction" + // InternalVampireLanguage.g:753:1: entryRuleVLSAtomicFunction : ruleVLSAtomicFunction EOF ; + public final void entryRuleVLSAtomicFunction() throws RecognitionException { + try { + // InternalVampireLanguage.g:754:1: ( ruleVLSAtomicFunction EOF ) + // InternalVampireLanguage.g:755:1: ruleVLSAtomicFunction EOF + { + before(grammarAccess.getVLSAtomicFunctionRule()); + pushFollow(FOLLOW_1); + ruleVLSAtomicFunction(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicFunctionRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSAtomicFunction" + + + // $ANTLR start "ruleVLSAtomicFunction" + // InternalVampireLanguage.g:762:1: ruleVLSAtomicFunction : ( ( rule__VLSAtomicFunction__Alternatives ) ) ; + public final void ruleVLSAtomicFunction() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:766:2: ( ( ( rule__VLSAtomicFunction__Alternatives ) ) ) + // InternalVampireLanguage.g:767:2: ( ( rule__VLSAtomicFunction__Alternatives ) ) + { + // InternalVampireLanguage.g:767:2: ( ( rule__VLSAtomicFunction__Alternatives ) ) + // InternalVampireLanguage.g:768:3: ( rule__VLSAtomicFunction__Alternatives ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getAlternatives()); + // InternalVampireLanguage.g:769:3: ( rule__VLSAtomicFunction__Alternatives ) + // InternalVampireLanguage.g:769:4: rule__VLSAtomicFunction__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSAtomicFunction" + + + // $ANTLR start "entryRuleVLSVariable" + // InternalVampireLanguage.g:778:1: entryRuleVLSVariable : ruleVLSVariable EOF ; + public final void entryRuleVLSVariable() throws RecognitionException { + try { + // InternalVampireLanguage.g:779:1: ( ruleVLSVariable EOF ) + // InternalVampireLanguage.g:780:1: ruleVLSVariable EOF + { + before(grammarAccess.getVLSVariableRule()); + pushFollow(FOLLOW_1); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSVariableRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSVariable" + + + // $ANTLR start "ruleVLSVariable" + // InternalVampireLanguage.g:787:1: ruleVLSVariable : ( ( rule__VLSVariable__NameAssignment ) ) ; + public final void ruleVLSVariable() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:791:2: ( ( ( rule__VLSVariable__NameAssignment ) ) ) + // InternalVampireLanguage.g:792:2: ( ( rule__VLSVariable__NameAssignment ) ) + { + // InternalVampireLanguage.g:792:2: ( ( rule__VLSVariable__NameAssignment ) ) + // InternalVampireLanguage.g:793:3: ( rule__VLSVariable__NameAssignment ) + { + before(grammarAccess.getVLSVariableAccess().getNameAssignment()); + // InternalVampireLanguage.g:794:3: ( rule__VLSVariable__NameAssignment ) + // InternalVampireLanguage.g:794:4: rule__VLSVariable__NameAssignment + { + pushFollow(FOLLOW_2); + rule__VLSVariable__NameAssignment(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSVariableAccess().getNameAssignment()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSVariable" + + + // $ANTLR start "entryRuleVLSFofTerm" + // InternalVampireLanguage.g:803:1: entryRuleVLSFofTerm : ruleVLSFofTerm EOF ; + public final void entryRuleVLSFofTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:804:1: ( ruleVLSFofTerm EOF ) + // InternalVampireLanguage.g:805:1: ruleVLSFofTerm EOF + { + before(grammarAccess.getVLSFofTermRule()); + pushFollow(FOLLOW_1); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFofTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSFofTerm" + + + // $ANTLR start "ruleVLSFofTerm" + // InternalVampireLanguage.g:812:1: ruleVLSFofTerm : ( ( rule__VLSFofTerm__Alternatives ) ) ; + public final void ruleVLSFofTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:816:2: ( ( ( rule__VLSFofTerm__Alternatives ) ) ) + // InternalVampireLanguage.g:817:2: ( ( rule__VLSFofTerm__Alternatives ) ) + { + // InternalVampireLanguage.g:817:2: ( ( rule__VLSFofTerm__Alternatives ) ) + // InternalVampireLanguage.g:818:3: ( rule__VLSFofTerm__Alternatives ) + { + before(grammarAccess.getVLSFofTermAccess().getAlternatives()); + // InternalVampireLanguage.g:819:3: ( rule__VLSFofTerm__Alternatives ) + // InternalVampireLanguage.g:819:4: rule__VLSFofTerm__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSFofTerm__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofTermAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSFofTerm" + + + // $ANTLR start "entryRuleVLSFunctionAsTerm" + // InternalVampireLanguage.g:828:1: entryRuleVLSFunctionAsTerm : ruleVLSFunctionAsTerm EOF ; + public final void entryRuleVLSFunctionAsTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:829:1: ( ruleVLSFunctionAsTerm EOF ) + // InternalVampireLanguage.g:830:1: ruleVLSFunctionAsTerm EOF + { + before(grammarAccess.getVLSFunctionAsTermRule()); + pushFollow(FOLLOW_1); + ruleVLSFunctionAsTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFunctionAsTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSFunctionAsTerm" + + + // $ANTLR start "ruleVLSFunctionAsTerm" + // InternalVampireLanguage.g:837:1: ruleVLSFunctionAsTerm : ( ( rule__VLSFunctionAsTerm__Group__0 ) ) ; + public final void ruleVLSFunctionAsTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:841:2: ( ( ( rule__VLSFunctionAsTerm__Group__0 ) ) ) + // InternalVampireLanguage.g:842:2: ( ( rule__VLSFunctionAsTerm__Group__0 ) ) + { + // InternalVampireLanguage.g:842:2: ( ( rule__VLSFunctionAsTerm__Group__0 ) ) + // InternalVampireLanguage.g:843:3: ( rule__VLSFunctionAsTerm__Group__0 ) + { + before(grammarAccess.getVLSFunctionAsTermAccess().getGroup()); + // InternalVampireLanguage.g:844:3: ( rule__VLSFunctionAsTerm__Group__0 ) + // InternalVampireLanguage.g:844:4: rule__VLSFunctionAsTerm__Group__0 + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFunctionAsTermAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSFunctionAsTerm" + + + // $ANTLR start "entryRuleVLSDefinedTerm" + // InternalVampireLanguage.g:853:1: entryRuleVLSDefinedTerm : ruleVLSDefinedTerm EOF ; + public final void entryRuleVLSDefinedTerm() throws RecognitionException { + try { + // InternalVampireLanguage.g:854:1: ( ruleVLSDefinedTerm EOF ) + // InternalVampireLanguage.g:855:1: ruleVLSDefinedTerm EOF + { + before(grammarAccess.getVLSDefinedTermRule()); + pushFollow(FOLLOW_1); + ruleVLSDefinedTerm(); + + state._fsp--; + + after(grammarAccess.getVLSDefinedTermRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleVLSDefinedTerm" + + + // $ANTLR start "ruleVLSDefinedTerm" + // InternalVampireLanguage.g:862:1: ruleVLSDefinedTerm : ( ( rule__VLSDefinedTerm__Alternatives ) ) ; + public final void ruleVLSDefinedTerm() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:866:2: ( ( ( rule__VLSDefinedTerm__Alternatives ) ) ) + // InternalVampireLanguage.g:867:2: ( ( rule__VLSDefinedTerm__Alternatives ) ) + { + // InternalVampireLanguage.g:867:2: ( ( rule__VLSDefinedTerm__Alternatives ) ) + // InternalVampireLanguage.g:868:3: ( rule__VLSDefinedTerm__Alternatives ) + { + before(grammarAccess.getVLSDefinedTermAccess().getAlternatives()); + // InternalVampireLanguage.g:869:3: ( rule__VLSDefinedTerm__Alternatives ) + // InternalVampireLanguage.g:869:4: rule__VLSDefinedTerm__Alternatives + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSDefinedTermAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleVLSDefinedTerm" + + + // $ANTLR start "rule__VampireModel__Alternatives" + // InternalVampireLanguage.g:877:1: rule__VampireModel__Alternatives : ( ( ( rule__VampireModel__CommentsAssignment_0 ) ) | ( ( rule__VampireModel__ConfirmationsAssignment_1 ) ) | ( ( rule__VampireModel__FormulasAssignment_2 ) ) | ( ( rule__VampireModel__TfformulasAssignment_3 ) ) ); + public final void rule__VampireModel__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:881:1: ( ( ( rule__VampireModel__CommentsAssignment_0 ) ) | ( ( rule__VampireModel__ConfirmationsAssignment_1 ) ) | ( ( rule__VampireModel__FormulasAssignment_2 ) ) | ( ( rule__VampireModel__TfformulasAssignment_3 ) ) ) + int alt2=4; + switch ( input.LA(1) ) { + case RULE_SINGLE_COMMENT: + { + alt2=1; + } + break; + case 39: + case 40: + case 48: + case 51: + { + alt2=2; + } + break; + case 54: + { + alt2=3; + } + break; + case 59: + { + alt2=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 2, 0, input); + + throw nvae; + } + + switch (alt2) { + case 1 : + // InternalVampireLanguage.g:882:2: ( ( rule__VampireModel__CommentsAssignment_0 ) ) + { + // InternalVampireLanguage.g:882:2: ( ( rule__VampireModel__CommentsAssignment_0 ) ) + // InternalVampireLanguage.g:883:3: ( rule__VampireModel__CommentsAssignment_0 ) + { + before(grammarAccess.getVampireModelAccess().getCommentsAssignment_0()); + // InternalVampireLanguage.g:884:3: ( rule__VampireModel__CommentsAssignment_0 ) + // InternalVampireLanguage.g:884:4: rule__VampireModel__CommentsAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VampireModel__CommentsAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVampireModelAccess().getCommentsAssignment_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:888:2: ( ( rule__VampireModel__ConfirmationsAssignment_1 ) ) + { + // InternalVampireLanguage.g:888:2: ( ( rule__VampireModel__ConfirmationsAssignment_1 ) ) + // InternalVampireLanguage.g:889:3: ( rule__VampireModel__ConfirmationsAssignment_1 ) + { + before(grammarAccess.getVampireModelAccess().getConfirmationsAssignment_1()); + // InternalVampireLanguage.g:890:3: ( rule__VampireModel__ConfirmationsAssignment_1 ) + // InternalVampireLanguage.g:890:4: rule__VampireModel__ConfirmationsAssignment_1 + { + pushFollow(FOLLOW_2); + rule__VampireModel__ConfirmationsAssignment_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVampireModelAccess().getConfirmationsAssignment_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:894:2: ( ( rule__VampireModel__FormulasAssignment_2 ) ) + { + // InternalVampireLanguage.g:894:2: ( ( rule__VampireModel__FormulasAssignment_2 ) ) + // InternalVampireLanguage.g:895:3: ( rule__VampireModel__FormulasAssignment_2 ) + { + before(grammarAccess.getVampireModelAccess().getFormulasAssignment_2()); + // InternalVampireLanguage.g:896:3: ( rule__VampireModel__FormulasAssignment_2 ) + // InternalVampireLanguage.g:896:4: rule__VampireModel__FormulasAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VampireModel__FormulasAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVampireModelAccess().getFormulasAssignment_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:900:2: ( ( rule__VampireModel__TfformulasAssignment_3 ) ) + { + // InternalVampireLanguage.g:900:2: ( ( rule__VampireModel__TfformulasAssignment_3 ) ) + // InternalVampireLanguage.g:901:3: ( rule__VampireModel__TfformulasAssignment_3 ) + { + before(grammarAccess.getVampireModelAccess().getTfformulasAssignment_3()); + // InternalVampireLanguage.g:902:3: ( rule__VampireModel__TfformulasAssignment_3 ) + // InternalVampireLanguage.g:902:4: rule__VampireModel__TfformulasAssignment_3 + { + pushFollow(FOLLOW_2); + rule__VampireModel__TfformulasAssignment_3(); + + state._fsp--; + + + } + + after(grammarAccess.getVampireModelAccess().getTfformulasAssignment_3()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VampireModel__Alternatives" + + + // $ANTLR start "rule__VLSConfirmations__Alternatives" + // InternalVampireLanguage.g:910:1: rule__VLSConfirmations__Alternatives : ( ( ( rule__VLSConfirmations__Group_0__0 ) ) | ( ( rule__VLSConfirmations__Group_1__0 ) ) | ( ( rule__VLSConfirmations__Group_2__0 ) ) | ( ( rule__VLSConfirmations__Group_3__0 ) ) ); + public final void rule__VLSConfirmations__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:914:1: ( ( ( rule__VLSConfirmations__Group_0__0 ) ) | ( ( rule__VLSConfirmations__Group_1__0 ) ) | ( ( rule__VLSConfirmations__Group_2__0 ) ) | ( ( rule__VLSConfirmations__Group_3__0 ) ) ) + int alt3=4; + switch ( input.LA(1) ) { + case 39: + { + alt3=1; + } + break; + case 40: + { + alt3=2; + } + break; + case 48: + { + alt3=3; + } + break; + case 51: + { + alt3=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 3, 0, input); + + throw nvae; + } + + switch (alt3) { + case 1 : + // InternalVampireLanguage.g:915:2: ( ( rule__VLSConfirmations__Group_0__0 ) ) + { + // InternalVampireLanguage.g:915:2: ( ( rule__VLSConfirmations__Group_0__0 ) ) + // InternalVampireLanguage.g:916:3: ( rule__VLSConfirmations__Group_0__0 ) + { + before(grammarAccess.getVLSConfirmationsAccess().getGroup_0()); + // InternalVampireLanguage.g:917:3: ( rule__VLSConfirmations__Group_0__0 ) + // InternalVampireLanguage.g:917:4: rule__VLSConfirmations__Group_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSConfirmationsAccess().getGroup_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:921:2: ( ( rule__VLSConfirmations__Group_1__0 ) ) + { + // InternalVampireLanguage.g:921:2: ( ( rule__VLSConfirmations__Group_1__0 ) ) + // InternalVampireLanguage.g:922:3: ( rule__VLSConfirmations__Group_1__0 ) + { + before(grammarAccess.getVLSConfirmationsAccess().getGroup_1()); + // InternalVampireLanguage.g:923:3: ( rule__VLSConfirmations__Group_1__0 ) + // InternalVampireLanguage.g:923:4: rule__VLSConfirmations__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSConfirmationsAccess().getGroup_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:927:2: ( ( rule__VLSConfirmations__Group_2__0 ) ) + { + // InternalVampireLanguage.g:927:2: ( ( rule__VLSConfirmations__Group_2__0 ) ) + // InternalVampireLanguage.g:928:3: ( rule__VLSConfirmations__Group_2__0 ) + { + before(grammarAccess.getVLSConfirmationsAccess().getGroup_2()); + // InternalVampireLanguage.g:929:3: ( rule__VLSConfirmations__Group_2__0 ) + // InternalVampireLanguage.g:929:4: rule__VLSConfirmations__Group_2__0 + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_2__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSConfirmationsAccess().getGroup_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:933:2: ( ( rule__VLSConfirmations__Group_3__0 ) ) + { + // InternalVampireLanguage.g:933:2: ( ( rule__VLSConfirmations__Group_3__0 ) ) + // InternalVampireLanguage.g:934:3: ( rule__VLSConfirmations__Group_3__0 ) + { + before(grammarAccess.getVLSConfirmationsAccess().getGroup_3()); + // InternalVampireLanguage.g:935:3: ( rule__VLSConfirmations__Group_3__0 ) + // InternalVampireLanguage.g:935:4: rule__VLSConfirmations__Group_3__0 + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_3__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSConfirmationsAccess().getGroup_3()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Alternatives" + + + // $ANTLR start "rule__VLSFofFormula__NameAlternatives_2_0" + // InternalVampireLanguage.g:943:1: rule__VLSFofFormula__NameAlternatives_2_0 : ( ( RULE_LOWER_WORD_ID ) | ( RULE_SIGNED_LITERAL ) | ( RULE_SINGLE_QUOTE ) ); + public final void rule__VLSFofFormula__NameAlternatives_2_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:947:1: ( ( RULE_LOWER_WORD_ID ) | ( RULE_SIGNED_LITERAL ) | ( RULE_SINGLE_QUOTE ) ) + int alt4=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt4=1; + } + break; + case RULE_SIGNED_LITERAL: + { + alt4=2; + } + break; + case RULE_SINGLE_QUOTE: + { + alt4=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 4, 0, input); + + throw nvae; + } + + switch (alt4) { + case 1 : + // InternalVampireLanguage.g:948:2: ( RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:948:2: ( RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:949:3: RULE_LOWER_WORD_ID + { + before(grammarAccess.getVLSFofFormulaAccess().getNameLOWER_WORD_IDTerminalRuleCall_2_0_0()); + match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getNameLOWER_WORD_IDTerminalRuleCall_2_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:954:2: ( RULE_SIGNED_LITERAL ) + { + // InternalVampireLanguage.g:954:2: ( RULE_SIGNED_LITERAL ) + // InternalVampireLanguage.g:955:3: RULE_SIGNED_LITERAL + { + before(grammarAccess.getVLSFofFormulaAccess().getNameSIGNED_LITERALTerminalRuleCall_2_0_1()); + match(input,RULE_SIGNED_LITERAL,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getNameSIGNED_LITERALTerminalRuleCall_2_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:960:2: ( RULE_SINGLE_QUOTE ) + { + // InternalVampireLanguage.g:960:2: ( RULE_SINGLE_QUOTE ) + // InternalVampireLanguage.g:961:3: RULE_SINGLE_QUOTE + { + before(grammarAccess.getVLSFofFormulaAccess().getNameSINGLE_QUOTETerminalRuleCall_2_0_2()); + match(input,RULE_SINGLE_QUOTE,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getNameSINGLE_QUOTETerminalRuleCall_2_0_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__NameAlternatives_2_0" + + + // $ANTLR start "rule__VLSTffName__Alternatives" + // InternalVampireLanguage.g:970:1: rule__VLSTffName__Alternatives : ( ( ruleVLSTffDeclPred ) | ( ruleVLSTffFinite ) | ( ruleVLSTffDistinct ) ); + public final void rule__VLSTffName__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:974:1: ( ( ruleVLSTffDeclPred ) | ( ruleVLSTffFinite ) | ( ruleVLSTffDistinct ) ) + int alt5=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + case 60: + { + alt5=1; + } + break; + case 23: + { + alt5=2; + } + break; + case 22: + { + alt5=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 5, 0, input); + + throw nvae; + } + + switch (alt5) { + case 1 : + // InternalVampireLanguage.g:975:2: ( ruleVLSTffDeclPred ) + { + // InternalVampireLanguage.g:975:2: ( ruleVLSTffDeclPred ) + // InternalVampireLanguage.g:976:3: ruleVLSTffDeclPred + { + before(grammarAccess.getVLSTffNameAccess().getVLSTffDeclPredParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSTffDeclPred(); + + state._fsp--; + + after(grammarAccess.getVLSTffNameAccess().getVLSTffDeclPredParserRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:981:2: ( ruleVLSTffFinite ) + { + // InternalVampireLanguage.g:981:2: ( ruleVLSTffFinite ) + // InternalVampireLanguage.g:982:3: ruleVLSTffFinite + { + before(grammarAccess.getVLSTffNameAccess().getVLSTffFiniteParserRuleCall_1()); + pushFollow(FOLLOW_2); + ruleVLSTffFinite(); + + state._fsp--; + + after(grammarAccess.getVLSTffNameAccess().getVLSTffFiniteParserRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:987:2: ( ruleVLSTffDistinct ) + { + // InternalVampireLanguage.g:987:2: ( ruleVLSTffDistinct ) + // InternalVampireLanguage.g:988:3: ruleVLSTffDistinct + { + before(grammarAccess.getVLSTffNameAccess().getVLSTffDistinctParserRuleCall_2()); + pushFollow(FOLLOW_2); + ruleVLSTffDistinct(); + + state._fsp--; + + after(grammarAccess.getVLSTffNameAccess().getVLSTffDistinctParserRuleCall_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffName__Alternatives" + + + // $ANTLR start "rule__VLSTffDeclPred__Alternatives" + // InternalVampireLanguage.g:997:1: rule__VLSTffDeclPred__Alternatives : ( ( ( rule__VLSTffDeclPred__Group_0__0 ) ) | ( RULE_LOWER_WORD_ID ) ); + public final void rule__VLSTffDeclPred__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1001:1: ( ( ( rule__VLSTffDeclPred__Group_0__0 ) ) | ( RULE_LOWER_WORD_ID ) ) + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0==60) ) { + alt6=1; + } + else if ( (LA6_0==RULE_LOWER_WORD_ID) ) { + alt6=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 6, 0, input); + + throw nvae; + } + switch (alt6) { + case 1 : + // InternalVampireLanguage.g:1002:2: ( ( rule__VLSTffDeclPred__Group_0__0 ) ) + { + // InternalVampireLanguage.g:1002:2: ( ( rule__VLSTffDeclPred__Group_0__0 ) ) + // InternalVampireLanguage.g:1003:3: ( rule__VLSTffDeclPred__Group_0__0 ) + { + before(grammarAccess.getVLSTffDeclPredAccess().getGroup_0()); + // InternalVampireLanguage.g:1004:3: ( rule__VLSTffDeclPred__Group_0__0 ) + // InternalVampireLanguage.g:1004:4: rule__VLSTffDeclPred__Group_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSTffDeclPred__Group_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffDeclPredAccess().getGroup_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1008:2: ( RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:1008:2: ( RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:1009:3: RULE_LOWER_WORD_ID + { + before(grammarAccess.getVLSTffDeclPredAccess().getLOWER_WORD_IDTerminalRuleCall_1()); + match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSTffDeclPredAccess().getLOWER_WORD_IDTerminalRuleCall_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffDeclPred__Alternatives" + + + // $ANTLR start "rule__VLSRole__Alternatives" + // InternalVampireLanguage.g:1018:1: rule__VLSRole__Alternatives : ( ( 'axiom' ) | ( 'conjecture' ) | ( 'hypothesis' ) | ( 'definition' ) | ( 'assumption' ) | ( 'lemma' ) | ( 'theorem' ) | ( 'corollary' ) | ( 'negated_conjecture' ) | ( 'plain' ) | ( 'type' ) | ( 'fi_domain' ) | ( 'fi_functors' ) | ( 'fi_predicates' ) | ( 'unknown' ) ); + public final void rule__VLSRole__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1022:1: ( ( 'axiom' ) | ( 'conjecture' ) | ( 'hypothesis' ) | ( 'definition' ) | ( 'assumption' ) | ( 'lemma' ) | ( 'theorem' ) | ( 'corollary' ) | ( 'negated_conjecture' ) | ( 'plain' ) | ( 'type' ) | ( 'fi_domain' ) | ( 'fi_functors' ) | ( 'fi_predicates' ) | ( 'unknown' ) ) + int alt7=15; + switch ( input.LA(1) ) { + case 24: + { + alt7=1; + } + break; + case 25: + { + alt7=2; + } + break; + case 26: + { + alt7=3; + } + break; + case 27: + { + alt7=4; + } + break; + case 28: + { + alt7=5; + } + break; + case 29: + { + alt7=6; + } + break; + case 30: + { + alt7=7; + } + break; + case 31: + { + alt7=8; + } + break; + case 32: + { + alt7=9; + } + break; + case 33: + { + alt7=10; + } + break; + case 34: + { + alt7=11; + } + break; + case 35: + { + alt7=12; + } + break; + case 36: + { + alt7=13; + } + break; + case 37: + { + alt7=14; + } + break; + case 38: + { + alt7=15; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 7, 0, input); + + throw nvae; + } + + switch (alt7) { + case 1 : + // InternalVampireLanguage.g:1023:2: ( 'axiom' ) + { + // InternalVampireLanguage.g:1023:2: ( 'axiom' ) + // InternalVampireLanguage.g:1024:3: 'axiom' + { + before(grammarAccess.getVLSRoleAccess().getAxiomKeyword_0()); + match(input,24,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getAxiomKeyword_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1029:2: ( 'conjecture' ) + { + // InternalVampireLanguage.g:1029:2: ( 'conjecture' ) + // InternalVampireLanguage.g:1030:3: 'conjecture' + { + before(grammarAccess.getVLSRoleAccess().getConjectureKeyword_1()); + match(input,25,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getConjectureKeyword_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1035:2: ( 'hypothesis' ) + { + // InternalVampireLanguage.g:1035:2: ( 'hypothesis' ) + // InternalVampireLanguage.g:1036:3: 'hypothesis' + { + before(grammarAccess.getVLSRoleAccess().getHypothesisKeyword_2()); + match(input,26,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getHypothesisKeyword_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1041:2: ( 'definition' ) + { + // InternalVampireLanguage.g:1041:2: ( 'definition' ) + // InternalVampireLanguage.g:1042:3: 'definition' + { + before(grammarAccess.getVLSRoleAccess().getDefinitionKeyword_3()); + match(input,27,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getDefinitionKeyword_3()); + + } + + + } + break; + case 5 : + // InternalVampireLanguage.g:1047:2: ( 'assumption' ) + { + // InternalVampireLanguage.g:1047:2: ( 'assumption' ) + // InternalVampireLanguage.g:1048:3: 'assumption' + { + before(grammarAccess.getVLSRoleAccess().getAssumptionKeyword_4()); + match(input,28,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getAssumptionKeyword_4()); + + } + + + } + break; + case 6 : + // InternalVampireLanguage.g:1053:2: ( 'lemma' ) + { + // InternalVampireLanguage.g:1053:2: ( 'lemma' ) + // InternalVampireLanguage.g:1054:3: 'lemma' + { + before(grammarAccess.getVLSRoleAccess().getLemmaKeyword_5()); + match(input,29,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getLemmaKeyword_5()); + + } + + + } + break; + case 7 : + // InternalVampireLanguage.g:1059:2: ( 'theorem' ) + { + // InternalVampireLanguage.g:1059:2: ( 'theorem' ) + // InternalVampireLanguage.g:1060:3: 'theorem' + { + before(grammarAccess.getVLSRoleAccess().getTheoremKeyword_6()); + match(input,30,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getTheoremKeyword_6()); + + } + + + } + break; + case 8 : + // InternalVampireLanguage.g:1065:2: ( 'corollary' ) + { + // InternalVampireLanguage.g:1065:2: ( 'corollary' ) + // InternalVampireLanguage.g:1066:3: 'corollary' + { + before(grammarAccess.getVLSRoleAccess().getCorollaryKeyword_7()); + match(input,31,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getCorollaryKeyword_7()); + + } + + + } + break; + case 9 : + // InternalVampireLanguage.g:1071:2: ( 'negated_conjecture' ) + { + // InternalVampireLanguage.g:1071:2: ( 'negated_conjecture' ) + // InternalVampireLanguage.g:1072:3: 'negated_conjecture' + { + before(grammarAccess.getVLSRoleAccess().getNegated_conjectureKeyword_8()); + match(input,32,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getNegated_conjectureKeyword_8()); + + } + + + } + break; + case 10 : + // InternalVampireLanguage.g:1077:2: ( 'plain' ) + { + // InternalVampireLanguage.g:1077:2: ( 'plain' ) + // InternalVampireLanguage.g:1078:3: 'plain' + { + before(grammarAccess.getVLSRoleAccess().getPlainKeyword_9()); + match(input,33,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getPlainKeyword_9()); + + } + + + } + break; + case 11 : + // InternalVampireLanguage.g:1083:2: ( 'type' ) + { + // InternalVampireLanguage.g:1083:2: ( 'type' ) + // InternalVampireLanguage.g:1084:3: 'type' + { + before(grammarAccess.getVLSRoleAccess().getTypeKeyword_10()); + match(input,34,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getTypeKeyword_10()); + + } + + + } + break; + case 12 : + // InternalVampireLanguage.g:1089:2: ( 'fi_domain' ) + { + // InternalVampireLanguage.g:1089:2: ( 'fi_domain' ) + // InternalVampireLanguage.g:1090:3: 'fi_domain' + { + before(grammarAccess.getVLSRoleAccess().getFi_domainKeyword_11()); + match(input,35,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getFi_domainKeyword_11()); + + } + + + } + break; + case 13 : + // InternalVampireLanguage.g:1095:2: ( 'fi_functors' ) + { + // InternalVampireLanguage.g:1095:2: ( 'fi_functors' ) + // InternalVampireLanguage.g:1096:3: 'fi_functors' + { + before(grammarAccess.getVLSRoleAccess().getFi_functorsKeyword_12()); + match(input,36,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getFi_functorsKeyword_12()); + + } + + + } + break; + case 14 : + // InternalVampireLanguage.g:1101:2: ( 'fi_predicates' ) + { + // InternalVampireLanguage.g:1101:2: ( 'fi_predicates' ) + // InternalVampireLanguage.g:1102:3: 'fi_predicates' + { + before(grammarAccess.getVLSRoleAccess().getFi_predicatesKeyword_13()); + match(input,37,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getFi_predicatesKeyword_13()); + + } + + + } + break; + case 15 : + // InternalVampireLanguage.g:1107:2: ( 'unknown' ) + { + // InternalVampireLanguage.g:1107:2: ( 'unknown' ) + // InternalVampireLanguage.g:1108:3: 'unknown' + { + before(grammarAccess.getVLSRoleAccess().getUnknownKeyword_14()); + match(input,38,FOLLOW_2); + after(grammarAccess.getVLSRoleAccess().getUnknownKeyword_14()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSRole__Alternatives" + + + // $ANTLR start "rule__VLSAnnotation__NameAlternatives_1_0" + // InternalVampireLanguage.g:1117:1: rule__VLSAnnotation__NameAlternatives_1_0 : ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( ruleVLSRole ) ); + public final void rule__VLSAnnotation__NameAlternatives_1_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1121:1: ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( ruleVLSRole ) ) + int alt8=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt8=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt8=2; + } + break; + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + { + alt8=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 8, 0, input); + + throw nvae; + } + + switch (alt8) { + case 1 : + // InternalVampireLanguage.g:1122:2: ( RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:1122:2: ( RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:1123:3: RULE_LOWER_WORD_ID + { + before(grammarAccess.getVLSAnnotationAccess().getNameLOWER_WORD_IDTerminalRuleCall_1_0_0()); + match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSAnnotationAccess().getNameLOWER_WORD_IDTerminalRuleCall_1_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1128:2: ( RULE_SINGLE_QUOTE ) + { + // InternalVampireLanguage.g:1128:2: ( RULE_SINGLE_QUOTE ) + // InternalVampireLanguage.g:1129:3: RULE_SINGLE_QUOTE + { + before(grammarAccess.getVLSAnnotationAccess().getNameSINGLE_QUOTETerminalRuleCall_1_0_1()); + match(input,RULE_SINGLE_QUOTE,FOLLOW_2); + after(grammarAccess.getVLSAnnotationAccess().getNameSINGLE_QUOTETerminalRuleCall_1_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1134:2: ( ruleVLSRole ) + { + // InternalVampireLanguage.g:1134:2: ( ruleVLSRole ) + // InternalVampireLanguage.g:1135:3: ruleVLSRole + { + before(grammarAccess.getVLSAnnotationAccess().getNameVLSRoleParserRuleCall_1_0_2()); + pushFollow(FOLLOW_2); + ruleVLSRole(); + + state._fsp--; + + after(grammarAccess.getVLSAnnotationAccess().getNameVLSRoleParserRuleCall_1_0_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__NameAlternatives_1_0" + + + // $ANTLR start "rule__VLSTffTerm__Alternatives" + // InternalVampireLanguage.g:1144:1: rule__VLSTffTerm__Alternatives : ( ( ruleVLSTerm ) | ( ruleVLSDeclaration ) | ( ruleVLSCommentTerm ) ); + public final void rule__VLSTffTerm__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1148:1: ( ( ruleVLSTerm ) | ( ruleVLSDeclaration ) | ( ruleVLSCommentTerm ) ) + int alt9=3; + alt9 = dfa9.predict(input); + switch (alt9) { + case 1 : + // InternalVampireLanguage.g:1149:2: ( ruleVLSTerm ) + { + // InternalVampireLanguage.g:1149:2: ( ruleVLSTerm ) + // InternalVampireLanguage.g:1150:3: ruleVLSTerm + { + before(grammarAccess.getVLSTffTermAccess().getVLSTermParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSTerm(); + + state._fsp--; + + after(grammarAccess.getVLSTffTermAccess().getVLSTermParserRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1155:2: ( ruleVLSDeclaration ) + { + // InternalVampireLanguage.g:1155:2: ( ruleVLSDeclaration ) + // InternalVampireLanguage.g:1156:3: ruleVLSDeclaration + { + before(grammarAccess.getVLSTffTermAccess().getVLSDeclarationParserRuleCall_1()); + pushFollow(FOLLOW_2); + ruleVLSDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSTffTermAccess().getVLSDeclarationParserRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1161:2: ( ruleVLSCommentTerm ) + { + // InternalVampireLanguage.g:1161:2: ( ruleVLSCommentTerm ) + // InternalVampireLanguage.g:1162:3: ruleVLSCommentTerm + { + before(grammarAccess.getVLSTffTermAccess().getVLSCommentTermParserRuleCall_2()); + pushFollow(FOLLOW_2); + ruleVLSCommentTerm(); + + state._fsp--; + + after(grammarAccess.getVLSTffTermAccess().getVLSCommentTermParserRuleCall_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffTerm__Alternatives" + + + // $ANTLR start "rule__VLSDeclaration__Alternatives" + // InternalVampireLanguage.g:1171:1: rule__VLSDeclaration__Alternatives : ( ( ruleVLSVariableDeclaration ) | ( ruleVLSOtherDeclaration ) ); + public final void rule__VLSDeclaration__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1175:1: ( ( ruleVLSVariableDeclaration ) | ( ruleVLSOtherDeclaration ) ) + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0==RULE_UPPER_WORD_ID) ) { + alt10=1; + } + else if ( (LA10_0==RULE_LOWER_WORD_ID||(LA10_0>=RULE_SINGLE_QUOTE && LA10_0<=RULE_DOUBLE_DOLLAR_ID)||(LA10_0>=24 && LA10_0<=38)||(LA10_0>=78 && LA10_0<=79)) ) { + alt10=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 10, 0, input); + + throw nvae; + } + switch (alt10) { + case 1 : + // InternalVampireLanguage.g:1176:2: ( ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1176:2: ( ruleVLSVariableDeclaration ) + // InternalVampireLanguage.g:1177:3: ruleVLSVariableDeclaration + { + before(grammarAccess.getVLSDeclarationAccess().getVLSVariableDeclarationParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSVariableDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSDeclarationAccess().getVLSVariableDeclarationParserRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1182:2: ( ruleVLSOtherDeclaration ) + { + // InternalVampireLanguage.g:1182:2: ( ruleVLSOtherDeclaration ) + // InternalVampireLanguage.g:1183:3: ruleVLSOtherDeclaration + { + before(grammarAccess.getVLSDeclarationAccess().getVLSOtherDeclarationParserRuleCall_1()); + pushFollow(FOLLOW_2); + ruleVLSOtherDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSDeclarationAccess().getVLSOtherDeclarationParserRuleCall_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDeclaration__Alternatives" + + + // $ANTLR start "rule__VLSBinary__Alternatives_1" + // InternalVampireLanguage.g:1192:1: rule__VLSBinary__Alternatives_1 : ( ( ( rule__VLSBinary__Group_1_0__0 ) ) | ( ( ( rule__VLSBinary__Group_1_1__0 ) ) ( ( rule__VLSBinary__Group_1_1__0 )* ) ) | ( ( ( rule__VLSBinary__Group_1_2__0 ) ) ( ( rule__VLSBinary__Group_1_2__0 )* ) ) ); + public final void rule__VLSBinary__Alternatives_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1196:1: ( ( ( rule__VLSBinary__Group_1_0__0 ) ) | ( ( ( rule__VLSBinary__Group_1_1__0 ) ) ( ( rule__VLSBinary__Group_1_1__0 )* ) ) | ( ( ( rule__VLSBinary__Group_1_2__0 ) ) ( ( rule__VLSBinary__Group_1_2__0 )* ) ) ) + int alt13=3; + switch ( input.LA(1) ) { + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + { + alt13=1; + } + break; + case 70: + { + alt13=2; + } + break; + case 71: + { + alt13=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 13, 0, input); + + throw nvae; + } + + switch (alt13) { + case 1 : + // InternalVampireLanguage.g:1197:2: ( ( rule__VLSBinary__Group_1_0__0 ) ) + { + // InternalVampireLanguage.g:1197:2: ( ( rule__VLSBinary__Group_1_0__0 ) ) + // InternalVampireLanguage.g:1198:3: ( rule__VLSBinary__Group_1_0__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0()); + // InternalVampireLanguage.g:1199:3: ( rule__VLSBinary__Group_1_0__0 ) + // InternalVampireLanguage.g:1199:4: rule__VLSBinary__Group_1_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1203:2: ( ( ( rule__VLSBinary__Group_1_1__0 ) ) ( ( rule__VLSBinary__Group_1_1__0 )* ) ) + { + // InternalVampireLanguage.g:1203:2: ( ( ( rule__VLSBinary__Group_1_1__0 ) ) ( ( rule__VLSBinary__Group_1_1__0 )* ) ) + // InternalVampireLanguage.g:1204:3: ( ( rule__VLSBinary__Group_1_1__0 ) ) ( ( rule__VLSBinary__Group_1_1__0 )* ) + { + // InternalVampireLanguage.g:1204:3: ( ( rule__VLSBinary__Group_1_1__0 ) ) + // InternalVampireLanguage.g:1205:4: ( rule__VLSBinary__Group_1_1__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); + // InternalVampireLanguage.g:1206:4: ( rule__VLSBinary__Group_1_1__0 ) + // InternalVampireLanguage.g:1206:5: rule__VLSBinary__Group_1_1__0 + { + pushFollow(FOLLOW_4); + rule__VLSBinary__Group_1_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); + + } + + // InternalVampireLanguage.g:1209:3: ( ( rule__VLSBinary__Group_1_1__0 )* ) + // InternalVampireLanguage.g:1210:4: ( rule__VLSBinary__Group_1_1__0 )* + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); + // InternalVampireLanguage.g:1211:4: ( rule__VLSBinary__Group_1_1__0 )* + loop11: + do { + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0==70) ) { + alt11=1; + } + + + switch (alt11) { + case 1 : + // InternalVampireLanguage.g:1211:5: rule__VLSBinary__Group_1_1__0 + { + pushFollow(FOLLOW_4); + rule__VLSBinary__Group_1_1__0(); + + state._fsp--; + + + } + break; + + default : + break loop11; + } + } while (true); + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_1()); + + } + + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1216:2: ( ( ( rule__VLSBinary__Group_1_2__0 ) ) ( ( rule__VLSBinary__Group_1_2__0 )* ) ) + { + // InternalVampireLanguage.g:1216:2: ( ( ( rule__VLSBinary__Group_1_2__0 ) ) ( ( rule__VLSBinary__Group_1_2__0 )* ) ) + // InternalVampireLanguage.g:1217:3: ( ( rule__VLSBinary__Group_1_2__0 ) ) ( ( rule__VLSBinary__Group_1_2__0 )* ) + { + // InternalVampireLanguage.g:1217:3: ( ( rule__VLSBinary__Group_1_2__0 ) ) + // InternalVampireLanguage.g:1218:4: ( rule__VLSBinary__Group_1_2__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); + // InternalVampireLanguage.g:1219:4: ( rule__VLSBinary__Group_1_2__0 ) + // InternalVampireLanguage.g:1219:5: rule__VLSBinary__Group_1_2__0 + { + pushFollow(FOLLOW_5); + rule__VLSBinary__Group_1_2__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); + + } + + // InternalVampireLanguage.g:1222:3: ( ( rule__VLSBinary__Group_1_2__0 )* ) + // InternalVampireLanguage.g:1223:4: ( rule__VLSBinary__Group_1_2__0 )* + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); + // InternalVampireLanguage.g:1224:4: ( rule__VLSBinary__Group_1_2__0 )* + loop12: + do { + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0==71) ) { + alt12=1; + } + + + switch (alt12) { + case 1 : + // InternalVampireLanguage.g:1224:5: rule__VLSBinary__Group_1_2__0 + { + pushFollow(FOLLOW_5); + rule__VLSBinary__Group_1_2__0(); + + state._fsp--; + + + } + break; + + default : + break loop12; + } + } while (true); + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_2()); + + } + + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Alternatives_1" + + + // $ANTLR start "rule__VLSBinary__Alternatives_1_0_0" + // InternalVampireLanguage.g:1233:1: rule__VLSBinary__Alternatives_1_0_0 : ( ( ( rule__VLSBinary__Group_1_0_0_0__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_1__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_2__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_3__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_4__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_5__0 ) ) ); + public final void rule__VLSBinary__Alternatives_1_0_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1237:1: ( ( ( rule__VLSBinary__Group_1_0_0_0__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_1__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_2__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_3__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_4__0 ) ) | ( ( rule__VLSBinary__Group_1_0_0_5__0 ) ) ) + int alt14=6; + switch ( input.LA(1) ) { + case 64: + { + alt14=1; + } + break; + case 65: + { + alt14=2; + } + break; + case 66: + { + alt14=3; + } + break; + case 67: + { + alt14=4; + } + break; + case 68: + { + alt14=5; + } + break; + case 69: + { + alt14=6; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 14, 0, input); + + throw nvae; + } + + switch (alt14) { + case 1 : + // InternalVampireLanguage.g:1238:2: ( ( rule__VLSBinary__Group_1_0_0_0__0 ) ) + { + // InternalVampireLanguage.g:1238:2: ( ( rule__VLSBinary__Group_1_0_0_0__0 ) ) + // InternalVampireLanguage.g:1239:3: ( rule__VLSBinary__Group_1_0_0_0__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_0()); + // InternalVampireLanguage.g:1240:3: ( rule__VLSBinary__Group_1_0_0_0__0 ) + // InternalVampireLanguage.g:1240:4: rule__VLSBinary__Group_1_0_0_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1244:2: ( ( rule__VLSBinary__Group_1_0_0_1__0 ) ) + { + // InternalVampireLanguage.g:1244:2: ( ( rule__VLSBinary__Group_1_0_0_1__0 ) ) + // InternalVampireLanguage.g:1245:3: ( rule__VLSBinary__Group_1_0_0_1__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_1()); + // InternalVampireLanguage.g:1246:3: ( rule__VLSBinary__Group_1_0_0_1__0 ) + // InternalVampireLanguage.g:1246:4: rule__VLSBinary__Group_1_0_0_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1250:2: ( ( rule__VLSBinary__Group_1_0_0_2__0 ) ) + { + // InternalVampireLanguage.g:1250:2: ( ( rule__VLSBinary__Group_1_0_0_2__0 ) ) + // InternalVampireLanguage.g:1251:3: ( rule__VLSBinary__Group_1_0_0_2__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_2()); + // InternalVampireLanguage.g:1252:3: ( rule__VLSBinary__Group_1_0_0_2__0 ) + // InternalVampireLanguage.g:1252:4: rule__VLSBinary__Group_1_0_0_2__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_2__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1256:2: ( ( rule__VLSBinary__Group_1_0_0_3__0 ) ) + { + // InternalVampireLanguage.g:1256:2: ( ( rule__VLSBinary__Group_1_0_0_3__0 ) ) + // InternalVampireLanguage.g:1257:3: ( rule__VLSBinary__Group_1_0_0_3__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_3()); + // InternalVampireLanguage.g:1258:3: ( rule__VLSBinary__Group_1_0_0_3__0 ) + // InternalVampireLanguage.g:1258:4: rule__VLSBinary__Group_1_0_0_3__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_3__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_3()); + + } + + + } + break; + case 5 : + // InternalVampireLanguage.g:1262:2: ( ( rule__VLSBinary__Group_1_0_0_4__0 ) ) + { + // InternalVampireLanguage.g:1262:2: ( ( rule__VLSBinary__Group_1_0_0_4__0 ) ) + // InternalVampireLanguage.g:1263:3: ( rule__VLSBinary__Group_1_0_0_4__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_4()); + // InternalVampireLanguage.g:1264:3: ( rule__VLSBinary__Group_1_0_0_4__0 ) + // InternalVampireLanguage.g:1264:4: rule__VLSBinary__Group_1_0_0_4__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_4__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_4()); + + } + + + } + break; + case 6 : + // InternalVampireLanguage.g:1268:2: ( ( rule__VLSBinary__Group_1_0_0_5__0 ) ) + { + // InternalVampireLanguage.g:1268:2: ( ( rule__VLSBinary__Group_1_0_0_5__0 ) ) + // InternalVampireLanguage.g:1269:3: ( rule__VLSBinary__Group_1_0_0_5__0 ) + { + before(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_5()); + // InternalVampireLanguage.g:1270:3: ( rule__VLSBinary__Group_1_0_0_5__0 ) + // InternalVampireLanguage.g:1270:4: rule__VLSBinary__Group_1_0_0_5__0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_5__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getGroup_1_0_0_5()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Alternatives_1_0_0" + + + // $ANTLR start "rule__VLSUnitaryFormula__Alternatives" + // InternalVampireLanguage.g:1278:1: rule__VLSUnitaryFormula__Alternatives : ( ( ruleVLSUniversalQuantifier ) | ( ruleVLSExistentialQuantifier ) | ( ruleVLSUnaryNegation ) | ( ruleVLSUnaryInfix ) | ( ( rule__VLSUnitaryFormula__Group_4__0 ) ) ); + public final void rule__VLSUnitaryFormula__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1282:1: ( ( ruleVLSUniversalQuantifier ) | ( ruleVLSExistentialQuantifier ) | ( ruleVLSUnaryNegation ) | ( ruleVLSUnaryInfix ) | ( ( rule__VLSUnitaryFormula__Group_4__0 ) ) ) + int alt15=5; + switch ( input.LA(1) ) { + case 72: + { + alt15=1; + } + break; + case 73: + { + alt15=2; + } + break; + case 74: + { + alt15=3; + } + break; + case RULE_LOWER_WORD_ID: + case RULE_SIGNED_LITERAL: + case RULE_SINGLE_QUOTE: + case RULE_DOLLAR_ID: + case RULE_DOUBLE_DOLLAR_ID: + case RULE_UPPER_WORD_ID: + case RULE_DOUBLE_QUOTE: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 78: + case 79: + case 80: + { + alt15=4; + } + break; + case 55: + { + alt15=5; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 15, 0, input); + + throw nvae; + } + + switch (alt15) { + case 1 : + // InternalVampireLanguage.g:1283:2: ( ruleVLSUniversalQuantifier ) + { + // InternalVampireLanguage.g:1283:2: ( ruleVLSUniversalQuantifier ) + // InternalVampireLanguage.g:1284:3: ruleVLSUniversalQuantifier + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUniversalQuantifierParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSUniversalQuantifier(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUniversalQuantifierParserRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1289:2: ( ruleVLSExistentialQuantifier ) + { + // InternalVampireLanguage.g:1289:2: ( ruleVLSExistentialQuantifier ) + // InternalVampireLanguage.g:1290:3: ruleVLSExistentialQuantifier + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSExistentialQuantifierParserRuleCall_1()); + pushFollow(FOLLOW_2); + ruleVLSExistentialQuantifier(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSExistentialQuantifierParserRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1295:2: ( ruleVLSUnaryNegation ) + { + // InternalVampireLanguage.g:1295:2: ( ruleVLSUnaryNegation ) + // InternalVampireLanguage.g:1296:3: ruleVLSUnaryNegation + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryNegationParserRuleCall_2()); + pushFollow(FOLLOW_2); + ruleVLSUnaryNegation(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryNegationParserRuleCall_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1301:2: ( ruleVLSUnaryInfix ) + { + // InternalVampireLanguage.g:1301:2: ( ruleVLSUnaryInfix ) + // InternalVampireLanguage.g:1302:3: ruleVLSUnaryInfix + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryInfixParserRuleCall_3()); + pushFollow(FOLLOW_2); + ruleVLSUnaryInfix(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryInfixParserRuleCall_3()); + + } + + + } + break; + case 5 : + // InternalVampireLanguage.g:1307:2: ( ( rule__VLSUnitaryFormula__Group_4__0 ) ) + { + // InternalVampireLanguage.g:1307:2: ( ( rule__VLSUnitaryFormula__Group_4__0 ) ) + // InternalVampireLanguage.g:1308:3: ( rule__VLSUnitaryFormula__Group_4__0 ) + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getGroup_4()); + // InternalVampireLanguage.g:1309:3: ( rule__VLSUnitaryFormula__Group_4__0 ) + // InternalVampireLanguage.g:1309:4: rule__VLSUnitaryFormula__Group_4__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryFormula__Group_4__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnitaryFormulaAccess().getGroup_4()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Alternatives" + + + // $ANTLR start "rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0" + // InternalVampireLanguage.g:1317:1: rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 : ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ); + public final void rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1321:1: ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ) + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0==RULE_UPPER_WORD_ID) ) { + int LA16_1 = input.LA(2); + + if ( (LA16_1==61) ) { + alt16=2; + } + else if ( (LA16_1==50||LA16_1==56) ) { + alt16=1; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 16, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 16, 0, input); + + throw nvae; + } + switch (alt16) { + case 1 : + // InternalVampireLanguage.g:1322:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:1322:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:1323:3: ruleVLSVariable + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1328:2: ( ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1328:2: ( ruleVLSVariableDeclaration ) + // InternalVampireLanguage.g:1329:3: ruleVLSVariableDeclaration + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + pushFollow(FOLLOW_2); + ruleVLSVariableDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0" + + + // $ANTLR start "rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0" + // InternalVampireLanguage.g:1338:1: rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 : ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ); + public final void rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1342:1: ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ) + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0==RULE_UPPER_WORD_ID) ) { + int LA17_1 = input.LA(2); + + if ( (LA17_1==61) ) { + alt17=2; + } + else if ( (LA17_1==50||LA17_1==56) ) { + alt17=1; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 17, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 17, 0, input); + + throw nvae; + } + switch (alt17) { + case 1 : + // InternalVampireLanguage.g:1343:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:1343:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:1344:3: ruleVLSVariable + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1349:2: ( ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1349:2: ( ruleVLSVariableDeclaration ) + // InternalVampireLanguage.g:1350:3: ruleVLSVariableDeclaration + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + pushFollow(FOLLOW_2); + ruleVLSVariableDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0" + + + // $ANTLR start "rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0" + // InternalVampireLanguage.g:1359:1: rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 : ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ); + public final void rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1363:1: ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ) + int alt18=2; + int LA18_0 = input.LA(1); + + if ( (LA18_0==RULE_UPPER_WORD_ID) ) { + int LA18_1 = input.LA(2); + + if ( (LA18_1==61) ) { + alt18=2; + } + else if ( (LA18_1==50||LA18_1==56) ) { + alt18=1; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 18, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 18, 0, input); + + throw nvae; + } + switch (alt18) { + case 1 : + // InternalVampireLanguage.g:1364:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:1364:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:1365:3: ruleVLSVariable + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1370:2: ( ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1370:2: ( ruleVLSVariableDeclaration ) + // InternalVampireLanguage.g:1371:3: ruleVLSVariableDeclaration + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + pushFollow(FOLLOW_2); + ruleVLSVariableDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0" + + + // $ANTLR start "rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0" + // InternalVampireLanguage.g:1380:1: rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 : ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ); + public final void rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1384:1: ( ( ruleVLSVariable ) | ( ruleVLSVariableDeclaration ) ) + int alt19=2; + int LA19_0 = input.LA(1); + + if ( (LA19_0==RULE_UPPER_WORD_ID) ) { + int LA19_1 = input.LA(2); + + if ( (LA19_1==61) ) { + alt19=2; + } + else if ( (LA19_1==50||LA19_1==56) ) { + alt19=1; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 19, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 19, 0, input); + + throw nvae; + } + switch (alt19) { + case 1 : + // InternalVampireLanguage.g:1385:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:1385:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:1386:3: ruleVLSVariable + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1391:2: ( ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1391:2: ( ruleVLSVariableDeclaration ) + // InternalVampireLanguage.g:1392:3: ruleVLSVariableDeclaration + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + pushFollow(FOLLOW_2); + ruleVLSVariableDeclaration(); + + state._fsp--; + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0" + + + // $ANTLR start "rule__VLSUnaryInfix__Alternatives_1_0" + // InternalVampireLanguage.g:1401:1: rule__VLSUnaryInfix__Alternatives_1_0 : ( ( ( rule__VLSUnaryInfix__Group_1_0_0__0 ) ) | ( ( rule__VLSUnaryInfix__Group_1_0_1__0 ) ) | ( ( rule__VLSUnaryInfix__Group_1_0_2__0 ) ) ); + public final void rule__VLSUnaryInfix__Alternatives_1_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1405:1: ( ( ( rule__VLSUnaryInfix__Group_1_0_0__0 ) ) | ( ( rule__VLSUnaryInfix__Group_1_0_1__0 ) ) | ( ( rule__VLSUnaryInfix__Group_1_0_2__0 ) ) ) + int alt20=3; + switch ( input.LA(1) ) { + case 75: + { + alt20=1; + } + break; + case 76: + { + alt20=2; + } + break; + case 77: + { + alt20=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 20, 0, input); + + throw nvae; + } + + switch (alt20) { + case 1 : + // InternalVampireLanguage.g:1406:2: ( ( rule__VLSUnaryInfix__Group_1_0_0__0 ) ) + { + // InternalVampireLanguage.g:1406:2: ( ( rule__VLSUnaryInfix__Group_1_0_0__0 ) ) + // InternalVampireLanguage.g:1407:3: ( rule__VLSUnaryInfix__Group_1_0_0__0 ) + { + before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_0()); + // InternalVampireLanguage.g:1408:3: ( rule__VLSUnaryInfix__Group_1_0_0__0 ) + // InternalVampireLanguage.g:1408:4: rule__VLSUnaryInfix__Group_1_0_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1412:2: ( ( rule__VLSUnaryInfix__Group_1_0_1__0 ) ) + { + // InternalVampireLanguage.g:1412:2: ( ( rule__VLSUnaryInfix__Group_1_0_1__0 ) ) + // InternalVampireLanguage.g:1413:3: ( rule__VLSUnaryInfix__Group_1_0_1__0 ) + { + before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_1()); + // InternalVampireLanguage.g:1414:3: ( rule__VLSUnaryInfix__Group_1_0_1__0 ) + // InternalVampireLanguage.g:1414:4: rule__VLSUnaryInfix__Group_1_0_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1418:2: ( ( rule__VLSUnaryInfix__Group_1_0_2__0 ) ) + { + // InternalVampireLanguage.g:1418:2: ( ( rule__VLSUnaryInfix__Group_1_0_2__0 ) ) + // InternalVampireLanguage.g:1419:3: ( rule__VLSUnaryInfix__Group_1_0_2__0 ) + { + before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_2()); + // InternalVampireLanguage.g:1420:3: ( rule__VLSUnaryInfix__Group_1_0_2__0 ) + // InternalVampireLanguage.g:1420:4: rule__VLSUnaryInfix__Group_1_0_2__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_2__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1_0_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Alternatives_1_0" + + + // $ANTLR start "rule__VLSAtomic__Alternatives" + // InternalVampireLanguage.g:1428:1: rule__VLSAtomic__Alternatives : ( ( ruleVLSAtomicConstant ) | ( ruleVLSAtomicFunction ) | ( ruleVLSVariable ) | ( ruleVLSDefinedTerm ) ); + public final void rule__VLSAtomic__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1432:1: ( ( ruleVLSAtomicConstant ) | ( ruleVLSAtomicFunction ) | ( ruleVLSVariable ) | ( ruleVLSDefinedTerm ) ) + int alt21=4; + alt21 = dfa21.predict(input); + switch (alt21) { + case 1 : + // InternalVampireLanguage.g:1433:2: ( ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:1433:2: ( ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:1434:3: ruleVLSAtomicConstant + { + before(grammarAccess.getVLSAtomicAccess().getVLSAtomicConstantParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomicConstant(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicAccess().getVLSAtomicConstantParserRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1439:2: ( ruleVLSAtomicFunction ) + { + // InternalVampireLanguage.g:1439:2: ( ruleVLSAtomicFunction ) + // InternalVampireLanguage.g:1440:3: ruleVLSAtomicFunction + { + before(grammarAccess.getVLSAtomicAccess().getVLSAtomicFunctionParserRuleCall_1()); + pushFollow(FOLLOW_2); + ruleVLSAtomicFunction(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicAccess().getVLSAtomicFunctionParserRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1445:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:1445:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:1446:3: ruleVLSVariable + { + before(grammarAccess.getVLSAtomicAccess().getVLSVariableParserRuleCall_2()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicAccess().getVLSVariableParserRuleCall_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1451:2: ( ruleVLSDefinedTerm ) + { + // InternalVampireLanguage.g:1451:2: ( ruleVLSDefinedTerm ) + // InternalVampireLanguage.g:1452:3: ruleVLSDefinedTerm + { + before(grammarAccess.getVLSAtomicAccess().getVLSDefinedTermParserRuleCall_3()); + pushFollow(FOLLOW_2); + ruleVLSDefinedTerm(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicAccess().getVLSDefinedTermParserRuleCall_3()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomic__Alternatives" + + + // $ANTLR start "rule__VLSAtomicConstant__Alternatives" + // InternalVampireLanguage.g:1461:1: rule__VLSAtomicConstant__Alternatives : ( ( ( rule__VLSAtomicConstant__Group_0__0 ) ) | ( ( rule__VLSAtomicConstant__Group_1__0 ) ) | ( ( rule__VLSAtomicConstant__Group_2__0 ) ) ); + public final void rule__VLSAtomicConstant__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1465:1: ( ( ( rule__VLSAtomicConstant__Group_0__0 ) ) | ( ( rule__VLSAtomicConstant__Group_1__0 ) ) | ( ( rule__VLSAtomicConstant__Group_2__0 ) ) ) + int alt22=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + case RULE_SINGLE_QUOTE: + case RULE_DOLLAR_ID: + case RULE_DOUBLE_DOLLAR_ID: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + { + alt22=1; + } + break; + case 78: + { + alt22=2; + } + break; + case 79: + { + alt22=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 22, 0, input); + + throw nvae; + } + + switch (alt22) { + case 1 : + // InternalVampireLanguage.g:1466:2: ( ( rule__VLSAtomicConstant__Group_0__0 ) ) + { + // InternalVampireLanguage.g:1466:2: ( ( rule__VLSAtomicConstant__Group_0__0 ) ) + // InternalVampireLanguage.g:1467:3: ( rule__VLSAtomicConstant__Group_0__0 ) + { + before(grammarAccess.getVLSAtomicConstantAccess().getGroup_0()); + // InternalVampireLanguage.g:1468:3: ( rule__VLSAtomicConstant__Group_0__0 ) + // InternalVampireLanguage.g:1468:4: rule__VLSAtomicConstant__Group_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicConstantAccess().getGroup_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1472:2: ( ( rule__VLSAtomicConstant__Group_1__0 ) ) + { + // InternalVampireLanguage.g:1472:2: ( ( rule__VLSAtomicConstant__Group_1__0 ) ) + // InternalVampireLanguage.g:1473:3: ( rule__VLSAtomicConstant__Group_1__0 ) + { + before(grammarAccess.getVLSAtomicConstantAccess().getGroup_1()); + // InternalVampireLanguage.g:1474:3: ( rule__VLSAtomicConstant__Group_1__0 ) + // InternalVampireLanguage.g:1474:4: rule__VLSAtomicConstant__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicConstantAccess().getGroup_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1478:2: ( ( rule__VLSAtomicConstant__Group_2__0 ) ) + { + // InternalVampireLanguage.g:1478:2: ( ( rule__VLSAtomicConstant__Group_2__0 ) ) + // InternalVampireLanguage.g:1479:3: ( rule__VLSAtomicConstant__Group_2__0 ) + { + before(grammarAccess.getVLSAtomicConstantAccess().getGroup_2()); + // InternalVampireLanguage.g:1480:3: ( rule__VLSAtomicConstant__Group_2__0 ) + // InternalVampireLanguage.g:1480:4: rule__VLSAtomicConstant__Group_2__0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_2__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicConstantAccess().getGroup_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Alternatives" + + + // $ANTLR start "rule__VLSAtomicConstant__NameAlternatives_0_1_0" + // InternalVampireLanguage.g:1488:1: rule__VLSAtomicConstant__NameAlternatives_0_1_0 : ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( RULE_DOLLAR_ID ) | ( RULE_DOUBLE_DOLLAR_ID ) | ( ruleVLSRole ) ); + public final void rule__VLSAtomicConstant__NameAlternatives_0_1_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1492:1: ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( RULE_DOLLAR_ID ) | ( RULE_DOUBLE_DOLLAR_ID ) | ( ruleVLSRole ) ) + int alt23=5; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt23=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt23=2; + } + break; + case RULE_DOLLAR_ID: + { + alt23=3; + } + break; + case RULE_DOUBLE_DOLLAR_ID: + { + alt23=4; + } + break; + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + { + alt23=5; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 23, 0, input); + + throw nvae; + } + + switch (alt23) { + case 1 : + // InternalVampireLanguage.g:1493:2: ( RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:1493:2: ( RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:1494:3: RULE_LOWER_WORD_ID + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSAtomicConstantAccess().getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1499:2: ( RULE_SINGLE_QUOTE ) + { + // InternalVampireLanguage.g:1499:2: ( RULE_SINGLE_QUOTE ) + // InternalVampireLanguage.g:1500:3: RULE_SINGLE_QUOTE + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + match(input,RULE_SINGLE_QUOTE,FOLLOW_2); + after(grammarAccess.getVLSAtomicConstantAccess().getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1505:2: ( RULE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:1505:2: ( RULE_DOLLAR_ID ) + // InternalVampireLanguage.g:1506:3: RULE_DOLLAR_ID + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameDOLLAR_IDTerminalRuleCall_0_1_0_2()); + match(input,RULE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSAtomicConstantAccess().getNameDOLLAR_IDTerminalRuleCall_0_1_0_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1511:2: ( RULE_DOUBLE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:1511:2: ( RULE_DOUBLE_DOLLAR_ID ) + // InternalVampireLanguage.g:1512:3: RULE_DOUBLE_DOLLAR_ID + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + match(input,RULE_DOUBLE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSAtomicConstantAccess().getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + + } + + + } + break; + case 5 : + // InternalVampireLanguage.g:1517:2: ( ruleVLSRole ) + { + // InternalVampireLanguage.g:1517:2: ( ruleVLSRole ) + // InternalVampireLanguage.g:1518:3: ruleVLSRole + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameVLSRoleParserRuleCall_0_1_0_4()); + pushFollow(FOLLOW_2); + ruleVLSRole(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicConstantAccess().getNameVLSRoleParserRuleCall_0_1_0_4()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__NameAlternatives_0_1_0" + + + // $ANTLR start "rule__VLSAtomicFunction__Alternatives" + // InternalVampireLanguage.g:1527:1: rule__VLSAtomicFunction__Alternatives : ( ( ( rule__VLSAtomicFunction__Group_0__0 ) ) | ( ( rule__VLSAtomicFunction__Group_1__0 ) ) ); + public final void rule__VLSAtomicFunction__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1531:1: ( ( ( rule__VLSAtomicFunction__Group_0__0 ) ) | ( ( rule__VLSAtomicFunction__Group_1__0 ) ) ) + int alt24=2; + int LA24_0 = input.LA(1); + + if ( (LA24_0==RULE_LOWER_WORD_ID||(LA24_0>=RULE_SINGLE_QUOTE && LA24_0<=RULE_DOUBLE_DOLLAR_ID)||(LA24_0>=24 && LA24_0<=38)) ) { + alt24=1; + } + else if ( (LA24_0==80) ) { + alt24=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 24, 0, input); + + throw nvae; + } + switch (alt24) { + case 1 : + // InternalVampireLanguage.g:1532:2: ( ( rule__VLSAtomicFunction__Group_0__0 ) ) + { + // InternalVampireLanguage.g:1532:2: ( ( rule__VLSAtomicFunction__Group_0__0 ) ) + // InternalVampireLanguage.g:1533:3: ( rule__VLSAtomicFunction__Group_0__0 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0()); + // InternalVampireLanguage.g:1534:3: ( rule__VLSAtomicFunction__Group_0__0 ) + // InternalVampireLanguage.g:1534:4: rule__VLSAtomicFunction__Group_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1538:2: ( ( rule__VLSAtomicFunction__Group_1__0 ) ) + { + // InternalVampireLanguage.g:1538:2: ( ( rule__VLSAtomicFunction__Group_1__0 ) ) + // InternalVampireLanguage.g:1539:3: ( rule__VLSAtomicFunction__Group_1__0 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_1()); + // InternalVampireLanguage.g:1540:3: ( rule__VLSAtomicFunction__Group_1__0 ) + // InternalVampireLanguage.g:1540:4: rule__VLSAtomicFunction__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Alternatives" + + + // $ANTLR start "rule__VLSAtomicFunction__ConstantAlternatives_0_1_0" + // InternalVampireLanguage.g:1548:1: rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 : ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( RULE_DOLLAR_ID ) | ( RULE_DOUBLE_DOLLAR_ID ) | ( ruleVLSRole ) ); + public final void rule__VLSAtomicFunction__ConstantAlternatives_0_1_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1552:1: ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( RULE_DOLLAR_ID ) | ( RULE_DOUBLE_DOLLAR_ID ) | ( ruleVLSRole ) ) + int alt25=5; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt25=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt25=2; + } + break; + case RULE_DOLLAR_ID: + { + alt25=3; + } + break; + case RULE_DOUBLE_DOLLAR_ID: + { + alt25=4; + } + break; + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + { + alt25=5; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 25, 0, input); + + throw nvae; + } + + switch (alt25) { + case 1 : + // InternalVampireLanguage.g:1553:2: ( RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:1553:2: ( RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:1554:3: RULE_LOWER_WORD_ID + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1559:2: ( RULE_SINGLE_QUOTE ) + { + // InternalVampireLanguage.g:1559:2: ( RULE_SINGLE_QUOTE ) + // InternalVampireLanguage.g:1560:3: RULE_SINGLE_QUOTE + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + match(input,RULE_SINGLE_QUOTE,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1565:2: ( RULE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:1565:2: ( RULE_DOLLAR_ID ) + // InternalVampireLanguage.g:1566:3: RULE_DOLLAR_ID + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2()); + match(input,RULE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1571:2: ( RULE_DOUBLE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:1571:2: ( RULE_DOUBLE_DOLLAR_ID ) + // InternalVampireLanguage.g:1572:3: RULE_DOUBLE_DOLLAR_ID + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + match(input,RULE_DOUBLE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + + } + + + } + break; + case 5 : + // InternalVampireLanguage.g:1577:2: ( ruleVLSRole ) + { + // InternalVampireLanguage.g:1577:2: ( ruleVLSRole ) + // InternalVampireLanguage.g:1578:3: ruleVLSRole + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantVLSRoleParserRuleCall_0_1_0_4()); + pushFollow(FOLLOW_2); + ruleVLSRole(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantVLSRoleParserRuleCall_0_1_0_4()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__ConstantAlternatives_0_1_0" + + + // $ANTLR start "rule__VLSFofTerm__Alternatives" + // InternalVampireLanguage.g:1587:1: rule__VLSFofTerm__Alternatives : ( ( ruleVLSVariable ) | ( ruleVLSFunctionAsTerm ) | ( ruleVLSDefinedTerm ) ); + public final void rule__VLSFofTerm__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1591:1: ( ( ruleVLSVariable ) | ( ruleVLSFunctionAsTerm ) | ( ruleVLSDefinedTerm ) ) + int alt26=3; + switch ( input.LA(1) ) { + case RULE_UPPER_WORD_ID: + { + alt26=1; + } + break; + case RULE_LOWER_WORD_ID: + case RULE_SINGLE_QUOTE: + case RULE_DOLLAR_ID: + case RULE_DOUBLE_DOLLAR_ID: + { + alt26=2; + } + break; + case RULE_SIGNED_LITERAL: + case RULE_DOUBLE_QUOTE: + { + alt26=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 26, 0, input); + + throw nvae; + } + + switch (alt26) { + case 1 : + // InternalVampireLanguage.g:1592:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:1592:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:1593:3: ruleVLSVariable + { + before(grammarAccess.getVLSFofTermAccess().getVLSVariableParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSFofTermAccess().getVLSVariableParserRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1598:2: ( ruleVLSFunctionAsTerm ) + { + // InternalVampireLanguage.g:1598:2: ( ruleVLSFunctionAsTerm ) + // InternalVampireLanguage.g:1599:3: ruleVLSFunctionAsTerm + { + before(grammarAccess.getVLSFofTermAccess().getVLSFunctionAsTermParserRuleCall_1()); + pushFollow(FOLLOW_2); + ruleVLSFunctionAsTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFofTermAccess().getVLSFunctionAsTermParserRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1604:2: ( ruleVLSDefinedTerm ) + { + // InternalVampireLanguage.g:1604:2: ( ruleVLSDefinedTerm ) + // InternalVampireLanguage.g:1605:3: ruleVLSDefinedTerm + { + before(grammarAccess.getVLSFofTermAccess().getVLSDefinedTermParserRuleCall_2()); + pushFollow(FOLLOW_2); + ruleVLSDefinedTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFofTermAccess().getVLSDefinedTermParserRuleCall_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofTerm__Alternatives" + + + // $ANTLR start "rule__VLSFunctionAsTerm__FunctorAlternatives_0_0" + // InternalVampireLanguage.g:1614:1: rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 : ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( RULE_DOLLAR_ID ) | ( RULE_DOUBLE_DOLLAR_ID ) ); + public final void rule__VLSFunctionAsTerm__FunctorAlternatives_0_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1618:1: ( ( RULE_LOWER_WORD_ID ) | ( RULE_SINGLE_QUOTE ) | ( RULE_DOLLAR_ID ) | ( RULE_DOUBLE_DOLLAR_ID ) ) + int alt27=4; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt27=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt27=2; + } + break; + case RULE_DOLLAR_ID: + { + alt27=3; + } + break; + case RULE_DOUBLE_DOLLAR_ID: + { + alt27=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 27, 0, input); + + throw nvae; + } + + switch (alt27) { + case 1 : + // InternalVampireLanguage.g:1619:2: ( RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:1619:2: ( RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:1620:3: RULE_LOWER_WORD_ID + { + before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0()); + match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1625:2: ( RULE_SINGLE_QUOTE ) + { + // InternalVampireLanguage.g:1625:2: ( RULE_SINGLE_QUOTE ) + // InternalVampireLanguage.g:1626:3: RULE_SINGLE_QUOTE + { + before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1()); + match(input,RULE_SINGLE_QUOTE,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1()); + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1631:2: ( RULE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:1631:2: ( RULE_DOLLAR_ID ) + // InternalVampireLanguage.g:1632:3: RULE_DOLLAR_ID + { + before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOLLAR_IDTerminalRuleCall_0_0_2()); + match(input,RULE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOLLAR_IDTerminalRuleCall_0_0_2()); + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1637:2: ( RULE_DOUBLE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:1637:2: ( RULE_DOUBLE_DOLLAR_ID ) + // InternalVampireLanguage.g:1638:3: RULE_DOUBLE_DOLLAR_ID + { + before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3()); + match(input,RULE_DOUBLE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__FunctorAlternatives_0_0" + + + // $ANTLR start "rule__VLSDefinedTerm__Alternatives" + // InternalVampireLanguage.g:1647:1: rule__VLSDefinedTerm__Alternatives : ( ( ( rule__VLSDefinedTerm__Group_0__0 ) ) | ( ( rule__VLSDefinedTerm__Group_1__0 ) ) ); + public final void rule__VLSDefinedTerm__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1651:1: ( ( ( rule__VLSDefinedTerm__Group_0__0 ) ) | ( ( rule__VLSDefinedTerm__Group_1__0 ) ) ) + int alt28=2; + int LA28_0 = input.LA(1); + + if ( (LA28_0==RULE_SIGNED_LITERAL) ) { + alt28=1; + } + else if ( (LA28_0==RULE_DOUBLE_QUOTE) ) { + alt28=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 28, 0, input); + + throw nvae; + } + switch (alt28) { + case 1 : + // InternalVampireLanguage.g:1652:2: ( ( rule__VLSDefinedTerm__Group_0__0 ) ) + { + // InternalVampireLanguage.g:1652:2: ( ( rule__VLSDefinedTerm__Group_0__0 ) ) + // InternalVampireLanguage.g:1653:3: ( rule__VLSDefinedTerm__Group_0__0 ) + { + before(grammarAccess.getVLSDefinedTermAccess().getGroup_0()); + // InternalVampireLanguage.g:1654:3: ( rule__VLSDefinedTerm__Group_0__0 ) + // InternalVampireLanguage.g:1654:4: rule__VLSDefinedTerm__Group_0__0 + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Group_0__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSDefinedTermAccess().getGroup_0()); + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1658:2: ( ( rule__VLSDefinedTerm__Group_1__0 ) ) + { + // InternalVampireLanguage.g:1658:2: ( ( rule__VLSDefinedTerm__Group_1__0 ) ) + // InternalVampireLanguage.g:1659:3: ( rule__VLSDefinedTerm__Group_1__0 ) + { + before(grammarAccess.getVLSDefinedTermAccess().getGroup_1()); + // InternalVampireLanguage.g:1660:3: ( rule__VLSDefinedTerm__Group_1__0 ) + // InternalVampireLanguage.g:1660:4: rule__VLSDefinedTerm__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Group_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSDefinedTermAccess().getGroup_1()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Alternatives" + + + // $ANTLR start "rule__VLSConfirmations__Group_0__0" + // InternalVampireLanguage.g:1668:1: rule__VLSConfirmations__Group_0__0 : rule__VLSConfirmations__Group_0__0__Impl rule__VLSConfirmations__Group_0__1 ; + public final void rule__VLSConfirmations__Group_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1672:1: ( rule__VLSConfirmations__Group_0__0__Impl rule__VLSConfirmations__Group_0__1 ) + // InternalVampireLanguage.g:1673:2: rule__VLSConfirmations__Group_0__0__Impl rule__VLSConfirmations__Group_0__1 + { + pushFollow(FOLLOW_6); + rule__VLSConfirmations__Group_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_0__0" + + + // $ANTLR start "rule__VLSConfirmations__Group_0__0__Impl" + // InternalVampireLanguage.g:1680:1: rule__VLSConfirmations__Group_0__0__Impl : ( () ) ; + public final void rule__VLSConfirmations__Group_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1684:1: ( ( () ) ) + // InternalVampireLanguage.g:1685:1: ( () ) + { + // InternalVampireLanguage.g:1685:1: ( () ) + // InternalVampireLanguage.g:1686:2: () + { + before(grammarAccess.getVLSConfirmationsAccess().getVLSSatisfiableAction_0_0()); + // InternalVampireLanguage.g:1687:2: () + // InternalVampireLanguage.g:1687:3: + { + } + + after(grammarAccess.getVLSConfirmationsAccess().getVLSSatisfiableAction_0_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_0__0__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_0__1" + // InternalVampireLanguage.g:1695:1: rule__VLSConfirmations__Group_0__1 : rule__VLSConfirmations__Group_0__1__Impl ; + public final void rule__VLSConfirmations__Group_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1699:1: ( rule__VLSConfirmations__Group_0__1__Impl ) + // InternalVampireLanguage.g:1700:2: rule__VLSConfirmations__Group_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_0__1" + + + // $ANTLR start "rule__VLSConfirmations__Group_0__1__Impl" + // InternalVampireLanguage.g:1706:1: rule__VLSConfirmations__Group_0__1__Impl : ( 'Satisfiable!' ) ; + public final void rule__VLSConfirmations__Group_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1710:1: ( ( 'Satisfiable!' ) ) + // InternalVampireLanguage.g:1711:1: ( 'Satisfiable!' ) + { + // InternalVampireLanguage.g:1711:1: ( 'Satisfiable!' ) + // InternalVampireLanguage.g:1712:2: 'Satisfiable!' + { + before(grammarAccess.getVLSConfirmationsAccess().getSatisfiableKeyword_0_1()); + match(input,39,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getSatisfiableKeyword_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_0__1__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__0" + // InternalVampireLanguage.g:1722:1: rule__VLSConfirmations__Group_1__0 : rule__VLSConfirmations__Group_1__0__Impl rule__VLSConfirmations__Group_1__1 ; + public final void rule__VLSConfirmations__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1726:1: ( rule__VLSConfirmations__Group_1__0__Impl rule__VLSConfirmations__Group_1__1 ) + // InternalVampireLanguage.g:1727:2: rule__VLSConfirmations__Group_1__0__Impl rule__VLSConfirmations__Group_1__1 + { + pushFollow(FOLLOW_7); + rule__VLSConfirmations__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__0" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__0__Impl" + // InternalVampireLanguage.g:1734:1: rule__VLSConfirmations__Group_1__0__Impl : ( () ) ; + public final void rule__VLSConfirmations__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1738:1: ( ( () ) ) + // InternalVampireLanguage.g:1739:1: ( () ) + { + // InternalVampireLanguage.g:1739:1: ( () ) + // InternalVampireLanguage.g:1740:2: () + { + before(grammarAccess.getVLSConfirmationsAccess().getVLSWarningAction_1_0()); + // InternalVampireLanguage.g:1741:2: () + // InternalVampireLanguage.g:1741:3: + { + } + + after(grammarAccess.getVLSConfirmationsAccess().getVLSWarningAction_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__1" + // InternalVampireLanguage.g:1749:1: rule__VLSConfirmations__Group_1__1 : rule__VLSConfirmations__Group_1__1__Impl rule__VLSConfirmations__Group_1__2 ; + public final void rule__VLSConfirmations__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1753:1: ( rule__VLSConfirmations__Group_1__1__Impl rule__VLSConfirmations__Group_1__2 ) + // InternalVampireLanguage.g:1754:2: rule__VLSConfirmations__Group_1__1__Impl rule__VLSConfirmations__Group_1__2 + { + pushFollow(FOLLOW_8); + rule__VLSConfirmations__Group_1__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__1" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__1__Impl" + // InternalVampireLanguage.g:1761:1: rule__VLSConfirmations__Group_1__1__Impl : ( 'WARNING!' ) ; + public final void rule__VLSConfirmations__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1765:1: ( ( 'WARNING!' ) ) + // InternalVampireLanguage.g:1766:1: ( 'WARNING!' ) + { + // InternalVampireLanguage.g:1766:1: ( 'WARNING!' ) + // InternalVampireLanguage.g:1767:2: 'WARNING!' + { + before(grammarAccess.getVLSConfirmationsAccess().getWARNINGKeyword_1_1()); + match(input,40,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getWARNINGKeyword_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__2" + // InternalVampireLanguage.g:1776:1: rule__VLSConfirmations__Group_1__2 : rule__VLSConfirmations__Group_1__2__Impl rule__VLSConfirmations__Group_1__3 ; + public final void rule__VLSConfirmations__Group_1__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1780:1: ( rule__VLSConfirmations__Group_1__2__Impl rule__VLSConfirmations__Group_1__3 ) + // InternalVampireLanguage.g:1781:2: rule__VLSConfirmations__Group_1__2__Impl rule__VLSConfirmations__Group_1__3 + { + pushFollow(FOLLOW_9); + rule__VLSConfirmations__Group_1__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__2" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__2__Impl" + // InternalVampireLanguage.g:1788:1: rule__VLSConfirmations__Group_1__2__Impl : ( 'Could' ) ; + public final void rule__VLSConfirmations__Group_1__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1792:1: ( ( 'Could' ) ) + // InternalVampireLanguage.g:1793:1: ( 'Could' ) + { + // InternalVampireLanguage.g:1793:1: ( 'Could' ) + // InternalVampireLanguage.g:1794:2: 'Could' + { + before(grammarAccess.getVLSConfirmationsAccess().getCouldKeyword_1_2()); + match(input,41,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getCouldKeyword_1_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__2__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__3" + // InternalVampireLanguage.g:1803:1: rule__VLSConfirmations__Group_1__3 : rule__VLSConfirmations__Group_1__3__Impl rule__VLSConfirmations__Group_1__4 ; + public final void rule__VLSConfirmations__Group_1__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1807:1: ( rule__VLSConfirmations__Group_1__3__Impl rule__VLSConfirmations__Group_1__4 ) + // InternalVampireLanguage.g:1808:2: rule__VLSConfirmations__Group_1__3__Impl rule__VLSConfirmations__Group_1__4 + { + pushFollow(FOLLOW_10); + rule__VLSConfirmations__Group_1__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__3" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__3__Impl" + // InternalVampireLanguage.g:1815:1: rule__VLSConfirmations__Group_1__3__Impl : ( 'not' ) ; + public final void rule__VLSConfirmations__Group_1__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1819:1: ( ( 'not' ) ) + // InternalVampireLanguage.g:1820:1: ( 'not' ) + { + // InternalVampireLanguage.g:1820:1: ( 'not' ) + // InternalVampireLanguage.g:1821:2: 'not' + { + before(grammarAccess.getVLSConfirmationsAccess().getNotKeyword_1_3()); + match(input,42,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getNotKeyword_1_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__3__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__4" + // InternalVampireLanguage.g:1830:1: rule__VLSConfirmations__Group_1__4 : rule__VLSConfirmations__Group_1__4__Impl rule__VLSConfirmations__Group_1__5 ; + public final void rule__VLSConfirmations__Group_1__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1834:1: ( rule__VLSConfirmations__Group_1__4__Impl rule__VLSConfirmations__Group_1__5 ) + // InternalVampireLanguage.g:1835:2: rule__VLSConfirmations__Group_1__4__Impl rule__VLSConfirmations__Group_1__5 + { + pushFollow(FOLLOW_11); + rule__VLSConfirmations__Group_1__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__4" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__4__Impl" + // InternalVampireLanguage.g:1842:1: rule__VLSConfirmations__Group_1__4__Impl : ( 'set' ) ; + public final void rule__VLSConfirmations__Group_1__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1846:1: ( ( 'set' ) ) + // InternalVampireLanguage.g:1847:1: ( 'set' ) + { + // InternalVampireLanguage.g:1847:1: ( 'set' ) + // InternalVampireLanguage.g:1848:2: 'set' + { + before(grammarAccess.getVLSConfirmationsAccess().getSetKeyword_1_4()); + match(input,43,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getSetKeyword_1_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__4__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__5" + // InternalVampireLanguage.g:1857:1: rule__VLSConfirmations__Group_1__5 : rule__VLSConfirmations__Group_1__5__Impl rule__VLSConfirmations__Group_1__6 ; + public final void rule__VLSConfirmations__Group_1__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1861:1: ( rule__VLSConfirmations__Group_1__5__Impl rule__VLSConfirmations__Group_1__6 ) + // InternalVampireLanguage.g:1862:2: rule__VLSConfirmations__Group_1__5__Impl rule__VLSConfirmations__Group_1__6 + { + pushFollow(FOLLOW_12); + rule__VLSConfirmations__Group_1__5__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__6(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__5" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__5__Impl" + // InternalVampireLanguage.g:1869:1: rule__VLSConfirmations__Group_1__5__Impl : ( 'resource' ) ; + public final void rule__VLSConfirmations__Group_1__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1873:1: ( ( 'resource' ) ) + // InternalVampireLanguage.g:1874:1: ( 'resource' ) + { + // InternalVampireLanguage.g:1874:1: ( 'resource' ) + // InternalVampireLanguage.g:1875:2: 'resource' + { + before(grammarAccess.getVLSConfirmationsAccess().getResourceKeyword_1_5()); + match(input,44,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getResourceKeyword_1_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__5__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__6" + // InternalVampireLanguage.g:1884:1: rule__VLSConfirmations__Group_1__6 : rule__VLSConfirmations__Group_1__6__Impl rule__VLSConfirmations__Group_1__7 ; + public final void rule__VLSConfirmations__Group_1__6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1888:1: ( rule__VLSConfirmations__Group_1__6__Impl rule__VLSConfirmations__Group_1__7 ) + // InternalVampireLanguage.g:1889:2: rule__VLSConfirmations__Group_1__6__Impl rule__VLSConfirmations__Group_1__7 + { + pushFollow(FOLLOW_13); + rule__VLSConfirmations__Group_1__6__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__7(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__6" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__6__Impl" + // InternalVampireLanguage.g:1896:1: rule__VLSConfirmations__Group_1__6__Impl : ( 'limit:' ) ; + public final void rule__VLSConfirmations__Group_1__6__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1900:1: ( ( 'limit:' ) ) + // InternalVampireLanguage.g:1901:1: ( 'limit:' ) + { + // InternalVampireLanguage.g:1901:1: ( 'limit:' ) + // InternalVampireLanguage.g:1902:2: 'limit:' + { + before(grammarAccess.getVLSConfirmationsAccess().getLimitKeyword_1_6()); + match(input,45,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getLimitKeyword_1_6()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__6__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__7" + // InternalVampireLanguage.g:1911:1: rule__VLSConfirmations__Group_1__7 : rule__VLSConfirmations__Group_1__7__Impl rule__VLSConfirmations__Group_1__8 ; + public final void rule__VLSConfirmations__Group_1__7() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1915:1: ( rule__VLSConfirmations__Group_1__7__Impl rule__VLSConfirmations__Group_1__8 ) + // InternalVampireLanguage.g:1916:2: rule__VLSConfirmations__Group_1__7__Impl rule__VLSConfirmations__Group_1__8 + { + pushFollow(FOLLOW_14); + rule__VLSConfirmations__Group_1__7__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__8(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__7" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__7__Impl" + // InternalVampireLanguage.g:1923:1: rule__VLSConfirmations__Group_1__7__Impl : ( 'Virtual' ) ; + public final void rule__VLSConfirmations__Group_1__7__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1927:1: ( ( 'Virtual' ) ) + // InternalVampireLanguage.g:1928:1: ( 'Virtual' ) + { + // InternalVampireLanguage.g:1928:1: ( 'Virtual' ) + // InternalVampireLanguage.g:1929:2: 'Virtual' + { + before(grammarAccess.getVLSConfirmationsAccess().getVirtualKeyword_1_7()); + match(input,46,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getVirtualKeyword_1_7()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__7__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__8" + // InternalVampireLanguage.g:1938:1: rule__VLSConfirmations__Group_1__8 : rule__VLSConfirmations__Group_1__8__Impl ; + public final void rule__VLSConfirmations__Group_1__8() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1942:1: ( rule__VLSConfirmations__Group_1__8__Impl ) + // InternalVampireLanguage.g:1943:2: rule__VLSConfirmations__Group_1__8__Impl + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_1__8__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__8" + + + // $ANTLR start "rule__VLSConfirmations__Group_1__8__Impl" + // InternalVampireLanguage.g:1949:1: rule__VLSConfirmations__Group_1__8__Impl : ( 'memory.' ) ; + public final void rule__VLSConfirmations__Group_1__8__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1953:1: ( ( 'memory.' ) ) + // InternalVampireLanguage.g:1954:1: ( 'memory.' ) + { + // InternalVampireLanguage.g:1954:1: ( 'memory.' ) + // InternalVampireLanguage.g:1955:2: 'memory.' + { + before(grammarAccess.getVLSConfirmationsAccess().getMemoryKeyword_1_8()); + match(input,47,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getMemoryKeyword_1_8()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_1__8__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__0" + // InternalVampireLanguage.g:1965:1: rule__VLSConfirmations__Group_2__0 : rule__VLSConfirmations__Group_2__0__Impl rule__VLSConfirmations__Group_2__1 ; + public final void rule__VLSConfirmations__Group_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1969:1: ( rule__VLSConfirmations__Group_2__0__Impl rule__VLSConfirmations__Group_2__1 ) + // InternalVampireLanguage.g:1970:2: rule__VLSConfirmations__Group_2__0__Impl rule__VLSConfirmations__Group_2__1 + { + pushFollow(FOLLOW_15); + rule__VLSConfirmations__Group_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__0" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__0__Impl" + // InternalVampireLanguage.g:1977:1: rule__VLSConfirmations__Group_2__0__Impl : ( () ) ; + public final void rule__VLSConfirmations__Group_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1981:1: ( ( () ) ) + // InternalVampireLanguage.g:1982:1: ( () ) + { + // InternalVampireLanguage.g:1982:1: ( () ) + // InternalVampireLanguage.g:1983:2: () + { + before(grammarAccess.getVLSConfirmationsAccess().getVLSTryingAction_2_0()); + // InternalVampireLanguage.g:1984:2: () + // InternalVampireLanguage.g:1984:3: + { + } + + after(grammarAccess.getVLSConfirmationsAccess().getVLSTryingAction_2_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__0__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__1" + // InternalVampireLanguage.g:1992:1: rule__VLSConfirmations__Group_2__1 : rule__VLSConfirmations__Group_2__1__Impl rule__VLSConfirmations__Group_2__2 ; + public final void rule__VLSConfirmations__Group_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:1996:1: ( rule__VLSConfirmations__Group_2__1__Impl rule__VLSConfirmations__Group_2__2 ) + // InternalVampireLanguage.g:1997:2: rule__VLSConfirmations__Group_2__1__Impl rule__VLSConfirmations__Group_2__2 + { + pushFollow(FOLLOW_16); + rule__VLSConfirmations__Group_2__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_2__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__1" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__1__Impl" + // InternalVampireLanguage.g:2004:1: rule__VLSConfirmations__Group_2__1__Impl : ( 'TRYING' ) ; + public final void rule__VLSConfirmations__Group_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2008:1: ( ( 'TRYING' ) ) + // InternalVampireLanguage.g:2009:1: ( 'TRYING' ) + { + // InternalVampireLanguage.g:2009:1: ( 'TRYING' ) + // InternalVampireLanguage.g:2010:2: 'TRYING' + { + before(grammarAccess.getVLSConfirmationsAccess().getTRYINGKeyword_2_1()); + match(input,48,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getTRYINGKeyword_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__1__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__2" + // InternalVampireLanguage.g:2019:1: rule__VLSConfirmations__Group_2__2 : rule__VLSConfirmations__Group_2__2__Impl rule__VLSConfirmations__Group_2__3 ; + public final void rule__VLSConfirmations__Group_2__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2023:1: ( rule__VLSConfirmations__Group_2__2__Impl rule__VLSConfirmations__Group_2__3 ) + // InternalVampireLanguage.g:2024:2: rule__VLSConfirmations__Group_2__2__Impl rule__VLSConfirmations__Group_2__3 + { + pushFollow(FOLLOW_17); + rule__VLSConfirmations__Group_2__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_2__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__2" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__2__Impl" + // InternalVampireLanguage.g:2031:1: rule__VLSConfirmations__Group_2__2__Impl : ( '[' ) ; + public final void rule__VLSConfirmations__Group_2__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2035:1: ( ( '[' ) ) + // InternalVampireLanguage.g:2036:1: ( '[' ) + { + // InternalVampireLanguage.g:2036:1: ( '[' ) + // InternalVampireLanguage.g:2037:2: '[' + { + before(grammarAccess.getVLSConfirmationsAccess().getLeftSquareBracketKeyword_2_2()); + match(input,49,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getLeftSquareBracketKeyword_2_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__2__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__3" + // InternalVampireLanguage.g:2046:1: rule__VLSConfirmations__Group_2__3 : rule__VLSConfirmations__Group_2__3__Impl rule__VLSConfirmations__Group_2__4 ; + public final void rule__VLSConfirmations__Group_2__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2050:1: ( rule__VLSConfirmations__Group_2__3__Impl rule__VLSConfirmations__Group_2__4 ) + // InternalVampireLanguage.g:2051:2: rule__VLSConfirmations__Group_2__3__Impl rule__VLSConfirmations__Group_2__4 + { + pushFollow(FOLLOW_18); + rule__VLSConfirmations__Group_2__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_2__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__3" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__3__Impl" + // InternalVampireLanguage.g:2058:1: rule__VLSConfirmations__Group_2__3__Impl : ( ( rule__VLSConfirmations__NameAssignment_2_3 ) ) ; + public final void rule__VLSConfirmations__Group_2__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2062:1: ( ( ( rule__VLSConfirmations__NameAssignment_2_3 ) ) ) + // InternalVampireLanguage.g:2063:1: ( ( rule__VLSConfirmations__NameAssignment_2_3 ) ) + { + // InternalVampireLanguage.g:2063:1: ( ( rule__VLSConfirmations__NameAssignment_2_3 ) ) + // InternalVampireLanguage.g:2064:2: ( rule__VLSConfirmations__NameAssignment_2_3 ) + { + before(grammarAccess.getVLSConfirmationsAccess().getNameAssignment_2_3()); + // InternalVampireLanguage.g:2065:2: ( rule__VLSConfirmations__NameAssignment_2_3 ) + // InternalVampireLanguage.g:2065:3: rule__VLSConfirmations__NameAssignment_2_3 + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__NameAssignment_2_3(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSConfirmationsAccess().getNameAssignment_2_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__3__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__4" + // InternalVampireLanguage.g:2073:1: rule__VLSConfirmations__Group_2__4 : rule__VLSConfirmations__Group_2__4__Impl ; + public final void rule__VLSConfirmations__Group_2__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2077:1: ( rule__VLSConfirmations__Group_2__4__Impl ) + // InternalVampireLanguage.g:2078:2: rule__VLSConfirmations__Group_2__4__Impl + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_2__4__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__4" + + + // $ANTLR start "rule__VLSConfirmations__Group_2__4__Impl" + // InternalVampireLanguage.g:2084:1: rule__VLSConfirmations__Group_2__4__Impl : ( ']' ) ; + public final void rule__VLSConfirmations__Group_2__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2088:1: ( ( ']' ) ) + // InternalVampireLanguage.g:2089:1: ( ']' ) + { + // InternalVampireLanguage.g:2089:1: ( ']' ) + // InternalVampireLanguage.g:2090:2: ']' + { + before(grammarAccess.getVLSConfirmationsAccess().getRightSquareBracketKeyword_2_4()); + match(input,50,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getRightSquareBracketKeyword_2_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_2__4__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__0" + // InternalVampireLanguage.g:2100:1: rule__VLSConfirmations__Group_3__0 : rule__VLSConfirmations__Group_3__0__Impl rule__VLSConfirmations__Group_3__1 ; + public final void rule__VLSConfirmations__Group_3__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2104:1: ( rule__VLSConfirmations__Group_3__0__Impl rule__VLSConfirmations__Group_3__1 ) + // InternalVampireLanguage.g:2105:2: rule__VLSConfirmations__Group_3__0__Impl rule__VLSConfirmations__Group_3__1 + { + pushFollow(FOLLOW_19); + rule__VLSConfirmations__Group_3__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_3__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__0" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__0__Impl" + // InternalVampireLanguage.g:2112:1: rule__VLSConfirmations__Group_3__0__Impl : ( () ) ; + public final void rule__VLSConfirmations__Group_3__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2116:1: ( ( () ) ) + // InternalVampireLanguage.g:2117:1: ( () ) + { + // InternalVampireLanguage.g:2117:1: ( () ) + // InternalVampireLanguage.g:2118:2: () + { + before(grammarAccess.getVLSConfirmationsAccess().getVLSFiniteModelAction_3_0()); + // InternalVampireLanguage.g:2119:2: () + // InternalVampireLanguage.g:2119:3: + { + } + + after(grammarAccess.getVLSConfirmationsAccess().getVLSFiniteModelAction_3_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__0__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__1" + // InternalVampireLanguage.g:2127:1: rule__VLSConfirmations__Group_3__1 : rule__VLSConfirmations__Group_3__1__Impl rule__VLSConfirmations__Group_3__2 ; + public final void rule__VLSConfirmations__Group_3__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2131:1: ( rule__VLSConfirmations__Group_3__1__Impl rule__VLSConfirmations__Group_3__2 ) + // InternalVampireLanguage.g:2132:2: rule__VLSConfirmations__Group_3__1__Impl rule__VLSConfirmations__Group_3__2 + { + pushFollow(FOLLOW_20); + rule__VLSConfirmations__Group_3__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_3__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__1" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__1__Impl" + // InternalVampireLanguage.g:2139:1: rule__VLSConfirmations__Group_3__1__Impl : ( 'Finite' ) ; + public final void rule__VLSConfirmations__Group_3__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2143:1: ( ( 'Finite' ) ) + // InternalVampireLanguage.g:2144:1: ( 'Finite' ) + { + // InternalVampireLanguage.g:2144:1: ( 'Finite' ) + // InternalVampireLanguage.g:2145:2: 'Finite' + { + before(grammarAccess.getVLSConfirmationsAccess().getFiniteKeyword_3_1()); + match(input,51,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getFiniteKeyword_3_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__1__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__2" + // InternalVampireLanguage.g:2154:1: rule__VLSConfirmations__Group_3__2 : rule__VLSConfirmations__Group_3__2__Impl rule__VLSConfirmations__Group_3__3 ; + public final void rule__VLSConfirmations__Group_3__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2158:1: ( rule__VLSConfirmations__Group_3__2__Impl rule__VLSConfirmations__Group_3__3 ) + // InternalVampireLanguage.g:2159:2: rule__VLSConfirmations__Group_3__2__Impl rule__VLSConfirmations__Group_3__3 + { + pushFollow(FOLLOW_21); + rule__VLSConfirmations__Group_3__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_3__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__2" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__2__Impl" + // InternalVampireLanguage.g:2166:1: rule__VLSConfirmations__Group_3__2__Impl : ( 'Model' ) ; + public final void rule__VLSConfirmations__Group_3__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2170:1: ( ( 'Model' ) ) + // InternalVampireLanguage.g:2171:1: ( 'Model' ) + { + // InternalVampireLanguage.g:2171:1: ( 'Model' ) + // InternalVampireLanguage.g:2172:2: 'Model' + { + before(grammarAccess.getVLSConfirmationsAccess().getModelKeyword_3_2()); + match(input,52,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getModelKeyword_3_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__2__Impl" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__3" + // InternalVampireLanguage.g:2181:1: rule__VLSConfirmations__Group_3__3 : rule__VLSConfirmations__Group_3__3__Impl ; + public final void rule__VLSConfirmations__Group_3__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2185:1: ( rule__VLSConfirmations__Group_3__3__Impl ) + // InternalVampireLanguage.g:2186:2: rule__VLSConfirmations__Group_3__3__Impl + { + pushFollow(FOLLOW_2); + rule__VLSConfirmations__Group_3__3__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__3" + + + // $ANTLR start "rule__VLSConfirmations__Group_3__3__Impl" + // InternalVampireLanguage.g:2192:1: rule__VLSConfirmations__Group_3__3__Impl : ( 'Found!' ) ; + public final void rule__VLSConfirmations__Group_3__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2196:1: ( ( 'Found!' ) ) + // InternalVampireLanguage.g:2197:1: ( 'Found!' ) + { + // InternalVampireLanguage.g:2197:1: ( 'Found!' ) + // InternalVampireLanguage.g:2198:2: 'Found!' + { + before(grammarAccess.getVLSConfirmationsAccess().getFoundKeyword_3_3()); + match(input,53,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getFoundKeyword_3_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__Group_3__3__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__0" + // InternalVampireLanguage.g:2208:1: rule__VLSFofFormula__Group__0 : rule__VLSFofFormula__Group__0__Impl rule__VLSFofFormula__Group__1 ; + public final void rule__VLSFofFormula__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2212:1: ( rule__VLSFofFormula__Group__0__Impl rule__VLSFofFormula__Group__1 ) + // InternalVampireLanguage.g:2213:2: rule__VLSFofFormula__Group__0__Impl rule__VLSFofFormula__Group__1 + { + pushFollow(FOLLOW_22); + rule__VLSFofFormula__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__0" + + + // $ANTLR start "rule__VLSFofFormula__Group__0__Impl" + // InternalVampireLanguage.g:2220:1: rule__VLSFofFormula__Group__0__Impl : ( 'fof' ) ; + public final void rule__VLSFofFormula__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2224:1: ( ( 'fof' ) ) + // InternalVampireLanguage.g:2225:1: ( 'fof' ) + { + // InternalVampireLanguage.g:2225:1: ( 'fof' ) + // InternalVampireLanguage.g:2226:2: 'fof' + { + before(grammarAccess.getVLSFofFormulaAccess().getFofKeyword_0()); + match(input,54,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getFofKeyword_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__0__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__1" + // InternalVampireLanguage.g:2235:1: rule__VLSFofFormula__Group__1 : rule__VLSFofFormula__Group__1__Impl rule__VLSFofFormula__Group__2 ; + public final void rule__VLSFofFormula__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2239:1: ( rule__VLSFofFormula__Group__1__Impl rule__VLSFofFormula__Group__2 ) + // InternalVampireLanguage.g:2240:2: rule__VLSFofFormula__Group__1__Impl rule__VLSFofFormula__Group__2 + { + pushFollow(FOLLOW_23); + rule__VLSFofFormula__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__1" + + + // $ANTLR start "rule__VLSFofFormula__Group__1__Impl" + // InternalVampireLanguage.g:2247:1: rule__VLSFofFormula__Group__1__Impl : ( '(' ) ; + public final void rule__VLSFofFormula__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2251:1: ( ( '(' ) ) + // InternalVampireLanguage.g:2252:1: ( '(' ) + { + // InternalVampireLanguage.g:2252:1: ( '(' ) + // InternalVampireLanguage.g:2253:2: '(' + { + before(grammarAccess.getVLSFofFormulaAccess().getLeftParenthesisKeyword_1()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getLeftParenthesisKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__1__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__2" + // InternalVampireLanguage.g:2262:1: rule__VLSFofFormula__Group__2 : rule__VLSFofFormula__Group__2__Impl rule__VLSFofFormula__Group__3 ; + public final void rule__VLSFofFormula__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2266:1: ( rule__VLSFofFormula__Group__2__Impl rule__VLSFofFormula__Group__3 ) + // InternalVampireLanguage.g:2267:2: rule__VLSFofFormula__Group__2__Impl rule__VLSFofFormula__Group__3 + { + pushFollow(FOLLOW_24); + rule__VLSFofFormula__Group__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__2" + + + // $ANTLR start "rule__VLSFofFormula__Group__2__Impl" + // InternalVampireLanguage.g:2274:1: rule__VLSFofFormula__Group__2__Impl : ( ( rule__VLSFofFormula__NameAssignment_2 ) ) ; + public final void rule__VLSFofFormula__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2278:1: ( ( ( rule__VLSFofFormula__NameAssignment_2 ) ) ) + // InternalVampireLanguage.g:2279:1: ( ( rule__VLSFofFormula__NameAssignment_2 ) ) + { + // InternalVampireLanguage.g:2279:1: ( ( rule__VLSFofFormula__NameAssignment_2 ) ) + // InternalVampireLanguage.g:2280:2: ( rule__VLSFofFormula__NameAssignment_2 ) + { + before(grammarAccess.getVLSFofFormulaAccess().getNameAssignment_2()); + // InternalVampireLanguage.g:2281:2: ( rule__VLSFofFormula__NameAssignment_2 ) + // InternalVampireLanguage.g:2281:3: rule__VLSFofFormula__NameAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__NameAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofFormulaAccess().getNameAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__2__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__3" + // InternalVampireLanguage.g:2289:1: rule__VLSFofFormula__Group__3 : rule__VLSFofFormula__Group__3__Impl rule__VLSFofFormula__Group__4 ; + public final void rule__VLSFofFormula__Group__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2293:1: ( rule__VLSFofFormula__Group__3__Impl rule__VLSFofFormula__Group__4 ) + // InternalVampireLanguage.g:2294:2: rule__VLSFofFormula__Group__3__Impl rule__VLSFofFormula__Group__4 + { + pushFollow(FOLLOW_25); + rule__VLSFofFormula__Group__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__3" + + + // $ANTLR start "rule__VLSFofFormula__Group__3__Impl" + // InternalVampireLanguage.g:2301:1: rule__VLSFofFormula__Group__3__Impl : ( ',' ) ; + public final void rule__VLSFofFormula__Group__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2305:1: ( ( ',' ) ) + // InternalVampireLanguage.g:2306:1: ( ',' ) + { + // InternalVampireLanguage.g:2306:1: ( ',' ) + // InternalVampireLanguage.g:2307:2: ',' + { + before(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_3()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__3__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__4" + // InternalVampireLanguage.g:2316:1: rule__VLSFofFormula__Group__4 : rule__VLSFofFormula__Group__4__Impl rule__VLSFofFormula__Group__5 ; + public final void rule__VLSFofFormula__Group__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2320:1: ( rule__VLSFofFormula__Group__4__Impl rule__VLSFofFormula__Group__5 ) + // InternalVampireLanguage.g:2321:2: rule__VLSFofFormula__Group__4__Impl rule__VLSFofFormula__Group__5 + { + pushFollow(FOLLOW_24); + rule__VLSFofFormula__Group__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__4" + + + // $ANTLR start "rule__VLSFofFormula__Group__4__Impl" + // InternalVampireLanguage.g:2328:1: rule__VLSFofFormula__Group__4__Impl : ( ( rule__VLSFofFormula__FofRoleAssignment_4 ) ) ; + public final void rule__VLSFofFormula__Group__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2332:1: ( ( ( rule__VLSFofFormula__FofRoleAssignment_4 ) ) ) + // InternalVampireLanguage.g:2333:1: ( ( rule__VLSFofFormula__FofRoleAssignment_4 ) ) + { + // InternalVampireLanguage.g:2333:1: ( ( rule__VLSFofFormula__FofRoleAssignment_4 ) ) + // InternalVampireLanguage.g:2334:2: ( rule__VLSFofFormula__FofRoleAssignment_4 ) + { + before(grammarAccess.getVLSFofFormulaAccess().getFofRoleAssignment_4()); + // InternalVampireLanguage.g:2335:2: ( rule__VLSFofFormula__FofRoleAssignment_4 ) + // InternalVampireLanguage.g:2335:3: rule__VLSFofFormula__FofRoleAssignment_4 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__FofRoleAssignment_4(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofFormulaAccess().getFofRoleAssignment_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__4__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__5" + // InternalVampireLanguage.g:2343:1: rule__VLSFofFormula__Group__5 : rule__VLSFofFormula__Group__5__Impl rule__VLSFofFormula__Group__6 ; + public final void rule__VLSFofFormula__Group__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2347:1: ( rule__VLSFofFormula__Group__5__Impl rule__VLSFofFormula__Group__6 ) + // InternalVampireLanguage.g:2348:2: rule__VLSFofFormula__Group__5__Impl rule__VLSFofFormula__Group__6 + { + pushFollow(FOLLOW_26); + rule__VLSFofFormula__Group__5__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__6(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__5" + + + // $ANTLR start "rule__VLSFofFormula__Group__5__Impl" + // InternalVampireLanguage.g:2355:1: rule__VLSFofFormula__Group__5__Impl : ( ',' ) ; + public final void rule__VLSFofFormula__Group__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2359:1: ( ( ',' ) ) + // InternalVampireLanguage.g:2360:1: ( ',' ) + { + // InternalVampireLanguage.g:2360:1: ( ',' ) + // InternalVampireLanguage.g:2361:2: ',' + { + before(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_5()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__5__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__6" + // InternalVampireLanguage.g:2370:1: rule__VLSFofFormula__Group__6 : rule__VLSFofFormula__Group__6__Impl rule__VLSFofFormula__Group__7 ; + public final void rule__VLSFofFormula__Group__6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2374:1: ( rule__VLSFofFormula__Group__6__Impl rule__VLSFofFormula__Group__7 ) + // InternalVampireLanguage.g:2375:2: rule__VLSFofFormula__Group__6__Impl rule__VLSFofFormula__Group__7 + { + pushFollow(FOLLOW_27); + rule__VLSFofFormula__Group__6__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__7(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__6" + + + // $ANTLR start "rule__VLSFofFormula__Group__6__Impl" + // InternalVampireLanguage.g:2382:1: rule__VLSFofFormula__Group__6__Impl : ( ( rule__VLSFofFormula__FofFormulaAssignment_6 ) ) ; + public final void rule__VLSFofFormula__Group__6__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2386:1: ( ( ( rule__VLSFofFormula__FofFormulaAssignment_6 ) ) ) + // InternalVampireLanguage.g:2387:1: ( ( rule__VLSFofFormula__FofFormulaAssignment_6 ) ) + { + // InternalVampireLanguage.g:2387:1: ( ( rule__VLSFofFormula__FofFormulaAssignment_6 ) ) + // InternalVampireLanguage.g:2388:2: ( rule__VLSFofFormula__FofFormulaAssignment_6 ) + { + before(grammarAccess.getVLSFofFormulaAccess().getFofFormulaAssignment_6()); + // InternalVampireLanguage.g:2389:2: ( rule__VLSFofFormula__FofFormulaAssignment_6 ) + // InternalVampireLanguage.g:2389:3: rule__VLSFofFormula__FofFormulaAssignment_6 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__FofFormulaAssignment_6(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofFormulaAccess().getFofFormulaAssignment_6()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__6__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__7" + // InternalVampireLanguage.g:2397:1: rule__VLSFofFormula__Group__7 : rule__VLSFofFormula__Group__7__Impl rule__VLSFofFormula__Group__8 ; + public final void rule__VLSFofFormula__Group__7() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2401:1: ( rule__VLSFofFormula__Group__7__Impl rule__VLSFofFormula__Group__8 ) + // InternalVampireLanguage.g:2402:2: rule__VLSFofFormula__Group__7__Impl rule__VLSFofFormula__Group__8 + { + pushFollow(FOLLOW_27); + rule__VLSFofFormula__Group__7__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__8(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__7" + + + // $ANTLR start "rule__VLSFofFormula__Group__7__Impl" + // InternalVampireLanguage.g:2409:1: rule__VLSFofFormula__Group__7__Impl : ( ( rule__VLSFofFormula__Group_7__0 )? ) ; + public final void rule__VLSFofFormula__Group__7__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2413:1: ( ( ( rule__VLSFofFormula__Group_7__0 )? ) ) + // InternalVampireLanguage.g:2414:1: ( ( rule__VLSFofFormula__Group_7__0 )? ) + { + // InternalVampireLanguage.g:2414:1: ( ( rule__VLSFofFormula__Group_7__0 )? ) + // InternalVampireLanguage.g:2415:2: ( rule__VLSFofFormula__Group_7__0 )? + { + before(grammarAccess.getVLSFofFormulaAccess().getGroup_7()); + // InternalVampireLanguage.g:2416:2: ( rule__VLSFofFormula__Group_7__0 )? + int alt29=2; + int LA29_0 = input.LA(1); + + if ( (LA29_0==56) ) { + alt29=1; + } + switch (alt29) { + case 1 : + // InternalVampireLanguage.g:2416:3: rule__VLSFofFormula__Group_7__0 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group_7__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSFofFormulaAccess().getGroup_7()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__7__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__8" + // InternalVampireLanguage.g:2424:1: rule__VLSFofFormula__Group__8 : rule__VLSFofFormula__Group__8__Impl rule__VLSFofFormula__Group__9 ; + public final void rule__VLSFofFormula__Group__8() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2428:1: ( rule__VLSFofFormula__Group__8__Impl rule__VLSFofFormula__Group__9 ) + // InternalVampireLanguage.g:2429:2: rule__VLSFofFormula__Group__8__Impl rule__VLSFofFormula__Group__9 + { + pushFollow(FOLLOW_28); + rule__VLSFofFormula__Group__8__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__9(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__8" + + + // $ANTLR start "rule__VLSFofFormula__Group__8__Impl" + // InternalVampireLanguage.g:2436:1: rule__VLSFofFormula__Group__8__Impl : ( ')' ) ; + public final void rule__VLSFofFormula__Group__8__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2440:1: ( ( ')' ) ) + // InternalVampireLanguage.g:2441:1: ( ')' ) + { + // InternalVampireLanguage.g:2441:1: ( ')' ) + // InternalVampireLanguage.g:2442:2: ')' + { + before(grammarAccess.getVLSFofFormulaAccess().getRightParenthesisKeyword_8()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getRightParenthesisKeyword_8()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__8__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group__9" + // InternalVampireLanguage.g:2451:1: rule__VLSFofFormula__Group__9 : rule__VLSFofFormula__Group__9__Impl ; + public final void rule__VLSFofFormula__Group__9() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2455:1: ( rule__VLSFofFormula__Group__9__Impl ) + // InternalVampireLanguage.g:2456:2: rule__VLSFofFormula__Group__9__Impl + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group__9__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__9" + + + // $ANTLR start "rule__VLSFofFormula__Group__9__Impl" + // InternalVampireLanguage.g:2462:1: rule__VLSFofFormula__Group__9__Impl : ( '.' ) ; + public final void rule__VLSFofFormula__Group__9__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2466:1: ( ( '.' ) ) + // InternalVampireLanguage.g:2467:1: ( '.' ) + { + // InternalVampireLanguage.g:2467:1: ( '.' ) + // InternalVampireLanguage.g:2468:2: '.' + { + before(grammarAccess.getVLSFofFormulaAccess().getFullStopKeyword_9()); + match(input,58,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getFullStopKeyword_9()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group__9__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group_7__0" + // InternalVampireLanguage.g:2478:1: rule__VLSFofFormula__Group_7__0 : rule__VLSFofFormula__Group_7__0__Impl rule__VLSFofFormula__Group_7__1 ; + public final void rule__VLSFofFormula__Group_7__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2482:1: ( rule__VLSFofFormula__Group_7__0__Impl rule__VLSFofFormula__Group_7__1 ) + // InternalVampireLanguage.g:2483:2: rule__VLSFofFormula__Group_7__0__Impl rule__VLSFofFormula__Group_7__1 + { + pushFollow(FOLLOW_29); + rule__VLSFofFormula__Group_7__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group_7__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group_7__0" + + + // $ANTLR start "rule__VLSFofFormula__Group_7__0__Impl" + // InternalVampireLanguage.g:2490:1: rule__VLSFofFormula__Group_7__0__Impl : ( ',' ) ; + public final void rule__VLSFofFormula__Group_7__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2494:1: ( ( ',' ) ) + // InternalVampireLanguage.g:2495:1: ( ',' ) + { + // InternalVampireLanguage.g:2495:1: ( ',' ) + // InternalVampireLanguage.g:2496:2: ',' + { + before(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_7_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_7_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group_7__0__Impl" + + + // $ANTLR start "rule__VLSFofFormula__Group_7__1" + // InternalVampireLanguage.g:2505:1: rule__VLSFofFormula__Group_7__1 : rule__VLSFofFormula__Group_7__1__Impl ; + public final void rule__VLSFofFormula__Group_7__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2509:1: ( rule__VLSFofFormula__Group_7__1__Impl ) + // InternalVampireLanguage.g:2510:2: rule__VLSFofFormula__Group_7__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__Group_7__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group_7__1" + + + // $ANTLR start "rule__VLSFofFormula__Group_7__1__Impl" + // InternalVampireLanguage.g:2516:1: rule__VLSFofFormula__Group_7__1__Impl : ( ( rule__VLSFofFormula__AnnotationsAssignment_7_1 ) ) ; + public final void rule__VLSFofFormula__Group_7__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2520:1: ( ( ( rule__VLSFofFormula__AnnotationsAssignment_7_1 ) ) ) + // InternalVampireLanguage.g:2521:1: ( ( rule__VLSFofFormula__AnnotationsAssignment_7_1 ) ) + { + // InternalVampireLanguage.g:2521:1: ( ( rule__VLSFofFormula__AnnotationsAssignment_7_1 ) ) + // InternalVampireLanguage.g:2522:2: ( rule__VLSFofFormula__AnnotationsAssignment_7_1 ) + { + before(grammarAccess.getVLSFofFormulaAccess().getAnnotationsAssignment_7_1()); + // InternalVampireLanguage.g:2523:2: ( rule__VLSFofFormula__AnnotationsAssignment_7_1 ) + // InternalVampireLanguage.g:2523:3: rule__VLSFofFormula__AnnotationsAssignment_7_1 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__AnnotationsAssignment_7_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofFormulaAccess().getAnnotationsAssignment_7_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__Group_7__1__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__0" + // InternalVampireLanguage.g:2532:1: rule__VLSTffFormula__Group__0 : rule__VLSTffFormula__Group__0__Impl rule__VLSTffFormula__Group__1 ; + public final void rule__VLSTffFormula__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2536:1: ( rule__VLSTffFormula__Group__0__Impl rule__VLSTffFormula__Group__1 ) + // InternalVampireLanguage.g:2537:2: rule__VLSTffFormula__Group__0__Impl rule__VLSTffFormula__Group__1 + { + pushFollow(FOLLOW_22); + rule__VLSTffFormula__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__0" + + + // $ANTLR start "rule__VLSTffFormula__Group__0__Impl" + // InternalVampireLanguage.g:2544:1: rule__VLSTffFormula__Group__0__Impl : ( 'tff' ) ; + public final void rule__VLSTffFormula__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2548:1: ( ( 'tff' ) ) + // InternalVampireLanguage.g:2549:1: ( 'tff' ) + { + // InternalVampireLanguage.g:2549:1: ( 'tff' ) + // InternalVampireLanguage.g:2550:2: 'tff' + { + before(grammarAccess.getVLSTffFormulaAccess().getTffKeyword_0()); + match(input,59,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getTffKeyword_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__0__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__1" + // InternalVampireLanguage.g:2559:1: rule__VLSTffFormula__Group__1 : rule__VLSTffFormula__Group__1__Impl rule__VLSTffFormula__Group__2 ; + public final void rule__VLSTffFormula__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2563:1: ( rule__VLSTffFormula__Group__1__Impl rule__VLSTffFormula__Group__2 ) + // InternalVampireLanguage.g:2564:2: rule__VLSTffFormula__Group__1__Impl rule__VLSTffFormula__Group__2 + { + pushFollow(FOLLOW_30); + rule__VLSTffFormula__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__1" + + + // $ANTLR start "rule__VLSTffFormula__Group__1__Impl" + // InternalVampireLanguage.g:2571:1: rule__VLSTffFormula__Group__1__Impl : ( '(' ) ; + public final void rule__VLSTffFormula__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2575:1: ( ( '(' ) ) + // InternalVampireLanguage.g:2576:1: ( '(' ) + { + // InternalVampireLanguage.g:2576:1: ( '(' ) + // InternalVampireLanguage.g:2577:2: '(' + { + before(grammarAccess.getVLSTffFormulaAccess().getLeftParenthesisKeyword_1()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getLeftParenthesisKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__1__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__2" + // InternalVampireLanguage.g:2586:1: rule__VLSTffFormula__Group__2 : rule__VLSTffFormula__Group__2__Impl rule__VLSTffFormula__Group__3 ; + public final void rule__VLSTffFormula__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2590:1: ( rule__VLSTffFormula__Group__2__Impl rule__VLSTffFormula__Group__3 ) + // InternalVampireLanguage.g:2591:2: rule__VLSTffFormula__Group__2__Impl rule__VLSTffFormula__Group__3 + { + pushFollow(FOLLOW_24); + rule__VLSTffFormula__Group__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__2" + + + // $ANTLR start "rule__VLSTffFormula__Group__2__Impl" + // InternalVampireLanguage.g:2598:1: rule__VLSTffFormula__Group__2__Impl : ( ( rule__VLSTffFormula__NameAssignment_2 ) ) ; + public final void rule__VLSTffFormula__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2602:1: ( ( ( rule__VLSTffFormula__NameAssignment_2 ) ) ) + // InternalVampireLanguage.g:2603:1: ( ( rule__VLSTffFormula__NameAssignment_2 ) ) + { + // InternalVampireLanguage.g:2603:1: ( ( rule__VLSTffFormula__NameAssignment_2 ) ) + // InternalVampireLanguage.g:2604:2: ( rule__VLSTffFormula__NameAssignment_2 ) + { + before(grammarAccess.getVLSTffFormulaAccess().getNameAssignment_2()); + // InternalVampireLanguage.g:2605:2: ( rule__VLSTffFormula__NameAssignment_2 ) + // InternalVampireLanguage.g:2605:3: rule__VLSTffFormula__NameAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__NameAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffFormulaAccess().getNameAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__2__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__3" + // InternalVampireLanguage.g:2613:1: rule__VLSTffFormula__Group__3 : rule__VLSTffFormula__Group__3__Impl rule__VLSTffFormula__Group__4 ; + public final void rule__VLSTffFormula__Group__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2617:1: ( rule__VLSTffFormula__Group__3__Impl rule__VLSTffFormula__Group__4 ) + // InternalVampireLanguage.g:2618:2: rule__VLSTffFormula__Group__3__Impl rule__VLSTffFormula__Group__4 + { + pushFollow(FOLLOW_25); + rule__VLSTffFormula__Group__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__3" + + + // $ANTLR start "rule__VLSTffFormula__Group__3__Impl" + // InternalVampireLanguage.g:2625:1: rule__VLSTffFormula__Group__3__Impl : ( ',' ) ; + public final void rule__VLSTffFormula__Group__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2629:1: ( ( ',' ) ) + // InternalVampireLanguage.g:2630:1: ( ',' ) + { + // InternalVampireLanguage.g:2630:1: ( ',' ) + // InternalVampireLanguage.g:2631:2: ',' + { + before(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_3()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__3__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__4" + // InternalVampireLanguage.g:2640:1: rule__VLSTffFormula__Group__4 : rule__VLSTffFormula__Group__4__Impl rule__VLSTffFormula__Group__5 ; + public final void rule__VLSTffFormula__Group__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2644:1: ( rule__VLSTffFormula__Group__4__Impl rule__VLSTffFormula__Group__5 ) + // InternalVampireLanguage.g:2645:2: rule__VLSTffFormula__Group__4__Impl rule__VLSTffFormula__Group__5 + { + pushFollow(FOLLOW_24); + rule__VLSTffFormula__Group__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__4" + + + // $ANTLR start "rule__VLSTffFormula__Group__4__Impl" + // InternalVampireLanguage.g:2652:1: rule__VLSTffFormula__Group__4__Impl : ( ( rule__VLSTffFormula__TffRoleAssignment_4 ) ) ; + public final void rule__VLSTffFormula__Group__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2656:1: ( ( ( rule__VLSTffFormula__TffRoleAssignment_4 ) ) ) + // InternalVampireLanguage.g:2657:1: ( ( rule__VLSTffFormula__TffRoleAssignment_4 ) ) + { + // InternalVampireLanguage.g:2657:1: ( ( rule__VLSTffFormula__TffRoleAssignment_4 ) ) + // InternalVampireLanguage.g:2658:2: ( rule__VLSTffFormula__TffRoleAssignment_4 ) + { + before(grammarAccess.getVLSTffFormulaAccess().getTffRoleAssignment_4()); + // InternalVampireLanguage.g:2659:2: ( rule__VLSTffFormula__TffRoleAssignment_4 ) + // InternalVampireLanguage.g:2659:3: rule__VLSTffFormula__TffRoleAssignment_4 + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__TffRoleAssignment_4(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffFormulaAccess().getTffRoleAssignment_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__4__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__5" + // InternalVampireLanguage.g:2667:1: rule__VLSTffFormula__Group__5 : rule__VLSTffFormula__Group__5__Impl rule__VLSTffFormula__Group__6 ; + public final void rule__VLSTffFormula__Group__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2671:1: ( rule__VLSTffFormula__Group__5__Impl rule__VLSTffFormula__Group__6 ) + // InternalVampireLanguage.g:2672:2: rule__VLSTffFormula__Group__5__Impl rule__VLSTffFormula__Group__6 + { + pushFollow(FOLLOW_31); + rule__VLSTffFormula__Group__5__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__6(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__5" + + + // $ANTLR start "rule__VLSTffFormula__Group__5__Impl" + // InternalVampireLanguage.g:2679:1: rule__VLSTffFormula__Group__5__Impl : ( ',' ) ; + public final void rule__VLSTffFormula__Group__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2683:1: ( ( ',' ) ) + // InternalVampireLanguage.g:2684:1: ( ',' ) + { + // InternalVampireLanguage.g:2684:1: ( ',' ) + // InternalVampireLanguage.g:2685:2: ',' + { + before(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_5()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__5__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__6" + // InternalVampireLanguage.g:2694:1: rule__VLSTffFormula__Group__6 : rule__VLSTffFormula__Group__6__Impl rule__VLSTffFormula__Group__7 ; + public final void rule__VLSTffFormula__Group__6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2698:1: ( rule__VLSTffFormula__Group__6__Impl rule__VLSTffFormula__Group__7 ) + // InternalVampireLanguage.g:2699:2: rule__VLSTffFormula__Group__6__Impl rule__VLSTffFormula__Group__7 + { + pushFollow(FOLLOW_27); + rule__VLSTffFormula__Group__6__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__7(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__6" + + + // $ANTLR start "rule__VLSTffFormula__Group__6__Impl" + // InternalVampireLanguage.g:2706:1: rule__VLSTffFormula__Group__6__Impl : ( ( rule__VLSTffFormula__FofFormulaAssignment_6 ) ) ; + public final void rule__VLSTffFormula__Group__6__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2710:1: ( ( ( rule__VLSTffFormula__FofFormulaAssignment_6 ) ) ) + // InternalVampireLanguage.g:2711:1: ( ( rule__VLSTffFormula__FofFormulaAssignment_6 ) ) + { + // InternalVampireLanguage.g:2711:1: ( ( rule__VLSTffFormula__FofFormulaAssignment_6 ) ) + // InternalVampireLanguage.g:2712:2: ( rule__VLSTffFormula__FofFormulaAssignment_6 ) + { + before(grammarAccess.getVLSTffFormulaAccess().getFofFormulaAssignment_6()); + // InternalVampireLanguage.g:2713:2: ( rule__VLSTffFormula__FofFormulaAssignment_6 ) + // InternalVampireLanguage.g:2713:3: rule__VLSTffFormula__FofFormulaAssignment_6 + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__FofFormulaAssignment_6(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffFormulaAccess().getFofFormulaAssignment_6()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__6__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__7" + // InternalVampireLanguage.g:2721:1: rule__VLSTffFormula__Group__7 : rule__VLSTffFormula__Group__7__Impl rule__VLSTffFormula__Group__8 ; + public final void rule__VLSTffFormula__Group__7() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2725:1: ( rule__VLSTffFormula__Group__7__Impl rule__VLSTffFormula__Group__8 ) + // InternalVampireLanguage.g:2726:2: rule__VLSTffFormula__Group__7__Impl rule__VLSTffFormula__Group__8 + { + pushFollow(FOLLOW_27); + rule__VLSTffFormula__Group__7__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__8(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__7" + + + // $ANTLR start "rule__VLSTffFormula__Group__7__Impl" + // InternalVampireLanguage.g:2733:1: rule__VLSTffFormula__Group__7__Impl : ( ( rule__VLSTffFormula__Group_7__0 )? ) ; + public final void rule__VLSTffFormula__Group__7__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2737:1: ( ( ( rule__VLSTffFormula__Group_7__0 )? ) ) + // InternalVampireLanguage.g:2738:1: ( ( rule__VLSTffFormula__Group_7__0 )? ) + { + // InternalVampireLanguage.g:2738:1: ( ( rule__VLSTffFormula__Group_7__0 )? ) + // InternalVampireLanguage.g:2739:2: ( rule__VLSTffFormula__Group_7__0 )? + { + before(grammarAccess.getVLSTffFormulaAccess().getGroup_7()); + // InternalVampireLanguage.g:2740:2: ( rule__VLSTffFormula__Group_7__0 )? + int alt30=2; + int LA30_0 = input.LA(1); + + if ( (LA30_0==56) ) { + alt30=1; + } + switch (alt30) { + case 1 : + // InternalVampireLanguage.g:2740:3: rule__VLSTffFormula__Group_7__0 + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group_7__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSTffFormulaAccess().getGroup_7()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__7__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__8" + // InternalVampireLanguage.g:2748:1: rule__VLSTffFormula__Group__8 : rule__VLSTffFormula__Group__8__Impl rule__VLSTffFormula__Group__9 ; + public final void rule__VLSTffFormula__Group__8() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2752:1: ( rule__VLSTffFormula__Group__8__Impl rule__VLSTffFormula__Group__9 ) + // InternalVampireLanguage.g:2753:2: rule__VLSTffFormula__Group__8__Impl rule__VLSTffFormula__Group__9 + { + pushFollow(FOLLOW_28); + rule__VLSTffFormula__Group__8__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__9(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__8" + + + // $ANTLR start "rule__VLSTffFormula__Group__8__Impl" + // InternalVampireLanguage.g:2760:1: rule__VLSTffFormula__Group__8__Impl : ( ')' ) ; + public final void rule__VLSTffFormula__Group__8__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2764:1: ( ( ')' ) ) + // InternalVampireLanguage.g:2765:1: ( ')' ) + { + // InternalVampireLanguage.g:2765:1: ( ')' ) + // InternalVampireLanguage.g:2766:2: ')' + { + before(grammarAccess.getVLSTffFormulaAccess().getRightParenthesisKeyword_8()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getRightParenthesisKeyword_8()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__8__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group__9" + // InternalVampireLanguage.g:2775:1: rule__VLSTffFormula__Group__9 : rule__VLSTffFormula__Group__9__Impl ; + public final void rule__VLSTffFormula__Group__9() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2779:1: ( rule__VLSTffFormula__Group__9__Impl ) + // InternalVampireLanguage.g:2780:2: rule__VLSTffFormula__Group__9__Impl + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group__9__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__9" + + + // $ANTLR start "rule__VLSTffFormula__Group__9__Impl" + // InternalVampireLanguage.g:2786:1: rule__VLSTffFormula__Group__9__Impl : ( '.' ) ; + public final void rule__VLSTffFormula__Group__9__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2790:1: ( ( '.' ) ) + // InternalVampireLanguage.g:2791:1: ( '.' ) + { + // InternalVampireLanguage.g:2791:1: ( '.' ) + // InternalVampireLanguage.g:2792:2: '.' + { + before(grammarAccess.getVLSTffFormulaAccess().getFullStopKeyword_9()); + match(input,58,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getFullStopKeyword_9()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group__9__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group_7__0" + // InternalVampireLanguage.g:2802:1: rule__VLSTffFormula__Group_7__0 : rule__VLSTffFormula__Group_7__0__Impl rule__VLSTffFormula__Group_7__1 ; + public final void rule__VLSTffFormula__Group_7__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2806:1: ( rule__VLSTffFormula__Group_7__0__Impl rule__VLSTffFormula__Group_7__1 ) + // InternalVampireLanguage.g:2807:2: rule__VLSTffFormula__Group_7__0__Impl rule__VLSTffFormula__Group_7__1 + { + pushFollow(FOLLOW_29); + rule__VLSTffFormula__Group_7__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group_7__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group_7__0" + + + // $ANTLR start "rule__VLSTffFormula__Group_7__0__Impl" + // InternalVampireLanguage.g:2814:1: rule__VLSTffFormula__Group_7__0__Impl : ( ',' ) ; + public final void rule__VLSTffFormula__Group_7__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2818:1: ( ( ',' ) ) + // InternalVampireLanguage.g:2819:1: ( ',' ) + { + // InternalVampireLanguage.g:2819:1: ( ',' ) + // InternalVampireLanguage.g:2820:2: ',' + { + before(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_7_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_7_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group_7__0__Impl" + + + // $ANTLR start "rule__VLSTffFormula__Group_7__1" + // InternalVampireLanguage.g:2829:1: rule__VLSTffFormula__Group_7__1 : rule__VLSTffFormula__Group_7__1__Impl ; + public final void rule__VLSTffFormula__Group_7__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2833:1: ( rule__VLSTffFormula__Group_7__1__Impl ) + // InternalVampireLanguage.g:2834:2: rule__VLSTffFormula__Group_7__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__Group_7__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group_7__1" + + + // $ANTLR start "rule__VLSTffFormula__Group_7__1__Impl" + // InternalVampireLanguage.g:2840:1: rule__VLSTffFormula__Group_7__1__Impl : ( ( rule__VLSTffFormula__AnnotationsAssignment_7_1 ) ) ; + public final void rule__VLSTffFormula__Group_7__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2844:1: ( ( ( rule__VLSTffFormula__AnnotationsAssignment_7_1 ) ) ) + // InternalVampireLanguage.g:2845:1: ( ( rule__VLSTffFormula__AnnotationsAssignment_7_1 ) ) + { + // InternalVampireLanguage.g:2845:1: ( ( rule__VLSTffFormula__AnnotationsAssignment_7_1 ) ) + // InternalVampireLanguage.g:2846:2: ( rule__VLSTffFormula__AnnotationsAssignment_7_1 ) + { + before(grammarAccess.getVLSTffFormulaAccess().getAnnotationsAssignment_7_1()); + // InternalVampireLanguage.g:2847:2: ( rule__VLSTffFormula__AnnotationsAssignment_7_1 ) + // InternalVampireLanguage.g:2847:3: rule__VLSTffFormula__AnnotationsAssignment_7_1 + { + pushFollow(FOLLOW_2); + rule__VLSTffFormula__AnnotationsAssignment_7_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTffFormulaAccess().getAnnotationsAssignment_7_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__Group_7__1__Impl" + + + // $ANTLR start "rule__VLSTffDeclPred__Group_0__0" + // InternalVampireLanguage.g:2856:1: rule__VLSTffDeclPred__Group_0__0 : rule__VLSTffDeclPred__Group_0__0__Impl rule__VLSTffDeclPred__Group_0__1 ; + public final void rule__VLSTffDeclPred__Group_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2860:1: ( rule__VLSTffDeclPred__Group_0__0__Impl rule__VLSTffDeclPred__Group_0__1 ) + // InternalVampireLanguage.g:2861:2: rule__VLSTffDeclPred__Group_0__0__Impl rule__VLSTffDeclPred__Group_0__1 + { + pushFollow(FOLLOW_32); + rule__VLSTffDeclPred__Group_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTffDeclPred__Group_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffDeclPred__Group_0__0" + + + // $ANTLR start "rule__VLSTffDeclPred__Group_0__0__Impl" + // InternalVampireLanguage.g:2868:1: rule__VLSTffDeclPred__Group_0__0__Impl : ( 'declare_' ) ; + public final void rule__VLSTffDeclPred__Group_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2872:1: ( ( 'declare_' ) ) + // InternalVampireLanguage.g:2873:1: ( 'declare_' ) + { + // InternalVampireLanguage.g:2873:1: ( 'declare_' ) + // InternalVampireLanguage.g:2874:2: 'declare_' + { + before(grammarAccess.getVLSTffDeclPredAccess().getDeclare_Keyword_0_0()); + match(input,60,FOLLOW_2); + after(grammarAccess.getVLSTffDeclPredAccess().getDeclare_Keyword_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffDeclPred__Group_0__0__Impl" + + + // $ANTLR start "rule__VLSTffDeclPred__Group_0__1" + // InternalVampireLanguage.g:2883:1: rule__VLSTffDeclPred__Group_0__1 : rule__VLSTffDeclPred__Group_0__1__Impl ; + public final void rule__VLSTffDeclPred__Group_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2887:1: ( rule__VLSTffDeclPred__Group_0__1__Impl ) + // InternalVampireLanguage.g:2888:2: rule__VLSTffDeclPred__Group_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSTffDeclPred__Group_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffDeclPred__Group_0__1" + + + // $ANTLR start "rule__VLSTffDeclPred__Group_0__1__Impl" + // InternalVampireLanguage.g:2894:1: rule__VLSTffDeclPred__Group_0__1__Impl : ( RULE_DOLLAR_ID ) ; + public final void rule__VLSTffDeclPred__Group_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2898:1: ( ( RULE_DOLLAR_ID ) ) + // InternalVampireLanguage.g:2899:1: ( RULE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:2899:1: ( RULE_DOLLAR_ID ) + // InternalVampireLanguage.g:2900:2: RULE_DOLLAR_ID + { + before(grammarAccess.getVLSTffDeclPredAccess().getDOLLAR_IDTerminalRuleCall_0_1()); + match(input,RULE_DOLLAR_ID,FOLLOW_2); + after(grammarAccess.getVLSTffDeclPredAccess().getDOLLAR_IDTerminalRuleCall_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffDeclPred__Group_0__1__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group__0" + // InternalVampireLanguage.g:2910:1: rule__VLSAnnotation__Group__0 : rule__VLSAnnotation__Group__0__Impl rule__VLSAnnotation__Group__1 ; + public final void rule__VLSAnnotation__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2914:1: ( rule__VLSAnnotation__Group__0__Impl rule__VLSAnnotation__Group__1 ) + // InternalVampireLanguage.g:2915:2: rule__VLSAnnotation__Group__0__Impl rule__VLSAnnotation__Group__1 + { + pushFollow(FOLLOW_29); + rule__VLSAnnotation__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__0" + + + // $ANTLR start "rule__VLSAnnotation__Group__0__Impl" + // InternalVampireLanguage.g:2922:1: rule__VLSAnnotation__Group__0__Impl : ( ( '[' )? ) ; + public final void rule__VLSAnnotation__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2926:1: ( ( ( '[' )? ) ) + // InternalVampireLanguage.g:2927:1: ( ( '[' )? ) + { + // InternalVampireLanguage.g:2927:1: ( ( '[' )? ) + // InternalVampireLanguage.g:2928:2: ( '[' )? + { + before(grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); + // InternalVampireLanguage.g:2929:2: ( '[' )? + int alt31=2; + int LA31_0 = input.LA(1); + + if ( (LA31_0==49) ) { + alt31=1; + } + switch (alt31) { + case 1 : + // InternalVampireLanguage.g:2929:3: '[' + { + match(input,49,FOLLOW_2); + + } + break; + + } + + after(grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__0__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group__1" + // InternalVampireLanguage.g:2937:1: rule__VLSAnnotation__Group__1 : rule__VLSAnnotation__Group__1__Impl rule__VLSAnnotation__Group__2 ; + public final void rule__VLSAnnotation__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2941:1: ( rule__VLSAnnotation__Group__1__Impl rule__VLSAnnotation__Group__2 ) + // InternalVampireLanguage.g:2942:2: rule__VLSAnnotation__Group__1__Impl rule__VLSAnnotation__Group__2 + { + pushFollow(FOLLOW_29); + rule__VLSAnnotation__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__1" + + + // $ANTLR start "rule__VLSAnnotation__Group__1__Impl" + // InternalVampireLanguage.g:2949:1: rule__VLSAnnotation__Group__1__Impl : ( ( rule__VLSAnnotation__NameAssignment_1 )? ) ; + public final void rule__VLSAnnotation__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2953:1: ( ( ( rule__VLSAnnotation__NameAssignment_1 )? ) ) + // InternalVampireLanguage.g:2954:1: ( ( rule__VLSAnnotation__NameAssignment_1 )? ) + { + // InternalVampireLanguage.g:2954:1: ( ( rule__VLSAnnotation__NameAssignment_1 )? ) + // InternalVampireLanguage.g:2955:2: ( rule__VLSAnnotation__NameAssignment_1 )? + { + before(grammarAccess.getVLSAnnotationAccess().getNameAssignment_1()); + // InternalVampireLanguage.g:2956:2: ( rule__VLSAnnotation__NameAssignment_1 )? + int alt32=2; + int LA32_0 = input.LA(1); + + if ( (LA32_0==RULE_LOWER_WORD_ID||LA32_0==RULE_SINGLE_QUOTE||(LA32_0>=24 && LA32_0<=38)) ) { + alt32=1; + } + switch (alt32) { + case 1 : + // InternalVampireLanguage.g:2956:3: rule__VLSAnnotation__NameAssignment_1 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__NameAssignment_1(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSAnnotationAccess().getNameAssignment_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__1__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group__2" + // InternalVampireLanguage.g:2964:1: rule__VLSAnnotation__Group__2 : rule__VLSAnnotation__Group__2__Impl rule__VLSAnnotation__Group__3 ; + public final void rule__VLSAnnotation__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2968:1: ( rule__VLSAnnotation__Group__2__Impl rule__VLSAnnotation__Group__3 ) + // InternalVampireLanguage.g:2969:2: rule__VLSAnnotation__Group__2__Impl rule__VLSAnnotation__Group__3 + { + pushFollow(FOLLOW_29); + rule__VLSAnnotation__Group__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__2" + + + // $ANTLR start "rule__VLSAnnotation__Group__2__Impl" + // InternalVampireLanguage.g:2976:1: rule__VLSAnnotation__Group__2__Impl : ( ( rule__VLSAnnotation__Group_2__0 )? ) ; + public final void rule__VLSAnnotation__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2980:1: ( ( ( rule__VLSAnnotation__Group_2__0 )? ) ) + // InternalVampireLanguage.g:2981:1: ( ( rule__VLSAnnotation__Group_2__0 )? ) + { + // InternalVampireLanguage.g:2981:1: ( ( rule__VLSAnnotation__Group_2__0 )? ) + // InternalVampireLanguage.g:2982:2: ( rule__VLSAnnotation__Group_2__0 )? + { + before(grammarAccess.getVLSAnnotationAccess().getGroup_2()); + // InternalVampireLanguage.g:2983:2: ( rule__VLSAnnotation__Group_2__0 )? + int alt33=2; + int LA33_0 = input.LA(1); + + if ( (LA33_0==55) ) { + alt33=1; + } + switch (alt33) { + case 1 : + // InternalVampireLanguage.g:2983:3: rule__VLSAnnotation__Group_2__0 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group_2__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSAnnotationAccess().getGroup_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__2__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group__3" + // InternalVampireLanguage.g:2991:1: rule__VLSAnnotation__Group__3 : rule__VLSAnnotation__Group__3__Impl ; + public final void rule__VLSAnnotation__Group__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:2995:1: ( rule__VLSAnnotation__Group__3__Impl ) + // InternalVampireLanguage.g:2996:2: rule__VLSAnnotation__Group__3__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group__3__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__3" + + + // $ANTLR start "rule__VLSAnnotation__Group__3__Impl" + // InternalVampireLanguage.g:3002:1: rule__VLSAnnotation__Group__3__Impl : ( ( ']' )? ) ; + public final void rule__VLSAnnotation__Group__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3006:1: ( ( ( ']' )? ) ) + // InternalVampireLanguage.g:3007:1: ( ( ']' )? ) + { + // InternalVampireLanguage.g:3007:1: ( ( ']' )? ) + // InternalVampireLanguage.g:3008:2: ( ']' )? + { + before(grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); + // InternalVampireLanguage.g:3009:2: ( ']' )? + int alt34=2; + int LA34_0 = input.LA(1); + + if ( (LA34_0==50) ) { + alt34=1; + } + switch (alt34) { + case 1 : + // InternalVampireLanguage.g:3009:3: ']' + { + match(input,50,FOLLOW_2); + + } + break; + + } + + after(grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group__3__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group_2__0" + // InternalVampireLanguage.g:3018:1: rule__VLSAnnotation__Group_2__0 : rule__VLSAnnotation__Group_2__0__Impl rule__VLSAnnotation__Group_2__1 ; + public final void rule__VLSAnnotation__Group_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3022:1: ( rule__VLSAnnotation__Group_2__0__Impl rule__VLSAnnotation__Group_2__1 ) + // InternalVampireLanguage.g:3023:2: rule__VLSAnnotation__Group_2__0__Impl rule__VLSAnnotation__Group_2__1 + { + pushFollow(FOLLOW_29); + rule__VLSAnnotation__Group_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group_2__0" + + + // $ANTLR start "rule__VLSAnnotation__Group_2__0__Impl" + // InternalVampireLanguage.g:3030:1: rule__VLSAnnotation__Group_2__0__Impl : ( '(' ) ; + public final void rule__VLSAnnotation__Group_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3034:1: ( ( '(' ) ) + // InternalVampireLanguage.g:3035:1: ( '(' ) + { + // InternalVampireLanguage.g:3035:1: ( '(' ) + // InternalVampireLanguage.g:3036:2: '(' + { + before(grammarAccess.getVLSAnnotationAccess().getLeftParenthesisKeyword_2_0()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSAnnotationAccess().getLeftParenthesisKeyword_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group_2__0__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group_2__1" + // InternalVampireLanguage.g:3045:1: rule__VLSAnnotation__Group_2__1 : rule__VLSAnnotation__Group_2__1__Impl rule__VLSAnnotation__Group_2__2 ; + public final void rule__VLSAnnotation__Group_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3049:1: ( rule__VLSAnnotation__Group_2__1__Impl rule__VLSAnnotation__Group_2__2 ) + // InternalVampireLanguage.g:3050:2: rule__VLSAnnotation__Group_2__1__Impl rule__VLSAnnotation__Group_2__2 + { + pushFollow(FOLLOW_33); + rule__VLSAnnotation__Group_2__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group_2__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group_2__1" + + + // $ANTLR start "rule__VLSAnnotation__Group_2__1__Impl" + // InternalVampireLanguage.g:3057:1: rule__VLSAnnotation__Group_2__1__Impl : ( ( rule__VLSAnnotation__FollowupAssignment_2_1 ) ) ; + public final void rule__VLSAnnotation__Group_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3061:1: ( ( ( rule__VLSAnnotation__FollowupAssignment_2_1 ) ) ) + // InternalVampireLanguage.g:3062:1: ( ( rule__VLSAnnotation__FollowupAssignment_2_1 ) ) + { + // InternalVampireLanguage.g:3062:1: ( ( rule__VLSAnnotation__FollowupAssignment_2_1 ) ) + // InternalVampireLanguage.g:3063:2: ( rule__VLSAnnotation__FollowupAssignment_2_1 ) + { + before(grammarAccess.getVLSAnnotationAccess().getFollowupAssignment_2_1()); + // InternalVampireLanguage.g:3064:2: ( rule__VLSAnnotation__FollowupAssignment_2_1 ) + // InternalVampireLanguage.g:3064:3: rule__VLSAnnotation__FollowupAssignment_2_1 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__FollowupAssignment_2_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAnnotationAccess().getFollowupAssignment_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group_2__1__Impl" + + + // $ANTLR start "rule__VLSAnnotation__Group_2__2" + // InternalVampireLanguage.g:3072:1: rule__VLSAnnotation__Group_2__2 : rule__VLSAnnotation__Group_2__2__Impl ; + public final void rule__VLSAnnotation__Group_2__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3076:1: ( rule__VLSAnnotation__Group_2__2__Impl ) + // InternalVampireLanguage.g:3077:2: rule__VLSAnnotation__Group_2__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__Group_2__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group_2__2" + + + // $ANTLR start "rule__VLSAnnotation__Group_2__2__Impl" + // InternalVampireLanguage.g:3083:1: rule__VLSAnnotation__Group_2__2__Impl : ( ')' ) ; + public final void rule__VLSAnnotation__Group_2__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3087:1: ( ( ')' ) ) + // InternalVampireLanguage.g:3088:1: ( ')' ) + { + // InternalVampireLanguage.g:3088:1: ( ')' ) + // InternalVampireLanguage.g:3089:2: ')' + { + before(grammarAccess.getVLSAnnotationAccess().getRightParenthesisKeyword_2_2()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSAnnotationAccess().getRightParenthesisKeyword_2_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__Group_2__2__Impl" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group__0" + // InternalVampireLanguage.g:3099:1: rule__VLSAnnotationTerms__Group__0 : rule__VLSAnnotationTerms__Group__0__Impl rule__VLSAnnotationTerms__Group__1 ; + public final void rule__VLSAnnotationTerms__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3103:1: ( rule__VLSAnnotationTerms__Group__0__Impl rule__VLSAnnotationTerms__Group__1 ) + // InternalVampireLanguage.g:3104:2: rule__VLSAnnotationTerms__Group__0__Impl rule__VLSAnnotationTerms__Group__1 + { + pushFollow(FOLLOW_24); + rule__VLSAnnotationTerms__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group__0" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group__0__Impl" + // InternalVampireLanguage.g:3111:1: rule__VLSAnnotationTerms__Group__0__Impl : ( ( rule__VLSAnnotationTerms__TermsAssignment_0 ) ) ; + public final void rule__VLSAnnotationTerms__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3115:1: ( ( ( rule__VLSAnnotationTerms__TermsAssignment_0 ) ) ) + // InternalVampireLanguage.g:3116:1: ( ( rule__VLSAnnotationTerms__TermsAssignment_0 ) ) + { + // InternalVampireLanguage.g:3116:1: ( ( rule__VLSAnnotationTerms__TermsAssignment_0 ) ) + // InternalVampireLanguage.g:3117:2: ( rule__VLSAnnotationTerms__TermsAssignment_0 ) + { + before(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_0()); + // InternalVampireLanguage.g:3118:2: ( rule__VLSAnnotationTerms__TermsAssignment_0 ) + // InternalVampireLanguage.g:3118:3: rule__VLSAnnotationTerms__TermsAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__TermsAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group__0__Impl" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group__1" + // InternalVampireLanguage.g:3126:1: rule__VLSAnnotationTerms__Group__1 : rule__VLSAnnotationTerms__Group__1__Impl ; + public final void rule__VLSAnnotationTerms__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3130:1: ( rule__VLSAnnotationTerms__Group__1__Impl ) + // InternalVampireLanguage.g:3131:2: rule__VLSAnnotationTerms__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group__1" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group__1__Impl" + // InternalVampireLanguage.g:3137:1: rule__VLSAnnotationTerms__Group__1__Impl : ( ( rule__VLSAnnotationTerms__Group_1__0 )* ) ; + public final void rule__VLSAnnotationTerms__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3141:1: ( ( ( rule__VLSAnnotationTerms__Group_1__0 )* ) ) + // InternalVampireLanguage.g:3142:1: ( ( rule__VLSAnnotationTerms__Group_1__0 )* ) + { + // InternalVampireLanguage.g:3142:1: ( ( rule__VLSAnnotationTerms__Group_1__0 )* ) + // InternalVampireLanguage.g:3143:2: ( rule__VLSAnnotationTerms__Group_1__0 )* + { + before(grammarAccess.getVLSAnnotationTermsAccess().getGroup_1()); + // InternalVampireLanguage.g:3144:2: ( rule__VLSAnnotationTerms__Group_1__0 )* + loop35: + do { + int alt35=2; + int LA35_0 = input.LA(1); + + if ( (LA35_0==56) ) { + alt35=1; + } + + + switch (alt35) { + case 1 : + // InternalVampireLanguage.g:3144:3: rule__VLSAnnotationTerms__Group_1__0 + { + pushFollow(FOLLOW_34); + rule__VLSAnnotationTerms__Group_1__0(); + + state._fsp--; + + + } + break; + + default : + break loop35; + } + } while (true); + + after(grammarAccess.getVLSAnnotationTermsAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group__1__Impl" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group_1__0" + // InternalVampireLanguage.g:3153:1: rule__VLSAnnotationTerms__Group_1__0 : rule__VLSAnnotationTerms__Group_1__0__Impl rule__VLSAnnotationTerms__Group_1__1 ; + public final void rule__VLSAnnotationTerms__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3157:1: ( rule__VLSAnnotationTerms__Group_1__0__Impl rule__VLSAnnotationTerms__Group_1__1 ) + // InternalVampireLanguage.g:3158:2: rule__VLSAnnotationTerms__Group_1__0__Impl rule__VLSAnnotationTerms__Group_1__1 + { + pushFollow(FOLLOW_29); + rule__VLSAnnotationTerms__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group_1__0" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group_1__0__Impl" + // InternalVampireLanguage.g:3165:1: rule__VLSAnnotationTerms__Group_1__0__Impl : ( ',' ) ; + public final void rule__VLSAnnotationTerms__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3169:1: ( ( ',' ) ) + // InternalVampireLanguage.g:3170:1: ( ',' ) + { + // InternalVampireLanguage.g:3170:1: ( ',' ) + // InternalVampireLanguage.g:3171:2: ',' + { + before(grammarAccess.getVLSAnnotationTermsAccess().getCommaKeyword_1_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSAnnotationTermsAccess().getCommaKeyword_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group_1__1" + // InternalVampireLanguage.g:3180:1: rule__VLSAnnotationTerms__Group_1__1 : rule__VLSAnnotationTerms__Group_1__1__Impl ; + public final void rule__VLSAnnotationTerms__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3184:1: ( rule__VLSAnnotationTerms__Group_1__1__Impl ) + // InternalVampireLanguage.g:3185:2: rule__VLSAnnotationTerms__Group_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__Group_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group_1__1" + + + // $ANTLR start "rule__VLSAnnotationTerms__Group_1__1__Impl" + // InternalVampireLanguage.g:3191:1: rule__VLSAnnotationTerms__Group_1__1__Impl : ( ( rule__VLSAnnotationTerms__TermsAssignment_1_1 ) ) ; + public final void rule__VLSAnnotationTerms__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3195:1: ( ( ( rule__VLSAnnotationTerms__TermsAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:3196:1: ( ( rule__VLSAnnotationTerms__TermsAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:3196:1: ( ( rule__VLSAnnotationTerms__TermsAssignment_1_1 ) ) + // InternalVampireLanguage.g:3197:2: ( rule__VLSAnnotationTerms__TermsAssignment_1_1 ) + { + before(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_1_1()); + // InternalVampireLanguage.g:3198:2: ( rule__VLSAnnotationTerms__TermsAssignment_1_1 ) + // InternalVampireLanguage.g:3198:3: rule__VLSAnnotationTerms__TermsAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotationTerms__TermsAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAnnotationTermsAccess().getTermsAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSOtherDeclaration__Group__0" + // InternalVampireLanguage.g:3207:1: rule__VLSOtherDeclaration__Group__0 : rule__VLSOtherDeclaration__Group__0__Impl rule__VLSOtherDeclaration__Group__1 ; + public final void rule__VLSOtherDeclaration__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3211:1: ( rule__VLSOtherDeclaration__Group__0__Impl rule__VLSOtherDeclaration__Group__1 ) + // InternalVampireLanguage.g:3212:2: rule__VLSOtherDeclaration__Group__0__Impl rule__VLSOtherDeclaration__Group__1 + { + pushFollow(FOLLOW_35); + rule__VLSOtherDeclaration__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSOtherDeclaration__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__Group__0" + + + // $ANTLR start "rule__VLSOtherDeclaration__Group__0__Impl" + // InternalVampireLanguage.g:3219:1: rule__VLSOtherDeclaration__Group__0__Impl : ( ( rule__VLSOtherDeclaration__NameAssignment_0 ) ) ; + public final void rule__VLSOtherDeclaration__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3223:1: ( ( ( rule__VLSOtherDeclaration__NameAssignment_0 ) ) ) + // InternalVampireLanguage.g:3224:1: ( ( rule__VLSOtherDeclaration__NameAssignment_0 ) ) + { + // InternalVampireLanguage.g:3224:1: ( ( rule__VLSOtherDeclaration__NameAssignment_0 ) ) + // InternalVampireLanguage.g:3225:2: ( rule__VLSOtherDeclaration__NameAssignment_0 ) + { + before(grammarAccess.getVLSOtherDeclarationAccess().getNameAssignment_0()); + // InternalVampireLanguage.g:3226:2: ( rule__VLSOtherDeclaration__NameAssignment_0 ) + // InternalVampireLanguage.g:3226:3: rule__VLSOtherDeclaration__NameAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VLSOtherDeclaration__NameAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSOtherDeclarationAccess().getNameAssignment_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__Group__0__Impl" + + + // $ANTLR start "rule__VLSOtherDeclaration__Group__1" + // InternalVampireLanguage.g:3234:1: rule__VLSOtherDeclaration__Group__1 : rule__VLSOtherDeclaration__Group__1__Impl rule__VLSOtherDeclaration__Group__2 ; + public final void rule__VLSOtherDeclaration__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3238:1: ( rule__VLSOtherDeclaration__Group__1__Impl rule__VLSOtherDeclaration__Group__2 ) + // InternalVampireLanguage.g:3239:2: rule__VLSOtherDeclaration__Group__1__Impl rule__VLSOtherDeclaration__Group__2 + { + pushFollow(FOLLOW_36); + rule__VLSOtherDeclaration__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSOtherDeclaration__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__Group__1" + + + // $ANTLR start "rule__VLSOtherDeclaration__Group__1__Impl" + // InternalVampireLanguage.g:3246:1: rule__VLSOtherDeclaration__Group__1__Impl : ( ':' ) ; + public final void rule__VLSOtherDeclaration__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3250:1: ( ( ':' ) ) + // InternalVampireLanguage.g:3251:1: ( ':' ) + { + // InternalVampireLanguage.g:3251:1: ( ':' ) + // InternalVampireLanguage.g:3252:2: ':' + { + before(grammarAccess.getVLSOtherDeclarationAccess().getColonKeyword_1()); + match(input,61,FOLLOW_2); + after(grammarAccess.getVLSOtherDeclarationAccess().getColonKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__Group__1__Impl" + + + // $ANTLR start "rule__VLSOtherDeclaration__Group__2" + // InternalVampireLanguage.g:3261:1: rule__VLSOtherDeclaration__Group__2 : rule__VLSOtherDeclaration__Group__2__Impl ; + public final void rule__VLSOtherDeclaration__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3265:1: ( rule__VLSOtherDeclaration__Group__2__Impl ) + // InternalVampireLanguage.g:3266:2: rule__VLSOtherDeclaration__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSOtherDeclaration__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__Group__2" + + + // $ANTLR start "rule__VLSOtherDeclaration__Group__2__Impl" + // InternalVampireLanguage.g:3272:1: rule__VLSOtherDeclaration__Group__2__Impl : ( ( rule__VLSOtherDeclaration__TypeAssignment_2 ) ) ; + public final void rule__VLSOtherDeclaration__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3276:1: ( ( ( rule__VLSOtherDeclaration__TypeAssignment_2 ) ) ) + // InternalVampireLanguage.g:3277:1: ( ( rule__VLSOtherDeclaration__TypeAssignment_2 ) ) + { + // InternalVampireLanguage.g:3277:1: ( ( rule__VLSOtherDeclaration__TypeAssignment_2 ) ) + // InternalVampireLanguage.g:3278:2: ( rule__VLSOtherDeclaration__TypeAssignment_2 ) + { + before(grammarAccess.getVLSOtherDeclarationAccess().getTypeAssignment_2()); + // InternalVampireLanguage.g:3279:2: ( rule__VLSOtherDeclaration__TypeAssignment_2 ) + // InternalVampireLanguage.g:3279:3: rule__VLSOtherDeclaration__TypeAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSOtherDeclaration__TypeAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSOtherDeclarationAccess().getTypeAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__Group__2__Impl" + + + // $ANTLR start "rule__VLSVariableDeclaration__Group__0" + // InternalVampireLanguage.g:3288:1: rule__VLSVariableDeclaration__Group__0 : rule__VLSVariableDeclaration__Group__0__Impl rule__VLSVariableDeclaration__Group__1 ; + public final void rule__VLSVariableDeclaration__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3292:1: ( rule__VLSVariableDeclaration__Group__0__Impl rule__VLSVariableDeclaration__Group__1 ) + // InternalVampireLanguage.g:3293:2: rule__VLSVariableDeclaration__Group__0__Impl rule__VLSVariableDeclaration__Group__1 + { + pushFollow(FOLLOW_35); + rule__VLSVariableDeclaration__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSVariableDeclaration__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__Group__0" + + + // $ANTLR start "rule__VLSVariableDeclaration__Group__0__Impl" + // InternalVampireLanguage.g:3300:1: rule__VLSVariableDeclaration__Group__0__Impl : ( ( rule__VLSVariableDeclaration__NameAssignment_0 ) ) ; + public final void rule__VLSVariableDeclaration__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3304:1: ( ( ( rule__VLSVariableDeclaration__NameAssignment_0 ) ) ) + // InternalVampireLanguage.g:3305:1: ( ( rule__VLSVariableDeclaration__NameAssignment_0 ) ) + { + // InternalVampireLanguage.g:3305:1: ( ( rule__VLSVariableDeclaration__NameAssignment_0 ) ) + // InternalVampireLanguage.g:3306:2: ( rule__VLSVariableDeclaration__NameAssignment_0 ) + { + before(grammarAccess.getVLSVariableDeclarationAccess().getNameAssignment_0()); + // InternalVampireLanguage.g:3307:2: ( rule__VLSVariableDeclaration__NameAssignment_0 ) + // InternalVampireLanguage.g:3307:3: rule__VLSVariableDeclaration__NameAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VLSVariableDeclaration__NameAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSVariableDeclarationAccess().getNameAssignment_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__Group__0__Impl" + + + // $ANTLR start "rule__VLSVariableDeclaration__Group__1" + // InternalVampireLanguage.g:3315:1: rule__VLSVariableDeclaration__Group__1 : rule__VLSVariableDeclaration__Group__1__Impl rule__VLSVariableDeclaration__Group__2 ; + public final void rule__VLSVariableDeclaration__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3319:1: ( rule__VLSVariableDeclaration__Group__1__Impl rule__VLSVariableDeclaration__Group__2 ) + // InternalVampireLanguage.g:3320:2: rule__VLSVariableDeclaration__Group__1__Impl rule__VLSVariableDeclaration__Group__2 + { + pushFollow(FOLLOW_36); + rule__VLSVariableDeclaration__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSVariableDeclaration__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__Group__1" + + + // $ANTLR start "rule__VLSVariableDeclaration__Group__1__Impl" + // InternalVampireLanguage.g:3327:1: rule__VLSVariableDeclaration__Group__1__Impl : ( ':' ) ; + public final void rule__VLSVariableDeclaration__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3331:1: ( ( ':' ) ) + // InternalVampireLanguage.g:3332:1: ( ':' ) + { + // InternalVampireLanguage.g:3332:1: ( ':' ) + // InternalVampireLanguage.g:3333:2: ':' + { + before(grammarAccess.getVLSVariableDeclarationAccess().getColonKeyword_1()); + match(input,61,FOLLOW_2); + after(grammarAccess.getVLSVariableDeclarationAccess().getColonKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__Group__1__Impl" + + + // $ANTLR start "rule__VLSVariableDeclaration__Group__2" + // InternalVampireLanguage.g:3342:1: rule__VLSVariableDeclaration__Group__2 : rule__VLSVariableDeclaration__Group__2__Impl ; + public final void rule__VLSVariableDeclaration__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3346:1: ( rule__VLSVariableDeclaration__Group__2__Impl ) + // InternalVampireLanguage.g:3347:2: rule__VLSVariableDeclaration__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSVariableDeclaration__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__Group__2" + + + // $ANTLR start "rule__VLSVariableDeclaration__Group__2__Impl" + // InternalVampireLanguage.g:3353:1: rule__VLSVariableDeclaration__Group__2__Impl : ( ( rule__VLSVariableDeclaration__TypeAssignment_2 ) ) ; + public final void rule__VLSVariableDeclaration__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3357:1: ( ( ( rule__VLSVariableDeclaration__TypeAssignment_2 ) ) ) + // InternalVampireLanguage.g:3358:1: ( ( rule__VLSVariableDeclaration__TypeAssignment_2 ) ) + { + // InternalVampireLanguage.g:3358:1: ( ( rule__VLSVariableDeclaration__TypeAssignment_2 ) ) + // InternalVampireLanguage.g:3359:2: ( rule__VLSVariableDeclaration__TypeAssignment_2 ) + { + before(grammarAccess.getVLSVariableDeclarationAccess().getTypeAssignment_2()); + // InternalVampireLanguage.g:3360:2: ( rule__VLSVariableDeclaration__TypeAssignment_2 ) + // InternalVampireLanguage.g:3360:3: rule__VLSVariableDeclaration__TypeAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSVariableDeclaration__TypeAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSVariableDeclarationAccess().getTypeAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__Group__2__Impl" + + + // $ANTLR start "rule__VLSTypeDef__Group__0" + // InternalVampireLanguage.g:3369:1: rule__VLSTypeDef__Group__0 : rule__VLSTypeDef__Group__0__Impl rule__VLSTypeDef__Group__1 ; + public final void rule__VLSTypeDef__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3373:1: ( rule__VLSTypeDef__Group__0__Impl rule__VLSTypeDef__Group__1 ) + // InternalVampireLanguage.g:3374:2: rule__VLSTypeDef__Group__0__Impl rule__VLSTypeDef__Group__1 + { + pushFollow(FOLLOW_37); + rule__VLSTypeDef__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTypeDef__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group__0" + + + // $ANTLR start "rule__VLSTypeDef__Group__0__Impl" + // InternalVampireLanguage.g:3381:1: rule__VLSTypeDef__Group__0__Impl : ( ( rule__VLSTypeDef__TypeSigAssignment_0 ) ) ; + public final void rule__VLSTypeDef__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3385:1: ( ( ( rule__VLSTypeDef__TypeSigAssignment_0 ) ) ) + // InternalVampireLanguage.g:3386:1: ( ( rule__VLSTypeDef__TypeSigAssignment_0 ) ) + { + // InternalVampireLanguage.g:3386:1: ( ( rule__VLSTypeDef__TypeSigAssignment_0 ) ) + // InternalVampireLanguage.g:3387:2: ( rule__VLSTypeDef__TypeSigAssignment_0 ) + { + before(grammarAccess.getVLSTypeDefAccess().getTypeSigAssignment_0()); + // InternalVampireLanguage.g:3388:2: ( rule__VLSTypeDef__TypeSigAssignment_0 ) + // InternalVampireLanguage.g:3388:3: rule__VLSTypeDef__TypeSigAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VLSTypeDef__TypeSigAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTypeDefAccess().getTypeSigAssignment_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group__0__Impl" + + + // $ANTLR start "rule__VLSTypeDef__Group__1" + // InternalVampireLanguage.g:3396:1: rule__VLSTypeDef__Group__1 : rule__VLSTypeDef__Group__1__Impl ; + public final void rule__VLSTypeDef__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3400:1: ( rule__VLSTypeDef__Group__1__Impl ) + // InternalVampireLanguage.g:3401:2: rule__VLSTypeDef__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSTypeDef__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group__1" + + + // $ANTLR start "rule__VLSTypeDef__Group__1__Impl" + // InternalVampireLanguage.g:3407:1: rule__VLSTypeDef__Group__1__Impl : ( ( rule__VLSTypeDef__Group_1__0 )? ) ; + public final void rule__VLSTypeDef__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3411:1: ( ( ( rule__VLSTypeDef__Group_1__0 )? ) ) + // InternalVampireLanguage.g:3412:1: ( ( rule__VLSTypeDef__Group_1__0 )? ) + { + // InternalVampireLanguage.g:3412:1: ( ( rule__VLSTypeDef__Group_1__0 )? ) + // InternalVampireLanguage.g:3413:2: ( rule__VLSTypeDef__Group_1__0 )? + { + before(grammarAccess.getVLSTypeDefAccess().getGroup_1()); + // InternalVampireLanguage.g:3414:2: ( rule__VLSTypeDef__Group_1__0 )? + int alt36=2; + int LA36_0 = input.LA(1); + + if ( (LA36_0==62) ) { + alt36=1; + } + switch (alt36) { + case 1 : + // InternalVampireLanguage.g:3414:3: rule__VLSTypeDef__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSTypeDef__Group_1__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSTypeDefAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group__1__Impl" + + + // $ANTLR start "rule__VLSTypeDef__Group_1__0" + // InternalVampireLanguage.g:3423:1: rule__VLSTypeDef__Group_1__0 : rule__VLSTypeDef__Group_1__0__Impl rule__VLSTypeDef__Group_1__1 ; + public final void rule__VLSTypeDef__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3427:1: ( rule__VLSTypeDef__Group_1__0__Impl rule__VLSTypeDef__Group_1__1 ) + // InternalVampireLanguage.g:3428:2: rule__VLSTypeDef__Group_1__0__Impl rule__VLSTypeDef__Group_1__1 + { + pushFollow(FOLLOW_38); + rule__VLSTypeDef__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSTypeDef__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group_1__0" + + + // $ANTLR start "rule__VLSTypeDef__Group_1__0__Impl" + // InternalVampireLanguage.g:3435:1: rule__VLSTypeDef__Group_1__0__Impl : ( '>' ) ; + public final void rule__VLSTypeDef__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3439:1: ( ( '>' ) ) + // InternalVampireLanguage.g:3440:1: ( '>' ) + { + // InternalVampireLanguage.g:3440:1: ( '>' ) + // InternalVampireLanguage.g:3441:2: '>' + { + before(grammarAccess.getVLSTypeDefAccess().getGreaterThanSignKeyword_1_0()); + match(input,62,FOLLOW_2); + after(grammarAccess.getVLSTypeDefAccess().getGreaterThanSignKeyword_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSTypeDef__Group_1__1" + // InternalVampireLanguage.g:3450:1: rule__VLSTypeDef__Group_1__1 : rule__VLSTypeDef__Group_1__1__Impl ; + public final void rule__VLSTypeDef__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3454:1: ( rule__VLSTypeDef__Group_1__1__Impl ) + // InternalVampireLanguage.g:3455:2: rule__VLSTypeDef__Group_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSTypeDef__Group_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group_1__1" + + + // $ANTLR start "rule__VLSTypeDef__Group_1__1__Impl" + // InternalVampireLanguage.g:3461:1: rule__VLSTypeDef__Group_1__1__Impl : ( ( rule__VLSTypeDef__MapsToAssignment_1_1 ) ) ; + public final void rule__VLSTypeDef__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3465:1: ( ( ( rule__VLSTypeDef__MapsToAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:3466:1: ( ( rule__VLSTypeDef__MapsToAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:3466:1: ( ( rule__VLSTypeDef__MapsToAssignment_1_1 ) ) + // InternalVampireLanguage.g:3467:2: ( rule__VLSTypeDef__MapsToAssignment_1_1 ) + { + before(grammarAccess.getVLSTypeDefAccess().getMapsToAssignment_1_1()); + // InternalVampireLanguage.g:3468:2: ( rule__VLSTypeDef__MapsToAssignment_1_1 ) + // InternalVampireLanguage.g:3468:3: rule__VLSTypeDef__MapsToAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSTypeDef__MapsToAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSTypeDefAccess().getMapsToAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group__0" + // InternalVampireLanguage.g:3477:1: rule__VLSUnitaryTerm__Group__0 : rule__VLSUnitaryTerm__Group__0__Impl rule__VLSUnitaryTerm__Group__1 ; + public final void rule__VLSUnitaryTerm__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3481:1: ( rule__VLSUnitaryTerm__Group__0__Impl rule__VLSUnitaryTerm__Group__1 ) + // InternalVampireLanguage.g:3482:2: rule__VLSUnitaryTerm__Group__0__Impl rule__VLSUnitaryTerm__Group__1 + { + pushFollow(FOLLOW_39); + rule__VLSUnitaryTerm__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group__0" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group__0__Impl" + // InternalVampireLanguage.g:3489:1: rule__VLSUnitaryTerm__Group__0__Impl : ( ( rule__VLSUnitaryTerm__InitTypeAssignment_0 ) ) ; + public final void rule__VLSUnitaryTerm__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3493:1: ( ( ( rule__VLSUnitaryTerm__InitTypeAssignment_0 ) ) ) + // InternalVampireLanguage.g:3494:1: ( ( rule__VLSUnitaryTerm__InitTypeAssignment_0 ) ) + { + // InternalVampireLanguage.g:3494:1: ( ( rule__VLSUnitaryTerm__InitTypeAssignment_0 ) ) + // InternalVampireLanguage.g:3495:2: ( rule__VLSUnitaryTerm__InitTypeAssignment_0 ) + { + before(grammarAccess.getVLSUnitaryTermAccess().getInitTypeAssignment_0()); + // InternalVampireLanguage.g:3496:2: ( rule__VLSUnitaryTerm__InitTypeAssignment_0 ) + // InternalVampireLanguage.g:3496:3: rule__VLSUnitaryTerm__InitTypeAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__InitTypeAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnitaryTermAccess().getInitTypeAssignment_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group__0__Impl" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group__1" + // InternalVampireLanguage.g:3504:1: rule__VLSUnitaryTerm__Group__1 : rule__VLSUnitaryTerm__Group__1__Impl ; + public final void rule__VLSUnitaryTerm__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3508:1: ( rule__VLSUnitaryTerm__Group__1__Impl ) + // InternalVampireLanguage.g:3509:2: rule__VLSUnitaryTerm__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group__1" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group__1__Impl" + // InternalVampireLanguage.g:3515:1: rule__VLSUnitaryTerm__Group__1__Impl : ( ( rule__VLSUnitaryTerm__Group_1__0 )* ) ; + public final void rule__VLSUnitaryTerm__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3519:1: ( ( ( rule__VLSUnitaryTerm__Group_1__0 )* ) ) + // InternalVampireLanguage.g:3520:1: ( ( rule__VLSUnitaryTerm__Group_1__0 )* ) + { + // InternalVampireLanguage.g:3520:1: ( ( rule__VLSUnitaryTerm__Group_1__0 )* ) + // InternalVampireLanguage.g:3521:2: ( rule__VLSUnitaryTerm__Group_1__0 )* + { + before(grammarAccess.getVLSUnitaryTermAccess().getGroup_1()); + // InternalVampireLanguage.g:3522:2: ( rule__VLSUnitaryTerm__Group_1__0 )* + loop37: + do { + int alt37=2; + int LA37_0 = input.LA(1); + + if ( (LA37_0==63) ) { + alt37=1; + } + + + switch (alt37) { + case 1 : + // InternalVampireLanguage.g:3522:3: rule__VLSUnitaryTerm__Group_1__0 + { + pushFollow(FOLLOW_40); + rule__VLSUnitaryTerm__Group_1__0(); + + state._fsp--; + + + } + break; + + default : + break loop37; + } + } while (true); + + after(grammarAccess.getVLSUnitaryTermAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group__1__Impl" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group_1__0" + // InternalVampireLanguage.g:3531:1: rule__VLSUnitaryTerm__Group_1__0 : rule__VLSUnitaryTerm__Group_1__0__Impl rule__VLSUnitaryTerm__Group_1__1 ; + public final void rule__VLSUnitaryTerm__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3535:1: ( rule__VLSUnitaryTerm__Group_1__0__Impl rule__VLSUnitaryTerm__Group_1__1 ) + // InternalVampireLanguage.g:3536:2: rule__VLSUnitaryTerm__Group_1__0__Impl rule__VLSUnitaryTerm__Group_1__1 + { + pushFollow(FOLLOW_38); + rule__VLSUnitaryTerm__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group_1__0" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group_1__0__Impl" + // InternalVampireLanguage.g:3543:1: rule__VLSUnitaryTerm__Group_1__0__Impl : ( '*' ) ; + public final void rule__VLSUnitaryTerm__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3547:1: ( ( '*' ) ) + // InternalVampireLanguage.g:3548:1: ( '*' ) + { + // InternalVampireLanguage.g:3548:1: ( '*' ) + // InternalVampireLanguage.g:3549:2: '*' + { + before(grammarAccess.getVLSUnitaryTermAccess().getAsteriskKeyword_1_0()); + match(input,63,FOLLOW_2); + after(grammarAccess.getVLSUnitaryTermAccess().getAsteriskKeyword_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group_1__1" + // InternalVampireLanguage.g:3558:1: rule__VLSUnitaryTerm__Group_1__1 : rule__VLSUnitaryTerm__Group_1__1__Impl ; + public final void rule__VLSUnitaryTerm__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3562:1: ( rule__VLSUnitaryTerm__Group_1__1__Impl ) + // InternalVampireLanguage.g:3563:2: rule__VLSUnitaryTerm__Group_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__Group_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group_1__1" + + + // $ANTLR start "rule__VLSUnitaryTerm__Group_1__1__Impl" + // InternalVampireLanguage.g:3569:1: rule__VLSUnitaryTerm__Group_1__1__Impl : ( ( rule__VLSUnitaryTerm__NextTypeAssignment_1_1 ) ) ; + public final void rule__VLSUnitaryTerm__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3573:1: ( ( ( rule__VLSUnitaryTerm__NextTypeAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:3574:1: ( ( rule__VLSUnitaryTerm__NextTypeAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:3574:1: ( ( rule__VLSUnitaryTerm__NextTypeAssignment_1_1 ) ) + // InternalVampireLanguage.g:3575:2: ( rule__VLSUnitaryTerm__NextTypeAssignment_1_1 ) + { + before(grammarAccess.getVLSUnitaryTermAccess().getNextTypeAssignment_1_1()); + // InternalVampireLanguage.g:3576:2: ( rule__VLSUnitaryTerm__NextTypeAssignment_1_1 ) + // InternalVampireLanguage.g:3576:3: rule__VLSUnitaryTerm__NextTypeAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryTerm__NextTypeAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnitaryTermAccess().getNextTypeAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group__0" + // InternalVampireLanguage.g:3585:1: rule__VLSBinary__Group__0 : rule__VLSBinary__Group__0__Impl rule__VLSBinary__Group__1 ; + public final void rule__VLSBinary__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3589:1: ( rule__VLSBinary__Group__0__Impl rule__VLSBinary__Group__1 ) + // InternalVampireLanguage.g:3590:2: rule__VLSBinary__Group__0__Impl rule__VLSBinary__Group__1 + { + pushFollow(FOLLOW_41); + rule__VLSBinary__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group__0" + + + // $ANTLR start "rule__VLSBinary__Group__0__Impl" + // InternalVampireLanguage.g:3597:1: rule__VLSBinary__Group__0__Impl : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSBinary__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3601:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:3602:1: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:3602:1: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:3603:2: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSBinaryAccess().getVLSUnitaryFormulaParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSBinaryAccess().getVLSUnitaryFormulaParserRuleCall_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group__1" + // InternalVampireLanguage.g:3612:1: rule__VLSBinary__Group__1 : rule__VLSBinary__Group__1__Impl ; + public final void rule__VLSBinary__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3616:1: ( rule__VLSBinary__Group__1__Impl ) + // InternalVampireLanguage.g:3617:2: rule__VLSBinary__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group__1" + + + // $ANTLR start "rule__VLSBinary__Group__1__Impl" + // InternalVampireLanguage.g:3623:1: rule__VLSBinary__Group__1__Impl : ( ( rule__VLSBinary__Alternatives_1 )? ) ; + public final void rule__VLSBinary__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3627:1: ( ( ( rule__VLSBinary__Alternatives_1 )? ) ) + // InternalVampireLanguage.g:3628:1: ( ( rule__VLSBinary__Alternatives_1 )? ) + { + // InternalVampireLanguage.g:3628:1: ( ( rule__VLSBinary__Alternatives_1 )? ) + // InternalVampireLanguage.g:3629:2: ( rule__VLSBinary__Alternatives_1 )? + { + before(grammarAccess.getVLSBinaryAccess().getAlternatives_1()); + // InternalVampireLanguage.g:3630:2: ( rule__VLSBinary__Alternatives_1 )? + int alt38=2; + int LA38_0 = input.LA(1); + + if ( ((LA38_0>=64 && LA38_0<=71)) ) { + alt38=1; + } + switch (alt38) { + case 1 : + // InternalVampireLanguage.g:3630:3: rule__VLSBinary__Alternatives_1 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Alternatives_1(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSBinaryAccess().getAlternatives_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0__0" + // InternalVampireLanguage.g:3639:1: rule__VLSBinary__Group_1_0__0 : rule__VLSBinary__Group_1_0__0__Impl rule__VLSBinary__Group_1_0__1 ; + public final void rule__VLSBinary__Group_1_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3643:1: ( rule__VLSBinary__Group_1_0__0__Impl rule__VLSBinary__Group_1_0__1 ) + // InternalVampireLanguage.g:3644:2: rule__VLSBinary__Group_1_0__0__Impl rule__VLSBinary__Group_1_0__1 + { + pushFollow(FOLLOW_26); + rule__VLSBinary__Group_1_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0__0__Impl" + // InternalVampireLanguage.g:3651:1: rule__VLSBinary__Group_1_0__0__Impl : ( ( rule__VLSBinary__Alternatives_1_0_0 ) ) ; + public final void rule__VLSBinary__Group_1_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3655:1: ( ( ( rule__VLSBinary__Alternatives_1_0_0 ) ) ) + // InternalVampireLanguage.g:3656:1: ( ( rule__VLSBinary__Alternatives_1_0_0 ) ) + { + // InternalVampireLanguage.g:3656:1: ( ( rule__VLSBinary__Alternatives_1_0_0 ) ) + // InternalVampireLanguage.g:3657:2: ( rule__VLSBinary__Alternatives_1_0_0 ) + { + before(grammarAccess.getVLSBinaryAccess().getAlternatives_1_0_0()); + // InternalVampireLanguage.g:3658:2: ( rule__VLSBinary__Alternatives_1_0_0 ) + // InternalVampireLanguage.g:3658:3: rule__VLSBinary__Alternatives_1_0_0 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Alternatives_1_0_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getAlternatives_1_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0__1" + // InternalVampireLanguage.g:3666:1: rule__VLSBinary__Group_1_0__1 : rule__VLSBinary__Group_1_0__1__Impl ; + public final void rule__VLSBinary__Group_1_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3670:1: ( rule__VLSBinary__Group_1_0__1__Impl ) + // InternalVampireLanguage.g:3671:2: rule__VLSBinary__Group_1_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0__1__Impl" + // InternalVampireLanguage.g:3677:1: rule__VLSBinary__Group_1_0__1__Impl : ( ( rule__VLSBinary__RightAssignment_1_0_1 ) ) ; + public final void rule__VLSBinary__Group_1_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3681:1: ( ( ( rule__VLSBinary__RightAssignment_1_0_1 ) ) ) + // InternalVampireLanguage.g:3682:1: ( ( rule__VLSBinary__RightAssignment_1_0_1 ) ) + { + // InternalVampireLanguage.g:3682:1: ( ( rule__VLSBinary__RightAssignment_1_0_1 ) ) + // InternalVampireLanguage.g:3683:2: ( rule__VLSBinary__RightAssignment_1_0_1 ) + { + before(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_0_1()); + // InternalVampireLanguage.g:3684:2: ( rule__VLSBinary__RightAssignment_1_0_1 ) + // InternalVampireLanguage.g:3684:3: rule__VLSBinary__RightAssignment_1_0_1 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__RightAssignment_1_0_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_0__0" + // InternalVampireLanguage.g:3693:1: rule__VLSBinary__Group_1_0_0_0__0 : rule__VLSBinary__Group_1_0_0_0__0__Impl rule__VLSBinary__Group_1_0_0_0__1 ; + public final void rule__VLSBinary__Group_1_0_0_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3697:1: ( rule__VLSBinary__Group_1_0_0_0__0__Impl rule__VLSBinary__Group_1_0_0_0__1 ) + // InternalVampireLanguage.g:3698:2: rule__VLSBinary__Group_1_0_0_0__0__Impl rule__VLSBinary__Group_1_0_0_0__1 + { + pushFollow(FOLLOW_42); + rule__VLSBinary__Group_1_0_0_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_0__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_0__0__Impl" + // InternalVampireLanguage.g:3705:1: rule__VLSBinary__Group_1_0_0_0__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_0_0_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3709:1: ( ( () ) ) + // InternalVampireLanguage.g:3710:1: ( () ) + { + // InternalVampireLanguage.g:3710:1: ( () ) + // InternalVampireLanguage.g:3711:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0()); + // InternalVampireLanguage.g:3712:2: () + // InternalVampireLanguage.g:3712:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_0__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_0__1" + // InternalVampireLanguage.g:3720:1: rule__VLSBinary__Group_1_0_0_0__1 : rule__VLSBinary__Group_1_0_0_0__1__Impl ; + public final void rule__VLSBinary__Group_1_0_0_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3724:1: ( rule__VLSBinary__Group_1_0_0_0__1__Impl ) + // InternalVampireLanguage.g:3725:2: rule__VLSBinary__Group_1_0_0_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_0__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_0__1__Impl" + // InternalVampireLanguage.g:3731:1: rule__VLSBinary__Group_1_0_0_0__1__Impl : ( '<=>' ) ; + public final void rule__VLSBinary__Group_1_0_0_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3735:1: ( ( '<=>' ) ) + // InternalVampireLanguage.g:3736:1: ( '<=>' ) + { + // InternalVampireLanguage.g:3736:1: ( '<=>' ) + // InternalVampireLanguage.g:3737:2: '<=>' + { + before(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1()); + match(input,64,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_0__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_1__0" + // InternalVampireLanguage.g:3747:1: rule__VLSBinary__Group_1_0_0_1__0 : rule__VLSBinary__Group_1_0_0_1__0__Impl rule__VLSBinary__Group_1_0_0_1__1 ; + public final void rule__VLSBinary__Group_1_0_0_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3751:1: ( rule__VLSBinary__Group_1_0_0_1__0__Impl rule__VLSBinary__Group_1_0_0_1__1 ) + // InternalVampireLanguage.g:3752:2: rule__VLSBinary__Group_1_0_0_1__0__Impl rule__VLSBinary__Group_1_0_0_1__1 + { + pushFollow(FOLLOW_43); + rule__VLSBinary__Group_1_0_0_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_1__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_1__0__Impl" + // InternalVampireLanguage.g:3759:1: rule__VLSBinary__Group_1_0_0_1__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_0_0_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3763:1: ( ( () ) ) + // InternalVampireLanguage.g:3764:1: ( () ) + { + // InternalVampireLanguage.g:3764:1: ( () ) + // InternalVampireLanguage.g:3765:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0()); + // InternalVampireLanguage.g:3766:2: () + // InternalVampireLanguage.g:3766:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_1__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_1__1" + // InternalVampireLanguage.g:3774:1: rule__VLSBinary__Group_1_0_0_1__1 : rule__VLSBinary__Group_1_0_0_1__1__Impl ; + public final void rule__VLSBinary__Group_1_0_0_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3778:1: ( rule__VLSBinary__Group_1_0_0_1__1__Impl ) + // InternalVampireLanguage.g:3779:2: rule__VLSBinary__Group_1_0_0_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_1__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_1__1__Impl" + // InternalVampireLanguage.g:3785:1: rule__VLSBinary__Group_1_0_0_1__1__Impl : ( '=>' ) ; + public final void rule__VLSBinary__Group_1_0_0_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3789:1: ( ( '=>' ) ) + // InternalVampireLanguage.g:3790:1: ( '=>' ) + { + // InternalVampireLanguage.g:3790:1: ( '=>' ) + // InternalVampireLanguage.g:3791:2: '=>' + { + before(grammarAccess.getVLSBinaryAccess().getEqualsSignGreaterThanSignKeyword_1_0_0_1_1()); + match(input,65,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getEqualsSignGreaterThanSignKeyword_1_0_0_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_1__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_2__0" + // InternalVampireLanguage.g:3801:1: rule__VLSBinary__Group_1_0_0_2__0 : rule__VLSBinary__Group_1_0_0_2__0__Impl rule__VLSBinary__Group_1_0_0_2__1 ; + public final void rule__VLSBinary__Group_1_0_0_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3805:1: ( rule__VLSBinary__Group_1_0_0_2__0__Impl rule__VLSBinary__Group_1_0_0_2__1 ) + // InternalVampireLanguage.g:3806:2: rule__VLSBinary__Group_1_0_0_2__0__Impl rule__VLSBinary__Group_1_0_0_2__1 + { + pushFollow(FOLLOW_44); + rule__VLSBinary__Group_1_0_0_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_2__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_2__0__Impl" + // InternalVampireLanguage.g:3813:1: rule__VLSBinary__Group_1_0_0_2__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_0_0_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3817:1: ( ( () ) ) + // InternalVampireLanguage.g:3818:1: ( () ) + { + // InternalVampireLanguage.g:3818:1: ( () ) + // InternalVampireLanguage.g:3819:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0()); + // InternalVampireLanguage.g:3820:2: () + // InternalVampireLanguage.g:3820:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_2__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_2__1" + // InternalVampireLanguage.g:3828:1: rule__VLSBinary__Group_1_0_0_2__1 : rule__VLSBinary__Group_1_0_0_2__1__Impl ; + public final void rule__VLSBinary__Group_1_0_0_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3832:1: ( rule__VLSBinary__Group_1_0_0_2__1__Impl ) + // InternalVampireLanguage.g:3833:2: rule__VLSBinary__Group_1_0_0_2__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_2__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_2__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_2__1__Impl" + // InternalVampireLanguage.g:3839:1: rule__VLSBinary__Group_1_0_0_2__1__Impl : ( '<=' ) ; + public final void rule__VLSBinary__Group_1_0_0_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3843:1: ( ( '<=' ) ) + // InternalVampireLanguage.g:3844:1: ( '<=' ) + { + // InternalVampireLanguage.g:3844:1: ( '<=' ) + // InternalVampireLanguage.g:3845:2: '<=' + { + before(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignKeyword_1_0_0_2_1()); + match(input,66,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignKeyword_1_0_0_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_2__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_3__0" + // InternalVampireLanguage.g:3855:1: rule__VLSBinary__Group_1_0_0_3__0 : rule__VLSBinary__Group_1_0_0_3__0__Impl rule__VLSBinary__Group_1_0_0_3__1 ; + public final void rule__VLSBinary__Group_1_0_0_3__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3859:1: ( rule__VLSBinary__Group_1_0_0_3__0__Impl rule__VLSBinary__Group_1_0_0_3__1 ) + // InternalVampireLanguage.g:3860:2: rule__VLSBinary__Group_1_0_0_3__0__Impl rule__VLSBinary__Group_1_0_0_3__1 + { + pushFollow(FOLLOW_45); + rule__VLSBinary__Group_1_0_0_3__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_3__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_3__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_3__0__Impl" + // InternalVampireLanguage.g:3867:1: rule__VLSBinary__Group_1_0_0_3__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_0_0_3__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3871:1: ( ( () ) ) + // InternalVampireLanguage.g:3872:1: ( () ) + { + // InternalVampireLanguage.g:3872:1: ( () ) + // InternalVampireLanguage.g:3873:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0()); + // InternalVampireLanguage.g:3874:2: () + // InternalVampireLanguage.g:3874:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_3__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_3__1" + // InternalVampireLanguage.g:3882:1: rule__VLSBinary__Group_1_0_0_3__1 : rule__VLSBinary__Group_1_0_0_3__1__Impl ; + public final void rule__VLSBinary__Group_1_0_0_3__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3886:1: ( rule__VLSBinary__Group_1_0_0_3__1__Impl ) + // InternalVampireLanguage.g:3887:2: rule__VLSBinary__Group_1_0_0_3__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_3__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_3__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_3__1__Impl" + // InternalVampireLanguage.g:3893:1: rule__VLSBinary__Group_1_0_0_3__1__Impl : ( '<~>' ) ; + public final void rule__VLSBinary__Group_1_0_0_3__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3897:1: ( ( '<~>' ) ) + // InternalVampireLanguage.g:3898:1: ( '<~>' ) + { + // InternalVampireLanguage.g:3898:1: ( '<~>' ) + // InternalVampireLanguage.g:3899:2: '<~>' + { + before(grammarAccess.getVLSBinaryAccess().getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1()); + match(input,67,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_3__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_4__0" + // InternalVampireLanguage.g:3909:1: rule__VLSBinary__Group_1_0_0_4__0 : rule__VLSBinary__Group_1_0_0_4__0__Impl rule__VLSBinary__Group_1_0_0_4__1 ; + public final void rule__VLSBinary__Group_1_0_0_4__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3913:1: ( rule__VLSBinary__Group_1_0_0_4__0__Impl rule__VLSBinary__Group_1_0_0_4__1 ) + // InternalVampireLanguage.g:3914:2: rule__VLSBinary__Group_1_0_0_4__0__Impl rule__VLSBinary__Group_1_0_0_4__1 + { + pushFollow(FOLLOW_46); + rule__VLSBinary__Group_1_0_0_4__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_4__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_4__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_4__0__Impl" + // InternalVampireLanguage.g:3921:1: rule__VLSBinary__Group_1_0_0_4__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_0_0_4__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3925:1: ( ( () ) ) + // InternalVampireLanguage.g:3926:1: ( () ) + { + // InternalVampireLanguage.g:3926:1: ( () ) + // InternalVampireLanguage.g:3927:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0()); + // InternalVampireLanguage.g:3928:2: () + // InternalVampireLanguage.g:3928:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_4__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_4__1" + // InternalVampireLanguage.g:3936:1: rule__VLSBinary__Group_1_0_0_4__1 : rule__VLSBinary__Group_1_0_0_4__1__Impl ; + public final void rule__VLSBinary__Group_1_0_0_4__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3940:1: ( rule__VLSBinary__Group_1_0_0_4__1__Impl ) + // InternalVampireLanguage.g:3941:2: rule__VLSBinary__Group_1_0_0_4__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_4__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_4__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_4__1__Impl" + // InternalVampireLanguage.g:3947:1: rule__VLSBinary__Group_1_0_0_4__1__Impl : ( '~|' ) ; + public final void rule__VLSBinary__Group_1_0_0_4__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3951:1: ( ( '~|' ) ) + // InternalVampireLanguage.g:3952:1: ( '~|' ) + { + // InternalVampireLanguage.g:3952:1: ( '~|' ) + // InternalVampireLanguage.g:3953:2: '~|' + { + before(grammarAccess.getVLSBinaryAccess().getTildeVerticalLineKeyword_1_0_0_4_1()); + match(input,68,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getTildeVerticalLineKeyword_1_0_0_4_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_4__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_5__0" + // InternalVampireLanguage.g:3963:1: rule__VLSBinary__Group_1_0_0_5__0 : rule__VLSBinary__Group_1_0_0_5__0__Impl rule__VLSBinary__Group_1_0_0_5__1 ; + public final void rule__VLSBinary__Group_1_0_0_5__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3967:1: ( rule__VLSBinary__Group_1_0_0_5__0__Impl rule__VLSBinary__Group_1_0_0_5__1 ) + // InternalVampireLanguage.g:3968:2: rule__VLSBinary__Group_1_0_0_5__0__Impl rule__VLSBinary__Group_1_0_0_5__1 + { + pushFollow(FOLLOW_47); + rule__VLSBinary__Group_1_0_0_5__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_5__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_5__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_5__0__Impl" + // InternalVampireLanguage.g:3975:1: rule__VLSBinary__Group_1_0_0_5__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_0_0_5__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3979:1: ( ( () ) ) + // InternalVampireLanguage.g:3980:1: ( () ) + { + // InternalVampireLanguage.g:3980:1: ( () ) + // InternalVampireLanguage.g:3981:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0()); + // InternalVampireLanguage.g:3982:2: () + // InternalVampireLanguage.g:3982:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_5__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_5__1" + // InternalVampireLanguage.g:3990:1: rule__VLSBinary__Group_1_0_0_5__1 : rule__VLSBinary__Group_1_0_0_5__1__Impl ; + public final void rule__VLSBinary__Group_1_0_0_5__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:3994:1: ( rule__VLSBinary__Group_1_0_0_5__1__Impl ) + // InternalVampireLanguage.g:3995:2: rule__VLSBinary__Group_1_0_0_5__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_0_0_5__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_5__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_0_0_5__1__Impl" + // InternalVampireLanguage.g:4001:1: rule__VLSBinary__Group_1_0_0_5__1__Impl : ( '~&' ) ; + public final void rule__VLSBinary__Group_1_0_0_5__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4005:1: ( ( '~&' ) ) + // InternalVampireLanguage.g:4006:1: ( '~&' ) + { + // InternalVampireLanguage.g:4006:1: ( '~&' ) + // InternalVampireLanguage.g:4007:2: '~&' + { + before(grammarAccess.getVLSBinaryAccess().getTildeAmpersandKeyword_1_0_0_5_1()); + match(input,69,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getTildeAmpersandKeyword_1_0_0_5_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_0_0_5__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_1__0" + // InternalVampireLanguage.g:4017:1: rule__VLSBinary__Group_1_1__0 : rule__VLSBinary__Group_1_1__0__Impl rule__VLSBinary__Group_1_1__1 ; + public final void rule__VLSBinary__Group_1_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4021:1: ( rule__VLSBinary__Group_1_1__0__Impl rule__VLSBinary__Group_1_1__1 ) + // InternalVampireLanguage.g:4022:2: rule__VLSBinary__Group_1_1__0__Impl rule__VLSBinary__Group_1_1__1 + { + pushFollow(FOLLOW_48); + rule__VLSBinary__Group_1_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_1__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_1__0__Impl" + // InternalVampireLanguage.g:4029:1: rule__VLSBinary__Group_1_1__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4033:1: ( ( () ) ) + // InternalVampireLanguage.g:4034:1: ( () ) + { + // InternalVampireLanguage.g:4034:1: ( () ) + // InternalVampireLanguage.g:4035:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0()); + // InternalVampireLanguage.g:4036:2: () + // InternalVampireLanguage.g:4036:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_1__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_1__1" + // InternalVampireLanguage.g:4044:1: rule__VLSBinary__Group_1_1__1 : rule__VLSBinary__Group_1_1__1__Impl rule__VLSBinary__Group_1_1__2 ; + public final void rule__VLSBinary__Group_1_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4048:1: ( rule__VLSBinary__Group_1_1__1__Impl rule__VLSBinary__Group_1_1__2 ) + // InternalVampireLanguage.g:4049:2: rule__VLSBinary__Group_1_1__1__Impl rule__VLSBinary__Group_1_1__2 + { + pushFollow(FOLLOW_26); + rule__VLSBinary__Group_1_1__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_1__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_1__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_1__1__Impl" + // InternalVampireLanguage.g:4056:1: rule__VLSBinary__Group_1_1__1__Impl : ( '&' ) ; + public final void rule__VLSBinary__Group_1_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4060:1: ( ( '&' ) ) + // InternalVampireLanguage.g:4061:1: ( '&' ) + { + // InternalVampireLanguage.g:4061:1: ( '&' ) + // InternalVampireLanguage.g:4062:2: '&' + { + before(grammarAccess.getVLSBinaryAccess().getAmpersandKeyword_1_1_1()); + match(input,70,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getAmpersandKeyword_1_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_1__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_1__2" + // InternalVampireLanguage.g:4071:1: rule__VLSBinary__Group_1_1__2 : rule__VLSBinary__Group_1_1__2__Impl ; + public final void rule__VLSBinary__Group_1_1__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4075:1: ( rule__VLSBinary__Group_1_1__2__Impl ) + // InternalVampireLanguage.g:4076:2: rule__VLSBinary__Group_1_1__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_1__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_1__2" + + + // $ANTLR start "rule__VLSBinary__Group_1_1__2__Impl" + // InternalVampireLanguage.g:4082:1: rule__VLSBinary__Group_1_1__2__Impl : ( ( rule__VLSBinary__RightAssignment_1_1_2 ) ) ; + public final void rule__VLSBinary__Group_1_1__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4086:1: ( ( ( rule__VLSBinary__RightAssignment_1_1_2 ) ) ) + // InternalVampireLanguage.g:4087:1: ( ( rule__VLSBinary__RightAssignment_1_1_2 ) ) + { + // InternalVampireLanguage.g:4087:1: ( ( rule__VLSBinary__RightAssignment_1_1_2 ) ) + // InternalVampireLanguage.g:4088:2: ( rule__VLSBinary__RightAssignment_1_1_2 ) + { + before(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_1_2()); + // InternalVampireLanguage.g:4089:2: ( rule__VLSBinary__RightAssignment_1_1_2 ) + // InternalVampireLanguage.g:4089:3: rule__VLSBinary__RightAssignment_1_1_2 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__RightAssignment_1_1_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_1_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_1__2__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_2__0" + // InternalVampireLanguage.g:4098:1: rule__VLSBinary__Group_1_2__0 : rule__VLSBinary__Group_1_2__0__Impl rule__VLSBinary__Group_1_2__1 ; + public final void rule__VLSBinary__Group_1_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4102:1: ( rule__VLSBinary__Group_1_2__0__Impl rule__VLSBinary__Group_1_2__1 ) + // InternalVampireLanguage.g:4103:2: rule__VLSBinary__Group_1_2__0__Impl rule__VLSBinary__Group_1_2__1 + { + pushFollow(FOLLOW_49); + rule__VLSBinary__Group_1_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_2__0" + + + // $ANTLR start "rule__VLSBinary__Group_1_2__0__Impl" + // InternalVampireLanguage.g:4110:1: rule__VLSBinary__Group_1_2__0__Impl : ( () ) ; + public final void rule__VLSBinary__Group_1_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4114:1: ( ( () ) ) + // InternalVampireLanguage.g:4115:1: ( () ) + { + // InternalVampireLanguage.g:4115:1: ( () ) + // InternalVampireLanguage.g:4116:2: () + { + before(grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0()); + // InternalVampireLanguage.g:4117:2: () + // InternalVampireLanguage.g:4117:3: + { + } + + after(grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_2__0__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_2__1" + // InternalVampireLanguage.g:4125:1: rule__VLSBinary__Group_1_2__1 : rule__VLSBinary__Group_1_2__1__Impl rule__VLSBinary__Group_1_2__2 ; + public final void rule__VLSBinary__Group_1_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4129:1: ( rule__VLSBinary__Group_1_2__1__Impl rule__VLSBinary__Group_1_2__2 ) + // InternalVampireLanguage.g:4130:2: rule__VLSBinary__Group_1_2__1__Impl rule__VLSBinary__Group_1_2__2 + { + pushFollow(FOLLOW_26); + rule__VLSBinary__Group_1_2__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_2__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_2__1" + + + // $ANTLR start "rule__VLSBinary__Group_1_2__1__Impl" + // InternalVampireLanguage.g:4137:1: rule__VLSBinary__Group_1_2__1__Impl : ( '|' ) ; + public final void rule__VLSBinary__Group_1_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4141:1: ( ( '|' ) ) + // InternalVampireLanguage.g:4142:1: ( '|' ) + { + // InternalVampireLanguage.g:4142:1: ( '|' ) + // InternalVampireLanguage.g:4143:2: '|' + { + before(grammarAccess.getVLSBinaryAccess().getVerticalLineKeyword_1_2_1()); + match(input,71,FOLLOW_2); + after(grammarAccess.getVLSBinaryAccess().getVerticalLineKeyword_1_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_2__1__Impl" + + + // $ANTLR start "rule__VLSBinary__Group_1_2__2" + // InternalVampireLanguage.g:4152:1: rule__VLSBinary__Group_1_2__2 : rule__VLSBinary__Group_1_2__2__Impl ; + public final void rule__VLSBinary__Group_1_2__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4156:1: ( rule__VLSBinary__Group_1_2__2__Impl ) + // InternalVampireLanguage.g:4157:2: rule__VLSBinary__Group_1_2__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSBinary__Group_1_2__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_2__2" + + + // $ANTLR start "rule__VLSBinary__Group_1_2__2__Impl" + // InternalVampireLanguage.g:4163:1: rule__VLSBinary__Group_1_2__2__Impl : ( ( rule__VLSBinary__RightAssignment_1_2_2 ) ) ; + public final void rule__VLSBinary__Group_1_2__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4167:1: ( ( ( rule__VLSBinary__RightAssignment_1_2_2 ) ) ) + // InternalVampireLanguage.g:4168:1: ( ( rule__VLSBinary__RightAssignment_1_2_2 ) ) + { + // InternalVampireLanguage.g:4168:1: ( ( rule__VLSBinary__RightAssignment_1_2_2 ) ) + // InternalVampireLanguage.g:4169:2: ( rule__VLSBinary__RightAssignment_1_2_2 ) + { + before(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_2_2()); + // InternalVampireLanguage.g:4170:2: ( rule__VLSBinary__RightAssignment_1_2_2 ) + // InternalVampireLanguage.g:4170:3: rule__VLSBinary__RightAssignment_1_2_2 + { + pushFollow(FOLLOW_2); + rule__VLSBinary__RightAssignment_1_2_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSBinaryAccess().getRightAssignment_1_2_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__Group_1_2__2__Impl" + + + // $ANTLR start "rule__VLSUnitaryFormula__Group_4__0" + // InternalVampireLanguage.g:4179:1: rule__VLSUnitaryFormula__Group_4__0 : rule__VLSUnitaryFormula__Group_4__0__Impl rule__VLSUnitaryFormula__Group_4__1 ; + public final void rule__VLSUnitaryFormula__Group_4__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4183:1: ( rule__VLSUnitaryFormula__Group_4__0__Impl rule__VLSUnitaryFormula__Group_4__1 ) + // InternalVampireLanguage.g:4184:2: rule__VLSUnitaryFormula__Group_4__0__Impl rule__VLSUnitaryFormula__Group_4__1 + { + pushFollow(FOLLOW_26); + rule__VLSUnitaryFormula__Group_4__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnitaryFormula__Group_4__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Group_4__0" + + + // $ANTLR start "rule__VLSUnitaryFormula__Group_4__0__Impl" + // InternalVampireLanguage.g:4191:1: rule__VLSUnitaryFormula__Group_4__0__Impl : ( '(' ) ; + public final void rule__VLSUnitaryFormula__Group_4__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4195:1: ( ( '(' ) ) + // InternalVampireLanguage.g:4196:1: ( '(' ) + { + // InternalVampireLanguage.g:4196:1: ( '(' ) + // InternalVampireLanguage.g:4197:2: '(' + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Group_4__0__Impl" + + + // $ANTLR start "rule__VLSUnitaryFormula__Group_4__1" + // InternalVampireLanguage.g:4206:1: rule__VLSUnitaryFormula__Group_4__1 : rule__VLSUnitaryFormula__Group_4__1__Impl rule__VLSUnitaryFormula__Group_4__2 ; + public final void rule__VLSUnitaryFormula__Group_4__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4210:1: ( rule__VLSUnitaryFormula__Group_4__1__Impl rule__VLSUnitaryFormula__Group_4__2 ) + // InternalVampireLanguage.g:4211:2: rule__VLSUnitaryFormula__Group_4__1__Impl rule__VLSUnitaryFormula__Group_4__2 + { + pushFollow(FOLLOW_33); + rule__VLSUnitaryFormula__Group_4__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnitaryFormula__Group_4__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Group_4__1" + + + // $ANTLR start "rule__VLSUnitaryFormula__Group_4__1__Impl" + // InternalVampireLanguage.g:4218:1: rule__VLSUnitaryFormula__Group_4__1__Impl : ( ruleVLSTerm ) ; + public final void rule__VLSUnitaryFormula__Group_4__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4222:1: ( ( ruleVLSTerm ) ) + // InternalVampireLanguage.g:4223:1: ( ruleVLSTerm ) + { + // InternalVampireLanguage.g:4223:1: ( ruleVLSTerm ) + // InternalVampireLanguage.g:4224:2: ruleVLSTerm + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getVLSTermParserRuleCall_4_1()); + pushFollow(FOLLOW_2); + ruleVLSTerm(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryFormulaAccess().getVLSTermParserRuleCall_4_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Group_4__1__Impl" + + + // $ANTLR start "rule__VLSUnitaryFormula__Group_4__2" + // InternalVampireLanguage.g:4233:1: rule__VLSUnitaryFormula__Group_4__2 : rule__VLSUnitaryFormula__Group_4__2__Impl ; + public final void rule__VLSUnitaryFormula__Group_4__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4237:1: ( rule__VLSUnitaryFormula__Group_4__2__Impl ) + // InternalVampireLanguage.g:4238:2: rule__VLSUnitaryFormula__Group_4__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnitaryFormula__Group_4__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Group_4__2" + + + // $ANTLR start "rule__VLSUnitaryFormula__Group_4__2__Impl" + // InternalVampireLanguage.g:4244:1: rule__VLSUnitaryFormula__Group_4__2__Impl : ( ')' ) ; + public final void rule__VLSUnitaryFormula__Group_4__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4248:1: ( ( ')' ) ) + // InternalVampireLanguage.g:4249:1: ( ')' ) + { + // InternalVampireLanguage.g:4249:1: ( ')' ) + // InternalVampireLanguage.g:4250:2: ')' + { + before(grammarAccess.getVLSUnitaryFormulaAccess().getRightParenthesisKeyword_4_2()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSUnitaryFormulaAccess().getRightParenthesisKeyword_4_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryFormula__Group_4__2__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group__0" + // InternalVampireLanguage.g:4260:1: rule__VLSUniversalQuantifier__Group__0 : rule__VLSUniversalQuantifier__Group__0__Impl rule__VLSUniversalQuantifier__Group__1 ; + public final void rule__VLSUniversalQuantifier__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4264:1: ( rule__VLSUniversalQuantifier__Group__0__Impl rule__VLSUniversalQuantifier__Group__1 ) + // InternalVampireLanguage.g:4265:2: rule__VLSUniversalQuantifier__Group__0__Impl rule__VLSUniversalQuantifier__Group__1 + { + pushFollow(FOLLOW_50); + rule__VLSUniversalQuantifier__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group__0" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group__0__Impl" + // InternalVampireLanguage.g:4272:1: rule__VLSUniversalQuantifier__Group__0__Impl : ( () ) ; + public final void rule__VLSUniversalQuantifier__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4276:1: ( ( () ) ) + // InternalVampireLanguage.g:4277:1: ( () ) + { + // InternalVampireLanguage.g:4277:1: ( () ) + // InternalVampireLanguage.g:4278:2: () + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVLSUniversalQuantifierAction_0()); + // InternalVampireLanguage.g:4279:2: () + // InternalVampireLanguage.g:4279:3: + { + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVLSUniversalQuantifierAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group__0__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group__1" + // InternalVampireLanguage.g:4287:1: rule__VLSUniversalQuantifier__Group__1 : rule__VLSUniversalQuantifier__Group__1__Impl rule__VLSUniversalQuantifier__Group__2 ; + public final void rule__VLSUniversalQuantifier__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4291:1: ( rule__VLSUniversalQuantifier__Group__1__Impl rule__VLSUniversalQuantifier__Group__2 ) + // InternalVampireLanguage.g:4292:2: rule__VLSUniversalQuantifier__Group__1__Impl rule__VLSUniversalQuantifier__Group__2 + { + pushFollow(FOLLOW_26); + rule__VLSUniversalQuantifier__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group__1" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group__1__Impl" + // InternalVampireLanguage.g:4299:1: rule__VLSUniversalQuantifier__Group__1__Impl : ( ( rule__VLSUniversalQuantifier__Group_1__0 ) ) ; + public final void rule__VLSUniversalQuantifier__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4303:1: ( ( ( rule__VLSUniversalQuantifier__Group_1__0 ) ) ) + // InternalVampireLanguage.g:4304:1: ( ( rule__VLSUniversalQuantifier__Group_1__0 ) ) + { + // InternalVampireLanguage.g:4304:1: ( ( rule__VLSUniversalQuantifier__Group_1__0 ) ) + // InternalVampireLanguage.g:4305:2: ( rule__VLSUniversalQuantifier__Group_1__0 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1()); + // InternalVampireLanguage.g:4306:2: ( rule__VLSUniversalQuantifier__Group_1__0 ) + // InternalVampireLanguage.g:4306:3: rule__VLSUniversalQuantifier__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group__1__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group__2" + // InternalVampireLanguage.g:4314:1: rule__VLSUniversalQuantifier__Group__2 : rule__VLSUniversalQuantifier__Group__2__Impl ; + public final void rule__VLSUniversalQuantifier__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4318:1: ( rule__VLSUniversalQuantifier__Group__2__Impl ) + // InternalVampireLanguage.g:4319:2: rule__VLSUniversalQuantifier__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group__2" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group__2__Impl" + // InternalVampireLanguage.g:4325:1: rule__VLSUniversalQuantifier__Group__2__Impl : ( ( rule__VLSUniversalQuantifier__OperandAssignment_2 ) ) ; + public final void rule__VLSUniversalQuantifier__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4329:1: ( ( ( rule__VLSUniversalQuantifier__OperandAssignment_2 ) ) ) + // InternalVampireLanguage.g:4330:1: ( ( rule__VLSUniversalQuantifier__OperandAssignment_2 ) ) + { + // InternalVampireLanguage.g:4330:1: ( ( rule__VLSUniversalQuantifier__OperandAssignment_2 ) ) + // InternalVampireLanguage.g:4331:2: ( rule__VLSUniversalQuantifier__OperandAssignment_2 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getOperandAssignment_2()); + // InternalVampireLanguage.g:4332:2: ( rule__VLSUniversalQuantifier__OperandAssignment_2 ) + // InternalVampireLanguage.g:4332:3: rule__VLSUniversalQuantifier__OperandAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__OperandAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getOperandAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group__2__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__0" + // InternalVampireLanguage.g:4341:1: rule__VLSUniversalQuantifier__Group_1__0 : rule__VLSUniversalQuantifier__Group_1__0__Impl rule__VLSUniversalQuantifier__Group_1__1 ; + public final void rule__VLSUniversalQuantifier__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4345:1: ( rule__VLSUniversalQuantifier__Group_1__0__Impl rule__VLSUniversalQuantifier__Group_1__1 ) + // InternalVampireLanguage.g:4346:2: rule__VLSUniversalQuantifier__Group_1__0__Impl rule__VLSUniversalQuantifier__Group_1__1 + { + pushFollow(FOLLOW_16); + rule__VLSUniversalQuantifier__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__0" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__0__Impl" + // InternalVampireLanguage.g:4353:1: rule__VLSUniversalQuantifier__Group_1__0__Impl : ( '!' ) ; + public final void rule__VLSUniversalQuantifier__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4357:1: ( ( '!' ) ) + // InternalVampireLanguage.g:4358:1: ( '!' ) + { + // InternalVampireLanguage.g:4358:1: ( '!' ) + // InternalVampireLanguage.g:4359:2: '!' + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getExclamationMarkKeyword_1_0()); + match(input,72,FOLLOW_2); + after(grammarAccess.getVLSUniversalQuantifierAccess().getExclamationMarkKeyword_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__1" + // InternalVampireLanguage.g:4368:1: rule__VLSUniversalQuantifier__Group_1__1 : rule__VLSUniversalQuantifier__Group_1__1__Impl rule__VLSUniversalQuantifier__Group_1__2 ; + public final void rule__VLSUniversalQuantifier__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4372:1: ( rule__VLSUniversalQuantifier__Group_1__1__Impl rule__VLSUniversalQuantifier__Group_1__2 ) + // InternalVampireLanguage.g:4373:2: rule__VLSUniversalQuantifier__Group_1__1__Impl rule__VLSUniversalQuantifier__Group_1__2 + { + pushFollow(FOLLOW_51); + rule__VLSUniversalQuantifier__Group_1__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__1" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__1__Impl" + // InternalVampireLanguage.g:4380:1: rule__VLSUniversalQuantifier__Group_1__1__Impl : ( '[' ) ; + public final void rule__VLSUniversalQuantifier__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4384:1: ( ( '[' ) ) + // InternalVampireLanguage.g:4385:1: ( '[' ) + { + // InternalVampireLanguage.g:4385:1: ( '[' ) + // InternalVampireLanguage.g:4386:2: '[' + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + match(input,49,FOLLOW_2); + after(grammarAccess.getVLSUniversalQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__2" + // InternalVampireLanguage.g:4395:1: rule__VLSUniversalQuantifier__Group_1__2 : rule__VLSUniversalQuantifier__Group_1__2__Impl rule__VLSUniversalQuantifier__Group_1__3 ; + public final void rule__VLSUniversalQuantifier__Group_1__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4399:1: ( rule__VLSUniversalQuantifier__Group_1__2__Impl rule__VLSUniversalQuantifier__Group_1__3 ) + // InternalVampireLanguage.g:4400:2: rule__VLSUniversalQuantifier__Group_1__2__Impl rule__VLSUniversalQuantifier__Group_1__3 + { + pushFollow(FOLLOW_52); + rule__VLSUniversalQuantifier__Group_1__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__2" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__2__Impl" + // InternalVampireLanguage.g:4407:1: rule__VLSUniversalQuantifier__Group_1__2__Impl : ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_2 ) ) ; + public final void rule__VLSUniversalQuantifier__Group_1__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4411:1: ( ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_2 ) ) ) + // InternalVampireLanguage.g:4412:1: ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_2 ) ) + { + // InternalVampireLanguage.g:4412:1: ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_2 ) ) + // InternalVampireLanguage.g:4413:2: ( rule__VLSUniversalQuantifier__VariablesAssignment_1_2 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_2()); + // InternalVampireLanguage.g:4414:2: ( rule__VLSUniversalQuantifier__VariablesAssignment_1_2 ) + // InternalVampireLanguage.g:4414:3: rule__VLSUniversalQuantifier__VariablesAssignment_1_2 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__VariablesAssignment_1_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__2__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__3" + // InternalVampireLanguage.g:4422:1: rule__VLSUniversalQuantifier__Group_1__3 : rule__VLSUniversalQuantifier__Group_1__3__Impl rule__VLSUniversalQuantifier__Group_1__4 ; + public final void rule__VLSUniversalQuantifier__Group_1__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4426:1: ( rule__VLSUniversalQuantifier__Group_1__3__Impl rule__VLSUniversalQuantifier__Group_1__4 ) + // InternalVampireLanguage.g:4427:2: rule__VLSUniversalQuantifier__Group_1__3__Impl rule__VLSUniversalQuantifier__Group_1__4 + { + pushFollow(FOLLOW_52); + rule__VLSUniversalQuantifier__Group_1__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__3" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__3__Impl" + // InternalVampireLanguage.g:4434:1: rule__VLSUniversalQuantifier__Group_1__3__Impl : ( ( rule__VLSUniversalQuantifier__Group_1_3__0 )* ) ; + public final void rule__VLSUniversalQuantifier__Group_1__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4438:1: ( ( ( rule__VLSUniversalQuantifier__Group_1_3__0 )* ) ) + // InternalVampireLanguage.g:4439:1: ( ( rule__VLSUniversalQuantifier__Group_1_3__0 )* ) + { + // InternalVampireLanguage.g:4439:1: ( ( rule__VLSUniversalQuantifier__Group_1_3__0 )* ) + // InternalVampireLanguage.g:4440:2: ( rule__VLSUniversalQuantifier__Group_1_3__0 )* + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1_3()); + // InternalVampireLanguage.g:4441:2: ( rule__VLSUniversalQuantifier__Group_1_3__0 )* + loop39: + do { + int alt39=2; + int LA39_0 = input.LA(1); + + if ( (LA39_0==56) ) { + alt39=1; + } + + + switch (alt39) { + case 1 : + // InternalVampireLanguage.g:4441:3: rule__VLSUniversalQuantifier__Group_1_3__0 + { + pushFollow(FOLLOW_34); + rule__VLSUniversalQuantifier__Group_1_3__0(); + + state._fsp--; + + + } + break; + + default : + break loop39; + } + } while (true); + + after(grammarAccess.getVLSUniversalQuantifierAccess().getGroup_1_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__3__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__4" + // InternalVampireLanguage.g:4449:1: rule__VLSUniversalQuantifier__Group_1__4 : rule__VLSUniversalQuantifier__Group_1__4__Impl rule__VLSUniversalQuantifier__Group_1__5 ; + public final void rule__VLSUniversalQuantifier__Group_1__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4453:1: ( rule__VLSUniversalQuantifier__Group_1__4__Impl rule__VLSUniversalQuantifier__Group_1__5 ) + // InternalVampireLanguage.g:4454:2: rule__VLSUniversalQuantifier__Group_1__4__Impl rule__VLSUniversalQuantifier__Group_1__5 + { + pushFollow(FOLLOW_35); + rule__VLSUniversalQuantifier__Group_1__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__4" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__4__Impl" + // InternalVampireLanguage.g:4461:1: rule__VLSUniversalQuantifier__Group_1__4__Impl : ( ']' ) ; + public final void rule__VLSUniversalQuantifier__Group_1__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4465:1: ( ( ']' ) ) + // InternalVampireLanguage.g:4466:1: ( ']' ) + { + // InternalVampireLanguage.g:4466:1: ( ']' ) + // InternalVampireLanguage.g:4467:2: ']' + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getRightSquareBracketKeyword_1_4()); + match(input,50,FOLLOW_2); + after(grammarAccess.getVLSUniversalQuantifierAccess().getRightSquareBracketKeyword_1_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__4__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__5" + // InternalVampireLanguage.g:4476:1: rule__VLSUniversalQuantifier__Group_1__5 : rule__VLSUniversalQuantifier__Group_1__5__Impl ; + public final void rule__VLSUniversalQuantifier__Group_1__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4480:1: ( rule__VLSUniversalQuantifier__Group_1__5__Impl ) + // InternalVampireLanguage.g:4481:2: rule__VLSUniversalQuantifier__Group_1__5__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1__5__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__5" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1__5__Impl" + // InternalVampireLanguage.g:4487:1: rule__VLSUniversalQuantifier__Group_1__5__Impl : ( ':' ) ; + public final void rule__VLSUniversalQuantifier__Group_1__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4491:1: ( ( ':' ) ) + // InternalVampireLanguage.g:4492:1: ( ':' ) + { + // InternalVampireLanguage.g:4492:1: ( ':' ) + // InternalVampireLanguage.g:4493:2: ':' + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getColonKeyword_1_5()); + match(input,61,FOLLOW_2); + after(grammarAccess.getVLSUniversalQuantifierAccess().getColonKeyword_1_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1__5__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1_3__0" + // InternalVampireLanguage.g:4503:1: rule__VLSUniversalQuantifier__Group_1_3__0 : rule__VLSUniversalQuantifier__Group_1_3__0__Impl rule__VLSUniversalQuantifier__Group_1_3__1 ; + public final void rule__VLSUniversalQuantifier__Group_1_3__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4507:1: ( rule__VLSUniversalQuantifier__Group_1_3__0__Impl rule__VLSUniversalQuantifier__Group_1_3__1 ) + // InternalVampireLanguage.g:4508:2: rule__VLSUniversalQuantifier__Group_1_3__0__Impl rule__VLSUniversalQuantifier__Group_1_3__1 + { + pushFollow(FOLLOW_51); + rule__VLSUniversalQuantifier__Group_1_3__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1_3__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1_3__0" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1_3__0__Impl" + // InternalVampireLanguage.g:4515:1: rule__VLSUniversalQuantifier__Group_1_3__0__Impl : ( ',' ) ; + public final void rule__VLSUniversalQuantifier__Group_1_3__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4519:1: ( ( ',' ) ) + // InternalVampireLanguage.g:4520:1: ( ',' ) + { + // InternalVampireLanguage.g:4520:1: ( ',' ) + // InternalVampireLanguage.g:4521:2: ',' + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getCommaKeyword_1_3_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSUniversalQuantifierAccess().getCommaKeyword_1_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1_3__0__Impl" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1_3__1" + // InternalVampireLanguage.g:4530:1: rule__VLSUniversalQuantifier__Group_1_3__1 : rule__VLSUniversalQuantifier__Group_1_3__1__Impl ; + public final void rule__VLSUniversalQuantifier__Group_1_3__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4534:1: ( rule__VLSUniversalQuantifier__Group_1_3__1__Impl ) + // InternalVampireLanguage.g:4535:2: rule__VLSUniversalQuantifier__Group_1_3__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__Group_1_3__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1_3__1" + + + // $ANTLR start "rule__VLSUniversalQuantifier__Group_1_3__1__Impl" + // InternalVampireLanguage.g:4541:1: rule__VLSUniversalQuantifier__Group_1_3__1__Impl : ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 ) ) ; + public final void rule__VLSUniversalQuantifier__Group_1_3__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4545:1: ( ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 ) ) ) + // InternalVampireLanguage.g:4546:1: ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 ) ) + { + // InternalVampireLanguage.g:4546:1: ( ( rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 ) ) + // InternalVampireLanguage.g:4547:2: ( rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_3_1()); + // InternalVampireLanguage.g:4548:2: ( rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 ) + // InternalVampireLanguage.g:4548:3: rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAssignment_1_3_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__Group_1_3__1__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group__0" + // InternalVampireLanguage.g:4557:1: rule__VLSExistentialQuantifier__Group__0 : rule__VLSExistentialQuantifier__Group__0__Impl rule__VLSExistentialQuantifier__Group__1 ; + public final void rule__VLSExistentialQuantifier__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4561:1: ( rule__VLSExistentialQuantifier__Group__0__Impl rule__VLSExistentialQuantifier__Group__1 ) + // InternalVampireLanguage.g:4562:2: rule__VLSExistentialQuantifier__Group__0__Impl rule__VLSExistentialQuantifier__Group__1 + { + pushFollow(FOLLOW_53); + rule__VLSExistentialQuantifier__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group__0" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group__0__Impl" + // InternalVampireLanguage.g:4569:1: rule__VLSExistentialQuantifier__Group__0__Impl : ( () ) ; + public final void rule__VLSExistentialQuantifier__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4573:1: ( ( () ) ) + // InternalVampireLanguage.g:4574:1: ( () ) + { + // InternalVampireLanguage.g:4574:1: ( () ) + // InternalVampireLanguage.g:4575:2: () + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVLSExistentialQuantifierAction_0()); + // InternalVampireLanguage.g:4576:2: () + // InternalVampireLanguage.g:4576:3: + { + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVLSExistentialQuantifierAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group__0__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group__1" + // InternalVampireLanguage.g:4584:1: rule__VLSExistentialQuantifier__Group__1 : rule__VLSExistentialQuantifier__Group__1__Impl rule__VLSExistentialQuantifier__Group__2 ; + public final void rule__VLSExistentialQuantifier__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4588:1: ( rule__VLSExistentialQuantifier__Group__1__Impl rule__VLSExistentialQuantifier__Group__2 ) + // InternalVampireLanguage.g:4589:2: rule__VLSExistentialQuantifier__Group__1__Impl rule__VLSExistentialQuantifier__Group__2 + { + pushFollow(FOLLOW_26); + rule__VLSExistentialQuantifier__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group__1" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group__1__Impl" + // InternalVampireLanguage.g:4596:1: rule__VLSExistentialQuantifier__Group__1__Impl : ( ( rule__VLSExistentialQuantifier__Group_1__0 ) ) ; + public final void rule__VLSExistentialQuantifier__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4600:1: ( ( ( rule__VLSExistentialQuantifier__Group_1__0 ) ) ) + // InternalVampireLanguage.g:4601:1: ( ( rule__VLSExistentialQuantifier__Group_1__0 ) ) + { + // InternalVampireLanguage.g:4601:1: ( ( rule__VLSExistentialQuantifier__Group_1__0 ) ) + // InternalVampireLanguage.g:4602:2: ( rule__VLSExistentialQuantifier__Group_1__0 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1()); + // InternalVampireLanguage.g:4603:2: ( rule__VLSExistentialQuantifier__Group_1__0 ) + // InternalVampireLanguage.g:4603:3: rule__VLSExistentialQuantifier__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group__1__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group__2" + // InternalVampireLanguage.g:4611:1: rule__VLSExistentialQuantifier__Group__2 : rule__VLSExistentialQuantifier__Group__2__Impl ; + public final void rule__VLSExistentialQuantifier__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4615:1: ( rule__VLSExistentialQuantifier__Group__2__Impl ) + // InternalVampireLanguage.g:4616:2: rule__VLSExistentialQuantifier__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group__2" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group__2__Impl" + // InternalVampireLanguage.g:4622:1: rule__VLSExistentialQuantifier__Group__2__Impl : ( ( rule__VLSExistentialQuantifier__OperandAssignment_2 ) ) ; + public final void rule__VLSExistentialQuantifier__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4626:1: ( ( ( rule__VLSExistentialQuantifier__OperandAssignment_2 ) ) ) + // InternalVampireLanguage.g:4627:1: ( ( rule__VLSExistentialQuantifier__OperandAssignment_2 ) ) + { + // InternalVampireLanguage.g:4627:1: ( ( rule__VLSExistentialQuantifier__OperandAssignment_2 ) ) + // InternalVampireLanguage.g:4628:2: ( rule__VLSExistentialQuantifier__OperandAssignment_2 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getOperandAssignment_2()); + // InternalVampireLanguage.g:4629:2: ( rule__VLSExistentialQuantifier__OperandAssignment_2 ) + // InternalVampireLanguage.g:4629:3: rule__VLSExistentialQuantifier__OperandAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__OperandAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getOperandAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group__2__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__0" + // InternalVampireLanguage.g:4638:1: rule__VLSExistentialQuantifier__Group_1__0 : rule__VLSExistentialQuantifier__Group_1__0__Impl rule__VLSExistentialQuantifier__Group_1__1 ; + public final void rule__VLSExistentialQuantifier__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4642:1: ( rule__VLSExistentialQuantifier__Group_1__0__Impl rule__VLSExistentialQuantifier__Group_1__1 ) + // InternalVampireLanguage.g:4643:2: rule__VLSExistentialQuantifier__Group_1__0__Impl rule__VLSExistentialQuantifier__Group_1__1 + { + pushFollow(FOLLOW_16); + rule__VLSExistentialQuantifier__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__0" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__0__Impl" + // InternalVampireLanguage.g:4650:1: rule__VLSExistentialQuantifier__Group_1__0__Impl : ( '?' ) ; + public final void rule__VLSExistentialQuantifier__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4654:1: ( ( '?' ) ) + // InternalVampireLanguage.g:4655:1: ( '?' ) + { + // InternalVampireLanguage.g:4655:1: ( '?' ) + // InternalVampireLanguage.g:4656:2: '?' + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getQuestionMarkKeyword_1_0()); + match(input,73,FOLLOW_2); + after(grammarAccess.getVLSExistentialQuantifierAccess().getQuestionMarkKeyword_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__1" + // InternalVampireLanguage.g:4665:1: rule__VLSExistentialQuantifier__Group_1__1 : rule__VLSExistentialQuantifier__Group_1__1__Impl rule__VLSExistentialQuantifier__Group_1__2 ; + public final void rule__VLSExistentialQuantifier__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4669:1: ( rule__VLSExistentialQuantifier__Group_1__1__Impl rule__VLSExistentialQuantifier__Group_1__2 ) + // InternalVampireLanguage.g:4670:2: rule__VLSExistentialQuantifier__Group_1__1__Impl rule__VLSExistentialQuantifier__Group_1__2 + { + pushFollow(FOLLOW_51); + rule__VLSExistentialQuantifier__Group_1__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__1" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__1__Impl" + // InternalVampireLanguage.g:4677:1: rule__VLSExistentialQuantifier__Group_1__1__Impl : ( '[' ) ; + public final void rule__VLSExistentialQuantifier__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4681:1: ( ( '[' ) ) + // InternalVampireLanguage.g:4682:1: ( '[' ) + { + // InternalVampireLanguage.g:4682:1: ( '[' ) + // InternalVampireLanguage.g:4683:2: '[' + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + match(input,49,FOLLOW_2); + after(grammarAccess.getVLSExistentialQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__2" + // InternalVampireLanguage.g:4692:1: rule__VLSExistentialQuantifier__Group_1__2 : rule__VLSExistentialQuantifier__Group_1__2__Impl rule__VLSExistentialQuantifier__Group_1__3 ; + public final void rule__VLSExistentialQuantifier__Group_1__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4696:1: ( rule__VLSExistentialQuantifier__Group_1__2__Impl rule__VLSExistentialQuantifier__Group_1__3 ) + // InternalVampireLanguage.g:4697:2: rule__VLSExistentialQuantifier__Group_1__2__Impl rule__VLSExistentialQuantifier__Group_1__3 + { + pushFollow(FOLLOW_52); + rule__VLSExistentialQuantifier__Group_1__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__2" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__2__Impl" + // InternalVampireLanguage.g:4704:1: rule__VLSExistentialQuantifier__Group_1__2__Impl : ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_2 ) ) ; + public final void rule__VLSExistentialQuantifier__Group_1__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4708:1: ( ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_2 ) ) ) + // InternalVampireLanguage.g:4709:1: ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_2 ) ) + { + // InternalVampireLanguage.g:4709:1: ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_2 ) ) + // InternalVampireLanguage.g:4710:2: ( rule__VLSExistentialQuantifier__VariablesAssignment_1_2 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_2()); + // InternalVampireLanguage.g:4711:2: ( rule__VLSExistentialQuantifier__VariablesAssignment_1_2 ) + // InternalVampireLanguage.g:4711:3: rule__VLSExistentialQuantifier__VariablesAssignment_1_2 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__VariablesAssignment_1_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__2__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__3" + // InternalVampireLanguage.g:4719:1: rule__VLSExistentialQuantifier__Group_1__3 : rule__VLSExistentialQuantifier__Group_1__3__Impl rule__VLSExistentialQuantifier__Group_1__4 ; + public final void rule__VLSExistentialQuantifier__Group_1__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4723:1: ( rule__VLSExistentialQuantifier__Group_1__3__Impl rule__VLSExistentialQuantifier__Group_1__4 ) + // InternalVampireLanguage.g:4724:2: rule__VLSExistentialQuantifier__Group_1__3__Impl rule__VLSExistentialQuantifier__Group_1__4 + { + pushFollow(FOLLOW_52); + rule__VLSExistentialQuantifier__Group_1__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__3" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__3__Impl" + // InternalVampireLanguage.g:4731:1: rule__VLSExistentialQuantifier__Group_1__3__Impl : ( ( rule__VLSExistentialQuantifier__Group_1_3__0 )* ) ; + public final void rule__VLSExistentialQuantifier__Group_1__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4735:1: ( ( ( rule__VLSExistentialQuantifier__Group_1_3__0 )* ) ) + // InternalVampireLanguage.g:4736:1: ( ( rule__VLSExistentialQuantifier__Group_1_3__0 )* ) + { + // InternalVampireLanguage.g:4736:1: ( ( rule__VLSExistentialQuantifier__Group_1_3__0 )* ) + // InternalVampireLanguage.g:4737:2: ( rule__VLSExistentialQuantifier__Group_1_3__0 )* + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1_3()); + // InternalVampireLanguage.g:4738:2: ( rule__VLSExistentialQuantifier__Group_1_3__0 )* + loop40: + do { + int alt40=2; + int LA40_0 = input.LA(1); + + if ( (LA40_0==56) ) { + alt40=1; + } + + + switch (alt40) { + case 1 : + // InternalVampireLanguage.g:4738:3: rule__VLSExistentialQuantifier__Group_1_3__0 + { + pushFollow(FOLLOW_34); + rule__VLSExistentialQuantifier__Group_1_3__0(); + + state._fsp--; + + + } + break; + + default : + break loop40; + } + } while (true); + + after(grammarAccess.getVLSExistentialQuantifierAccess().getGroup_1_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__3__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__4" + // InternalVampireLanguage.g:4746:1: rule__VLSExistentialQuantifier__Group_1__4 : rule__VLSExistentialQuantifier__Group_1__4__Impl rule__VLSExistentialQuantifier__Group_1__5 ; + public final void rule__VLSExistentialQuantifier__Group_1__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4750:1: ( rule__VLSExistentialQuantifier__Group_1__4__Impl rule__VLSExistentialQuantifier__Group_1__5 ) + // InternalVampireLanguage.g:4751:2: rule__VLSExistentialQuantifier__Group_1__4__Impl rule__VLSExistentialQuantifier__Group_1__5 + { + pushFollow(FOLLOW_35); + rule__VLSExistentialQuantifier__Group_1__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__4" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__4__Impl" + // InternalVampireLanguage.g:4758:1: rule__VLSExistentialQuantifier__Group_1__4__Impl : ( ']' ) ; + public final void rule__VLSExistentialQuantifier__Group_1__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4762:1: ( ( ']' ) ) + // InternalVampireLanguage.g:4763:1: ( ']' ) + { + // InternalVampireLanguage.g:4763:1: ( ']' ) + // InternalVampireLanguage.g:4764:2: ']' + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getRightSquareBracketKeyword_1_4()); + match(input,50,FOLLOW_2); + after(grammarAccess.getVLSExistentialQuantifierAccess().getRightSquareBracketKeyword_1_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__4__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__5" + // InternalVampireLanguage.g:4773:1: rule__VLSExistentialQuantifier__Group_1__5 : rule__VLSExistentialQuantifier__Group_1__5__Impl ; + public final void rule__VLSExistentialQuantifier__Group_1__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4777:1: ( rule__VLSExistentialQuantifier__Group_1__5__Impl ) + // InternalVampireLanguage.g:4778:2: rule__VLSExistentialQuantifier__Group_1__5__Impl + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1__5__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__5" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1__5__Impl" + // InternalVampireLanguage.g:4784:1: rule__VLSExistentialQuantifier__Group_1__5__Impl : ( ':' ) ; + public final void rule__VLSExistentialQuantifier__Group_1__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4788:1: ( ( ':' ) ) + // InternalVampireLanguage.g:4789:1: ( ':' ) + { + // InternalVampireLanguage.g:4789:1: ( ':' ) + // InternalVampireLanguage.g:4790:2: ':' + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getColonKeyword_1_5()); + match(input,61,FOLLOW_2); + after(grammarAccess.getVLSExistentialQuantifierAccess().getColonKeyword_1_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1__5__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1_3__0" + // InternalVampireLanguage.g:4800:1: rule__VLSExistentialQuantifier__Group_1_3__0 : rule__VLSExistentialQuantifier__Group_1_3__0__Impl rule__VLSExistentialQuantifier__Group_1_3__1 ; + public final void rule__VLSExistentialQuantifier__Group_1_3__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4804:1: ( rule__VLSExistentialQuantifier__Group_1_3__0__Impl rule__VLSExistentialQuantifier__Group_1_3__1 ) + // InternalVampireLanguage.g:4805:2: rule__VLSExistentialQuantifier__Group_1_3__0__Impl rule__VLSExistentialQuantifier__Group_1_3__1 + { + pushFollow(FOLLOW_51); + rule__VLSExistentialQuantifier__Group_1_3__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1_3__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1_3__0" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1_3__0__Impl" + // InternalVampireLanguage.g:4812:1: rule__VLSExistentialQuantifier__Group_1_3__0__Impl : ( ',' ) ; + public final void rule__VLSExistentialQuantifier__Group_1_3__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4816:1: ( ( ',' ) ) + // InternalVampireLanguage.g:4817:1: ( ',' ) + { + // InternalVampireLanguage.g:4817:1: ( ',' ) + // InternalVampireLanguage.g:4818:2: ',' + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getCommaKeyword_1_3_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSExistentialQuantifierAccess().getCommaKeyword_1_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1_3__0__Impl" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1_3__1" + // InternalVampireLanguage.g:4827:1: rule__VLSExistentialQuantifier__Group_1_3__1 : rule__VLSExistentialQuantifier__Group_1_3__1__Impl ; + public final void rule__VLSExistentialQuantifier__Group_1_3__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4831:1: ( rule__VLSExistentialQuantifier__Group_1_3__1__Impl ) + // InternalVampireLanguage.g:4832:2: rule__VLSExistentialQuantifier__Group_1_3__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__Group_1_3__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1_3__1" + + + // $ANTLR start "rule__VLSExistentialQuantifier__Group_1_3__1__Impl" + // InternalVampireLanguage.g:4838:1: rule__VLSExistentialQuantifier__Group_1_3__1__Impl : ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 ) ) ; + public final void rule__VLSExistentialQuantifier__Group_1_3__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4842:1: ( ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 ) ) ) + // InternalVampireLanguage.g:4843:1: ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 ) ) + { + // InternalVampireLanguage.g:4843:1: ( ( rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 ) ) + // InternalVampireLanguage.g:4844:2: ( rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_3_1()); + // InternalVampireLanguage.g:4845:2: ( rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 ) + // InternalVampireLanguage.g:4845:3: rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAssignment_1_3_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__Group_1_3__1__Impl" + + + // $ANTLR start "rule__VLSUnaryNegation__Group__0" + // InternalVampireLanguage.g:4854:1: rule__VLSUnaryNegation__Group__0 : rule__VLSUnaryNegation__Group__0__Impl rule__VLSUnaryNegation__Group__1 ; + public final void rule__VLSUnaryNegation__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4858:1: ( rule__VLSUnaryNegation__Group__0__Impl rule__VLSUnaryNegation__Group__1 ) + // InternalVampireLanguage.g:4859:2: rule__VLSUnaryNegation__Group__0__Impl rule__VLSUnaryNegation__Group__1 + { + pushFollow(FOLLOW_54); + rule__VLSUnaryNegation__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryNegation__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__Group__0" + + + // $ANTLR start "rule__VLSUnaryNegation__Group__0__Impl" + // InternalVampireLanguage.g:4866:1: rule__VLSUnaryNegation__Group__0__Impl : ( () ) ; + public final void rule__VLSUnaryNegation__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4870:1: ( ( () ) ) + // InternalVampireLanguage.g:4871:1: ( () ) + { + // InternalVampireLanguage.g:4871:1: ( () ) + // InternalVampireLanguage.g:4872:2: () + { + before(grammarAccess.getVLSUnaryNegationAccess().getVLSUnaryNegationAction_0()); + // InternalVampireLanguage.g:4873:2: () + // InternalVampireLanguage.g:4873:3: + { + } + + after(grammarAccess.getVLSUnaryNegationAccess().getVLSUnaryNegationAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__Group__0__Impl" + + + // $ANTLR start "rule__VLSUnaryNegation__Group__1" + // InternalVampireLanguage.g:4881:1: rule__VLSUnaryNegation__Group__1 : rule__VLSUnaryNegation__Group__1__Impl rule__VLSUnaryNegation__Group__2 ; + public final void rule__VLSUnaryNegation__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4885:1: ( rule__VLSUnaryNegation__Group__1__Impl rule__VLSUnaryNegation__Group__2 ) + // InternalVampireLanguage.g:4886:2: rule__VLSUnaryNegation__Group__1__Impl rule__VLSUnaryNegation__Group__2 + { + pushFollow(FOLLOW_26); + rule__VLSUnaryNegation__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryNegation__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__Group__1" + + + // $ANTLR start "rule__VLSUnaryNegation__Group__1__Impl" + // InternalVampireLanguage.g:4893:1: rule__VLSUnaryNegation__Group__1__Impl : ( '~' ) ; + public final void rule__VLSUnaryNegation__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4897:1: ( ( '~' ) ) + // InternalVampireLanguage.g:4898:1: ( '~' ) + { + // InternalVampireLanguage.g:4898:1: ( '~' ) + // InternalVampireLanguage.g:4899:2: '~' + { + before(grammarAccess.getVLSUnaryNegationAccess().getTildeKeyword_1()); + match(input,74,FOLLOW_2); + after(grammarAccess.getVLSUnaryNegationAccess().getTildeKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__Group__1__Impl" + + + // $ANTLR start "rule__VLSUnaryNegation__Group__2" + // InternalVampireLanguage.g:4908:1: rule__VLSUnaryNegation__Group__2 : rule__VLSUnaryNegation__Group__2__Impl ; + public final void rule__VLSUnaryNegation__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4912:1: ( rule__VLSUnaryNegation__Group__2__Impl ) + // InternalVampireLanguage.g:4913:2: rule__VLSUnaryNegation__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnaryNegation__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__Group__2" + + + // $ANTLR start "rule__VLSUnaryNegation__Group__2__Impl" + // InternalVampireLanguage.g:4919:1: rule__VLSUnaryNegation__Group__2__Impl : ( ( rule__VLSUnaryNegation__OperandAssignment_2 ) ) ; + public final void rule__VLSUnaryNegation__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4923:1: ( ( ( rule__VLSUnaryNegation__OperandAssignment_2 ) ) ) + // InternalVampireLanguage.g:4924:1: ( ( rule__VLSUnaryNegation__OperandAssignment_2 ) ) + { + // InternalVampireLanguage.g:4924:1: ( ( rule__VLSUnaryNegation__OperandAssignment_2 ) ) + // InternalVampireLanguage.g:4925:2: ( rule__VLSUnaryNegation__OperandAssignment_2 ) + { + before(grammarAccess.getVLSUnaryNegationAccess().getOperandAssignment_2()); + // InternalVampireLanguage.g:4926:2: ( rule__VLSUnaryNegation__OperandAssignment_2 ) + // InternalVampireLanguage.g:4926:3: rule__VLSUnaryNegation__OperandAssignment_2 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryNegation__OperandAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryNegationAccess().getOperandAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__Group__2__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group__0" + // InternalVampireLanguage.g:4935:1: rule__VLSUnaryInfix__Group__0 : rule__VLSUnaryInfix__Group__0__Impl rule__VLSUnaryInfix__Group__1 ; + public final void rule__VLSUnaryInfix__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4939:1: ( rule__VLSUnaryInfix__Group__0__Impl rule__VLSUnaryInfix__Group__1 ) + // InternalVampireLanguage.g:4940:2: rule__VLSUnaryInfix__Group__0__Impl rule__VLSUnaryInfix__Group__1 + { + pushFollow(FOLLOW_55); + rule__VLSUnaryInfix__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group__0" + + + // $ANTLR start "rule__VLSUnaryInfix__Group__0__Impl" + // InternalVampireLanguage.g:4947:1: rule__VLSUnaryInfix__Group__0__Impl : ( ruleVLSAtomic ) ; + public final void rule__VLSUnaryInfix__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4951:1: ( ( ruleVLSAtomic ) ) + // InternalVampireLanguage.g:4952:1: ( ruleVLSAtomic ) + { + // InternalVampireLanguage.g:4952:1: ( ruleVLSAtomic ) + // InternalVampireLanguage.g:4953:2: ruleVLSAtomic + { + before(grammarAccess.getVLSUnaryInfixAccess().getVLSAtomicParserRuleCall_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomic(); + + state._fsp--; + + after(grammarAccess.getVLSUnaryInfixAccess().getVLSAtomicParserRuleCall_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group__0__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group__1" + // InternalVampireLanguage.g:4962:1: rule__VLSUnaryInfix__Group__1 : rule__VLSUnaryInfix__Group__1__Impl ; + public final void rule__VLSUnaryInfix__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4966:1: ( rule__VLSUnaryInfix__Group__1__Impl ) + // InternalVampireLanguage.g:4967:2: rule__VLSUnaryInfix__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group__1" + + + // $ANTLR start "rule__VLSUnaryInfix__Group__1__Impl" + // InternalVampireLanguage.g:4973:1: rule__VLSUnaryInfix__Group__1__Impl : ( ( rule__VLSUnaryInfix__Group_1__0 )? ) ; + public final void rule__VLSUnaryInfix__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4977:1: ( ( ( rule__VLSUnaryInfix__Group_1__0 )? ) ) + // InternalVampireLanguage.g:4978:1: ( ( rule__VLSUnaryInfix__Group_1__0 )? ) + { + // InternalVampireLanguage.g:4978:1: ( ( rule__VLSUnaryInfix__Group_1__0 )? ) + // InternalVampireLanguage.g:4979:2: ( rule__VLSUnaryInfix__Group_1__0 )? + { + before(grammarAccess.getVLSUnaryInfixAccess().getGroup_1()); + // InternalVampireLanguage.g:4980:2: ( rule__VLSUnaryInfix__Group_1__0 )? + int alt41=2; + int LA41_0 = input.LA(1); + + if ( ((LA41_0>=75 && LA41_0<=77)) ) { + alt41=1; + } + switch (alt41) { + case 1 : + // InternalVampireLanguage.g:4980:3: rule__VLSUnaryInfix__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group__1__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1__0" + // InternalVampireLanguage.g:4989:1: rule__VLSUnaryInfix__Group_1__0 : rule__VLSUnaryInfix__Group_1__0__Impl rule__VLSUnaryInfix__Group_1__1 ; + public final void rule__VLSUnaryInfix__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:4993:1: ( rule__VLSUnaryInfix__Group_1__0__Impl rule__VLSUnaryInfix__Group_1__1 ) + // InternalVampireLanguage.g:4994:2: rule__VLSUnaryInfix__Group_1__0__Impl rule__VLSUnaryInfix__Group_1__1 + { + pushFollow(FOLLOW_36); + rule__VLSUnaryInfix__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1__0" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1__0__Impl" + // InternalVampireLanguage.g:5001:1: rule__VLSUnaryInfix__Group_1__0__Impl : ( ( rule__VLSUnaryInfix__Alternatives_1_0 ) ) ; + public final void rule__VLSUnaryInfix__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5005:1: ( ( ( rule__VLSUnaryInfix__Alternatives_1_0 ) ) ) + // InternalVampireLanguage.g:5006:1: ( ( rule__VLSUnaryInfix__Alternatives_1_0 ) ) + { + // InternalVampireLanguage.g:5006:1: ( ( rule__VLSUnaryInfix__Alternatives_1_0 ) ) + // InternalVampireLanguage.g:5007:2: ( rule__VLSUnaryInfix__Alternatives_1_0 ) + { + before(grammarAccess.getVLSUnaryInfixAccess().getAlternatives_1_0()); + // InternalVampireLanguage.g:5008:2: ( rule__VLSUnaryInfix__Alternatives_1_0 ) + // InternalVampireLanguage.g:5008:3: rule__VLSUnaryInfix__Alternatives_1_0 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Alternatives_1_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getAlternatives_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1__1" + // InternalVampireLanguage.g:5016:1: rule__VLSUnaryInfix__Group_1__1 : rule__VLSUnaryInfix__Group_1__1__Impl ; + public final void rule__VLSUnaryInfix__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5020:1: ( rule__VLSUnaryInfix__Group_1__1__Impl ) + // InternalVampireLanguage.g:5021:2: rule__VLSUnaryInfix__Group_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1__1" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1__1__Impl" + // InternalVampireLanguage.g:5027:1: rule__VLSUnaryInfix__Group_1__1__Impl : ( ( rule__VLSUnaryInfix__RightAssignment_1_1 ) ) ; + public final void rule__VLSUnaryInfix__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5031:1: ( ( ( rule__VLSUnaryInfix__RightAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:5032:1: ( ( rule__VLSUnaryInfix__RightAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:5032:1: ( ( rule__VLSUnaryInfix__RightAssignment_1_1 ) ) + // InternalVampireLanguage.g:5033:2: ( rule__VLSUnaryInfix__RightAssignment_1_1 ) + { + before(grammarAccess.getVLSUnaryInfixAccess().getRightAssignment_1_1()); + // InternalVampireLanguage.g:5034:2: ( rule__VLSUnaryInfix__RightAssignment_1_1 ) + // InternalVampireLanguage.g:5034:3: rule__VLSUnaryInfix__RightAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__RightAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUnaryInfixAccess().getRightAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_0__0" + // InternalVampireLanguage.g:5043:1: rule__VLSUnaryInfix__Group_1_0_0__0 : rule__VLSUnaryInfix__Group_1_0_0__0__Impl rule__VLSUnaryInfix__Group_1_0_0__1 ; + public final void rule__VLSUnaryInfix__Group_1_0_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5047:1: ( rule__VLSUnaryInfix__Group_1_0_0__0__Impl rule__VLSUnaryInfix__Group_1_0_0__1 ) + // InternalVampireLanguage.g:5048:2: rule__VLSUnaryInfix__Group_1_0_0__0__Impl rule__VLSUnaryInfix__Group_1_0_0__1 + { + pushFollow(FOLLOW_56); + rule__VLSUnaryInfix__Group_1_0_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_0__0" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_0__0__Impl" + // InternalVampireLanguage.g:5055:1: rule__VLSUnaryInfix__Group_1_0_0__0__Impl : ( () ) ; + public final void rule__VLSUnaryInfix__Group_1_0_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5059:1: ( ( () ) ) + // InternalVampireLanguage.g:5060:1: ( () ) + { + // InternalVampireLanguage.g:5060:1: ( () ) + // InternalVampireLanguage.g:5061:2: () + { + before(grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0()); + // InternalVampireLanguage.g:5062:2: () + // InternalVampireLanguage.g:5062:3: + { + } + + after(grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_0__0__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_0__1" + // InternalVampireLanguage.g:5070:1: rule__VLSUnaryInfix__Group_1_0_0__1 : rule__VLSUnaryInfix__Group_1_0_0__1__Impl ; + public final void rule__VLSUnaryInfix__Group_1_0_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5074:1: ( rule__VLSUnaryInfix__Group_1_0_0__1__Impl ) + // InternalVampireLanguage.g:5075:2: rule__VLSUnaryInfix__Group_1_0_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_0__1" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_0__1__Impl" + // InternalVampireLanguage.g:5081:1: rule__VLSUnaryInfix__Group_1_0_0__1__Impl : ( '!=' ) ; + public final void rule__VLSUnaryInfix__Group_1_0_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5085:1: ( ( '!=' ) ) + // InternalVampireLanguage.g:5086:1: ( '!=' ) + { + // InternalVampireLanguage.g:5086:1: ( '!=' ) + // InternalVampireLanguage.g:5087:2: '!=' + { + before(grammarAccess.getVLSUnaryInfixAccess().getExclamationMarkEqualsSignKeyword_1_0_0_1()); + match(input,75,FOLLOW_2); + after(grammarAccess.getVLSUnaryInfixAccess().getExclamationMarkEqualsSignKeyword_1_0_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_0__1__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_1__0" + // InternalVampireLanguage.g:5097:1: rule__VLSUnaryInfix__Group_1_0_1__0 : rule__VLSUnaryInfix__Group_1_0_1__0__Impl rule__VLSUnaryInfix__Group_1_0_1__1 ; + public final void rule__VLSUnaryInfix__Group_1_0_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5101:1: ( rule__VLSUnaryInfix__Group_1_0_1__0__Impl rule__VLSUnaryInfix__Group_1_0_1__1 ) + // InternalVampireLanguage.g:5102:2: rule__VLSUnaryInfix__Group_1_0_1__0__Impl rule__VLSUnaryInfix__Group_1_0_1__1 + { + pushFollow(FOLLOW_57); + rule__VLSUnaryInfix__Group_1_0_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_1__0" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_1__0__Impl" + // InternalVampireLanguage.g:5109:1: rule__VLSUnaryInfix__Group_1_0_1__0__Impl : ( () ) ; + public final void rule__VLSUnaryInfix__Group_1_0_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5113:1: ( ( () ) ) + // InternalVampireLanguage.g:5114:1: ( () ) + { + // InternalVampireLanguage.g:5114:1: ( () ) + // InternalVampireLanguage.g:5115:2: () + { + before(grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0()); + // InternalVampireLanguage.g:5116:2: () + // InternalVampireLanguage.g:5116:3: + { + } + + after(grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_1__0__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_1__1" + // InternalVampireLanguage.g:5124:1: rule__VLSUnaryInfix__Group_1_0_1__1 : rule__VLSUnaryInfix__Group_1_0_1__1__Impl ; + public final void rule__VLSUnaryInfix__Group_1_0_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5128:1: ( rule__VLSUnaryInfix__Group_1_0_1__1__Impl ) + // InternalVampireLanguage.g:5129:2: rule__VLSUnaryInfix__Group_1_0_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_1__1" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_1__1__Impl" + // InternalVampireLanguage.g:5135:1: rule__VLSUnaryInfix__Group_1_0_1__1__Impl : ( '=' ) ; + public final void rule__VLSUnaryInfix__Group_1_0_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5139:1: ( ( '=' ) ) + // InternalVampireLanguage.g:5140:1: ( '=' ) + { + // InternalVampireLanguage.g:5140:1: ( '=' ) + // InternalVampireLanguage.g:5141:2: '=' + { + before(grammarAccess.getVLSUnaryInfixAccess().getEqualsSignKeyword_1_0_1_1()); + match(input,76,FOLLOW_2); + after(grammarAccess.getVLSUnaryInfixAccess().getEqualsSignKeyword_1_0_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_1__1__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_2__0" + // InternalVampireLanguage.g:5151:1: rule__VLSUnaryInfix__Group_1_0_2__0 : rule__VLSUnaryInfix__Group_1_0_2__0__Impl rule__VLSUnaryInfix__Group_1_0_2__1 ; + public final void rule__VLSUnaryInfix__Group_1_0_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5155:1: ( rule__VLSUnaryInfix__Group_1_0_2__0__Impl rule__VLSUnaryInfix__Group_1_0_2__1 ) + // InternalVampireLanguage.g:5156:2: rule__VLSUnaryInfix__Group_1_0_2__0__Impl rule__VLSUnaryInfix__Group_1_0_2__1 + { + pushFollow(FOLLOW_55); + rule__VLSUnaryInfix__Group_1_0_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_2__0" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_2__0__Impl" + // InternalVampireLanguage.g:5163:1: rule__VLSUnaryInfix__Group_1_0_2__0__Impl : ( () ) ; + public final void rule__VLSUnaryInfix__Group_1_0_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5167:1: ( ( () ) ) + // InternalVampireLanguage.g:5168:1: ( () ) + { + // InternalVampireLanguage.g:5168:1: ( () ) + // InternalVampireLanguage.g:5169:2: () + { + before(grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0()); + // InternalVampireLanguage.g:5170:2: () + // InternalVampireLanguage.g:5170:3: + { + } + + after(grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_2__0__Impl" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_2__1" + // InternalVampireLanguage.g:5178:1: rule__VLSUnaryInfix__Group_1_0_2__1 : rule__VLSUnaryInfix__Group_1_0_2__1__Impl ; + public final void rule__VLSUnaryInfix__Group_1_0_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5182:1: ( rule__VLSUnaryInfix__Group_1_0_2__1__Impl ) + // InternalVampireLanguage.g:5183:2: rule__VLSUnaryInfix__Group_1_0_2__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSUnaryInfix__Group_1_0_2__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_2__1" + + + // $ANTLR start "rule__VLSUnaryInfix__Group_1_0_2__1__Impl" + // InternalVampireLanguage.g:5189:1: rule__VLSUnaryInfix__Group_1_0_2__1__Impl : ( ':=' ) ; + public final void rule__VLSUnaryInfix__Group_1_0_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5193:1: ( ( ':=' ) ) + // InternalVampireLanguage.g:5194:1: ( ':=' ) + { + // InternalVampireLanguage.g:5194:1: ( ':=' ) + // InternalVampireLanguage.g:5195:2: ':=' + { + before(grammarAccess.getVLSUnaryInfixAccess().getColonEqualsSignKeyword_1_0_2_1()); + match(input,77,FOLLOW_2); + after(grammarAccess.getVLSUnaryInfixAccess().getColonEqualsSignKeyword_1_0_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__Group_1_0_2__1__Impl" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_0__0" + // InternalVampireLanguage.g:5205:1: rule__VLSAtomicConstant__Group_0__0 : rule__VLSAtomicConstant__Group_0__0__Impl rule__VLSAtomicConstant__Group_0__1 ; + public final void rule__VLSAtomicConstant__Group_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5209:1: ( rule__VLSAtomicConstant__Group_0__0__Impl rule__VLSAtomicConstant__Group_0__1 ) + // InternalVampireLanguage.g:5210:2: rule__VLSAtomicConstant__Group_0__0__Impl rule__VLSAtomicConstant__Group_0__1 + { + pushFollow(FOLLOW_58); + rule__VLSAtomicConstant__Group_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_0__0" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_0__0__Impl" + // InternalVampireLanguage.g:5217:1: rule__VLSAtomicConstant__Group_0__0__Impl : ( () ) ; + public final void rule__VLSAtomicConstant__Group_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5221:1: ( ( () ) ) + // InternalVampireLanguage.g:5222:1: ( () ) + { + // InternalVampireLanguage.g:5222:1: ( () ) + // InternalVampireLanguage.g:5223:2: () + { + before(grammarAccess.getVLSAtomicConstantAccess().getVLSConstantAction_0_0()); + // InternalVampireLanguage.g:5224:2: () + // InternalVampireLanguage.g:5224:3: + { + } + + after(grammarAccess.getVLSAtomicConstantAccess().getVLSConstantAction_0_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_0__0__Impl" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_0__1" + // InternalVampireLanguage.g:5232:1: rule__VLSAtomicConstant__Group_0__1 : rule__VLSAtomicConstant__Group_0__1__Impl ; + public final void rule__VLSAtomicConstant__Group_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5236:1: ( rule__VLSAtomicConstant__Group_0__1__Impl ) + // InternalVampireLanguage.g:5237:2: rule__VLSAtomicConstant__Group_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_0__1" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_0__1__Impl" + // InternalVampireLanguage.g:5243:1: rule__VLSAtomicConstant__Group_0__1__Impl : ( ( rule__VLSAtomicConstant__NameAssignment_0_1 ) ) ; + public final void rule__VLSAtomicConstant__Group_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5247:1: ( ( ( rule__VLSAtomicConstant__NameAssignment_0_1 ) ) ) + // InternalVampireLanguage.g:5248:1: ( ( rule__VLSAtomicConstant__NameAssignment_0_1 ) ) + { + // InternalVampireLanguage.g:5248:1: ( ( rule__VLSAtomicConstant__NameAssignment_0_1 ) ) + // InternalVampireLanguage.g:5249:2: ( rule__VLSAtomicConstant__NameAssignment_0_1 ) + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameAssignment_0_1()); + // InternalVampireLanguage.g:5250:2: ( rule__VLSAtomicConstant__NameAssignment_0_1 ) + // InternalVampireLanguage.g:5250:3: rule__VLSAtomicConstant__NameAssignment_0_1 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__NameAssignment_0_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicConstantAccess().getNameAssignment_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_0__1__Impl" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_1__0" + // InternalVampireLanguage.g:5259:1: rule__VLSAtomicConstant__Group_1__0 : rule__VLSAtomicConstant__Group_1__0__Impl rule__VLSAtomicConstant__Group_1__1 ; + public final void rule__VLSAtomicConstant__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5263:1: ( rule__VLSAtomicConstant__Group_1__0__Impl rule__VLSAtomicConstant__Group_1__1 ) + // InternalVampireLanguage.g:5264:2: rule__VLSAtomicConstant__Group_1__0__Impl rule__VLSAtomicConstant__Group_1__1 + { + pushFollow(FOLLOW_59); + rule__VLSAtomicConstant__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_1__0" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_1__0__Impl" + // InternalVampireLanguage.g:5271:1: rule__VLSAtomicConstant__Group_1__0__Impl : ( () ) ; + public final void rule__VLSAtomicConstant__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5275:1: ( ( () ) ) + // InternalVampireLanguage.g:5276:1: ( () ) + { + // InternalVampireLanguage.g:5276:1: ( () ) + // InternalVampireLanguage.g:5277:2: () + { + before(grammarAccess.getVLSAtomicConstantAccess().getVLSTrueAction_1_0()); + // InternalVampireLanguage.g:5278:2: () + // InternalVampireLanguage.g:5278:3: + { + } + + after(grammarAccess.getVLSAtomicConstantAccess().getVLSTrueAction_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_1__1" + // InternalVampireLanguage.g:5286:1: rule__VLSAtomicConstant__Group_1__1 : rule__VLSAtomicConstant__Group_1__1__Impl ; + public final void rule__VLSAtomicConstant__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5290:1: ( rule__VLSAtomicConstant__Group_1__1__Impl ) + // InternalVampireLanguage.g:5291:2: rule__VLSAtomicConstant__Group_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_1__1" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_1__1__Impl" + // InternalVampireLanguage.g:5297:1: rule__VLSAtomicConstant__Group_1__1__Impl : ( '$true' ) ; + public final void rule__VLSAtomicConstant__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5301:1: ( ( '$true' ) ) + // InternalVampireLanguage.g:5302:1: ( '$true' ) + { + // InternalVampireLanguage.g:5302:1: ( '$true' ) + // InternalVampireLanguage.g:5303:2: '$true' + { + before(grammarAccess.getVLSAtomicConstantAccess().getTrueKeyword_1_1()); + match(input,78,FOLLOW_2); + after(grammarAccess.getVLSAtomicConstantAccess().getTrueKeyword_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_2__0" + // InternalVampireLanguage.g:5313:1: rule__VLSAtomicConstant__Group_2__0 : rule__VLSAtomicConstant__Group_2__0__Impl rule__VLSAtomicConstant__Group_2__1 ; + public final void rule__VLSAtomicConstant__Group_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5317:1: ( rule__VLSAtomicConstant__Group_2__0__Impl rule__VLSAtomicConstant__Group_2__1 ) + // InternalVampireLanguage.g:5318:2: rule__VLSAtomicConstant__Group_2__0__Impl rule__VLSAtomicConstant__Group_2__1 + { + pushFollow(FOLLOW_38); + rule__VLSAtomicConstant__Group_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_2__0" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_2__0__Impl" + // InternalVampireLanguage.g:5325:1: rule__VLSAtomicConstant__Group_2__0__Impl : ( () ) ; + public final void rule__VLSAtomicConstant__Group_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5329:1: ( ( () ) ) + // InternalVampireLanguage.g:5330:1: ( () ) + { + // InternalVampireLanguage.g:5330:1: ( () ) + // InternalVampireLanguage.g:5331:2: () + { + before(grammarAccess.getVLSAtomicConstantAccess().getVLSFalseAction_2_0()); + // InternalVampireLanguage.g:5332:2: () + // InternalVampireLanguage.g:5332:3: + { + } + + after(grammarAccess.getVLSAtomicConstantAccess().getVLSFalseAction_2_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_2__0__Impl" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_2__1" + // InternalVampireLanguage.g:5340:1: rule__VLSAtomicConstant__Group_2__1 : rule__VLSAtomicConstant__Group_2__1__Impl ; + public final void rule__VLSAtomicConstant__Group_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5344:1: ( rule__VLSAtomicConstant__Group_2__1__Impl ) + // InternalVampireLanguage.g:5345:2: rule__VLSAtomicConstant__Group_2__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__Group_2__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_2__1" + + + // $ANTLR start "rule__VLSAtomicConstant__Group_2__1__Impl" + // InternalVampireLanguage.g:5351:1: rule__VLSAtomicConstant__Group_2__1__Impl : ( '$false' ) ; + public final void rule__VLSAtomicConstant__Group_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5355:1: ( ( '$false' ) ) + // InternalVampireLanguage.g:5356:1: ( '$false' ) + { + // InternalVampireLanguage.g:5356:1: ( '$false' ) + // InternalVampireLanguage.g:5357:2: '$false' + { + before(grammarAccess.getVLSAtomicConstantAccess().getFalseKeyword_2_1()); + match(input,79,FOLLOW_2); + after(grammarAccess.getVLSAtomicConstantAccess().getFalseKeyword_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__Group_2__1__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0__0" + // InternalVampireLanguage.g:5367:1: rule__VLSAtomicFunction__Group_0__0 : rule__VLSAtomicFunction__Group_0__0__Impl rule__VLSAtomicFunction__Group_0__1 ; + public final void rule__VLSAtomicFunction__Group_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5371:1: ( rule__VLSAtomicFunction__Group_0__0__Impl rule__VLSAtomicFunction__Group_0__1 ) + // InternalVampireLanguage.g:5372:2: rule__VLSAtomicFunction__Group_0__0__Impl rule__VLSAtomicFunction__Group_0__1 + { + pushFollow(FOLLOW_58); + rule__VLSAtomicFunction__Group_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0__0" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0__0__Impl" + // InternalVampireLanguage.g:5379:1: rule__VLSAtomicFunction__Group_0__0__Impl : ( () ) ; + public final void rule__VLSAtomicFunction__Group_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5383:1: ( ( () ) ) + // InternalVampireLanguage.g:5384:1: ( () ) + { + // InternalVampireLanguage.g:5384:1: ( () ) + // InternalVampireLanguage.g:5385:2: () + { + before(grammarAccess.getVLSAtomicFunctionAccess().getVLSFunctionAction_0_0()); + // InternalVampireLanguage.g:5386:2: () + // InternalVampireLanguage.g:5386:3: + { + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getVLSFunctionAction_0_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0__0__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0__1" + // InternalVampireLanguage.g:5394:1: rule__VLSAtomicFunction__Group_0__1 : rule__VLSAtomicFunction__Group_0__1__Impl rule__VLSAtomicFunction__Group_0__2 ; + public final void rule__VLSAtomicFunction__Group_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5398:1: ( rule__VLSAtomicFunction__Group_0__1__Impl rule__VLSAtomicFunction__Group_0__2 ) + // InternalVampireLanguage.g:5399:2: rule__VLSAtomicFunction__Group_0__1__Impl rule__VLSAtomicFunction__Group_0__2 + { + pushFollow(FOLLOW_22); + rule__VLSAtomicFunction__Group_0__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0__1" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0__1__Impl" + // InternalVampireLanguage.g:5406:1: rule__VLSAtomicFunction__Group_0__1__Impl : ( ( rule__VLSAtomicFunction__ConstantAssignment_0_1 ) ) ; + public final void rule__VLSAtomicFunction__Group_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5410:1: ( ( ( rule__VLSAtomicFunction__ConstantAssignment_0_1 ) ) ) + // InternalVampireLanguage.g:5411:1: ( ( rule__VLSAtomicFunction__ConstantAssignment_0_1 ) ) + { + // InternalVampireLanguage.g:5411:1: ( ( rule__VLSAtomicFunction__ConstantAssignment_0_1 ) ) + // InternalVampireLanguage.g:5412:2: ( rule__VLSAtomicFunction__ConstantAssignment_0_1 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantAssignment_0_1()); + // InternalVampireLanguage.g:5413:2: ( rule__VLSAtomicFunction__ConstantAssignment_0_1 ) + // InternalVampireLanguage.g:5413:3: rule__VLSAtomicFunction__ConstantAssignment_0_1 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__ConstantAssignment_0_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantAssignment_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0__1__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0__2" + // InternalVampireLanguage.g:5421:1: rule__VLSAtomicFunction__Group_0__2 : rule__VLSAtomicFunction__Group_0__2__Impl ; + public final void rule__VLSAtomicFunction__Group_0__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5425:1: ( rule__VLSAtomicFunction__Group_0__2__Impl ) + // InternalVampireLanguage.g:5426:2: rule__VLSAtomicFunction__Group_0__2__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0__2" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0__2__Impl" + // InternalVampireLanguage.g:5432:1: rule__VLSAtomicFunction__Group_0__2__Impl : ( ( rule__VLSAtomicFunction__Group_0_2__0 ) ) ; + public final void rule__VLSAtomicFunction__Group_0__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5436:1: ( ( ( rule__VLSAtomicFunction__Group_0_2__0 ) ) ) + // InternalVampireLanguage.g:5437:1: ( ( rule__VLSAtomicFunction__Group_0_2__0 ) ) + { + // InternalVampireLanguage.g:5437:1: ( ( rule__VLSAtomicFunction__Group_0_2__0 ) ) + // InternalVampireLanguage.g:5438:2: ( rule__VLSAtomicFunction__Group_0_2__0 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2()); + // InternalVampireLanguage.g:5439:2: ( rule__VLSAtomicFunction__Group_0_2__0 ) + // InternalVampireLanguage.g:5439:3: rule__VLSAtomicFunction__Group_0_2__0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2__0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0__2__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__0" + // InternalVampireLanguage.g:5448:1: rule__VLSAtomicFunction__Group_0_2__0 : rule__VLSAtomicFunction__Group_0_2__0__Impl rule__VLSAtomicFunction__Group_0_2__1 ; + public final void rule__VLSAtomicFunction__Group_0_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5452:1: ( rule__VLSAtomicFunction__Group_0_2__0__Impl rule__VLSAtomicFunction__Group_0_2__1 ) + // InternalVampireLanguage.g:5453:2: rule__VLSAtomicFunction__Group_0_2__0__Impl rule__VLSAtomicFunction__Group_0_2__1 + { + pushFollow(FOLLOW_36); + rule__VLSAtomicFunction__Group_0_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__0" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__0__Impl" + // InternalVampireLanguage.g:5460:1: rule__VLSAtomicFunction__Group_0_2__0__Impl : ( '(' ) ; + public final void rule__VLSAtomicFunction__Group_0_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5464:1: ( ( '(' ) ) + // InternalVampireLanguage.g:5465:1: ( '(' ) + { + // InternalVampireLanguage.g:5465:1: ( '(' ) + // InternalVampireLanguage.g:5466:2: '(' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_0_2_0()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_0_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__0__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__1" + // InternalVampireLanguage.g:5475:1: rule__VLSAtomicFunction__Group_0_2__1 : rule__VLSAtomicFunction__Group_0_2__1__Impl rule__VLSAtomicFunction__Group_0_2__2 ; + public final void rule__VLSAtomicFunction__Group_0_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5479:1: ( rule__VLSAtomicFunction__Group_0_2__1__Impl rule__VLSAtomicFunction__Group_0_2__2 ) + // InternalVampireLanguage.g:5480:2: rule__VLSAtomicFunction__Group_0_2__1__Impl rule__VLSAtomicFunction__Group_0_2__2 + { + pushFollow(FOLLOW_27); + rule__VLSAtomicFunction__Group_0_2__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__1" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__1__Impl" + // InternalVampireLanguage.g:5487:1: rule__VLSAtomicFunction__Group_0_2__1__Impl : ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_1 ) ) ; + public final void rule__VLSAtomicFunction__Group_0_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5491:1: ( ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_1 ) ) ) + // InternalVampireLanguage.g:5492:1: ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_1 ) ) + { + // InternalVampireLanguage.g:5492:1: ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_1 ) ) + // InternalVampireLanguage.g:5493:2: ( rule__VLSAtomicFunction__TermsAssignment_0_2_1 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_1()); + // InternalVampireLanguage.g:5494:2: ( rule__VLSAtomicFunction__TermsAssignment_0_2_1 ) + // InternalVampireLanguage.g:5494:3: rule__VLSAtomicFunction__TermsAssignment_0_2_1 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__TermsAssignment_0_2_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__1__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__2" + // InternalVampireLanguage.g:5502:1: rule__VLSAtomicFunction__Group_0_2__2 : rule__VLSAtomicFunction__Group_0_2__2__Impl rule__VLSAtomicFunction__Group_0_2__3 ; + public final void rule__VLSAtomicFunction__Group_0_2__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5506:1: ( rule__VLSAtomicFunction__Group_0_2__2__Impl rule__VLSAtomicFunction__Group_0_2__3 ) + // InternalVampireLanguage.g:5507:2: rule__VLSAtomicFunction__Group_0_2__2__Impl rule__VLSAtomicFunction__Group_0_2__3 + { + pushFollow(FOLLOW_27); + rule__VLSAtomicFunction__Group_0_2__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__2" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__2__Impl" + // InternalVampireLanguage.g:5514:1: rule__VLSAtomicFunction__Group_0_2__2__Impl : ( ( rule__VLSAtomicFunction__Group_0_2_2__0 )* ) ; + public final void rule__VLSAtomicFunction__Group_0_2__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5518:1: ( ( ( rule__VLSAtomicFunction__Group_0_2_2__0 )* ) ) + // InternalVampireLanguage.g:5519:1: ( ( rule__VLSAtomicFunction__Group_0_2_2__0 )* ) + { + // InternalVampireLanguage.g:5519:1: ( ( rule__VLSAtomicFunction__Group_0_2_2__0 )* ) + // InternalVampireLanguage.g:5520:2: ( rule__VLSAtomicFunction__Group_0_2_2__0 )* + { + before(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2_2()); + // InternalVampireLanguage.g:5521:2: ( rule__VLSAtomicFunction__Group_0_2_2__0 )* + loop42: + do { + int alt42=2; + int LA42_0 = input.LA(1); + + if ( (LA42_0==56) ) { + alt42=1; + } + + + switch (alt42) { + case 1 : + // InternalVampireLanguage.g:5521:3: rule__VLSAtomicFunction__Group_0_2_2__0 + { + pushFollow(FOLLOW_34); + rule__VLSAtomicFunction__Group_0_2_2__0(); + + state._fsp--; + + + } + break; + + default : + break loop42; + } + } while (true); + + after(grammarAccess.getVLSAtomicFunctionAccess().getGroup_0_2_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__2__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__3" + // InternalVampireLanguage.g:5529:1: rule__VLSAtomicFunction__Group_0_2__3 : rule__VLSAtomicFunction__Group_0_2__3__Impl ; + public final void rule__VLSAtomicFunction__Group_0_2__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5533:1: ( rule__VLSAtomicFunction__Group_0_2__3__Impl ) + // InternalVampireLanguage.g:5534:2: rule__VLSAtomicFunction__Group_0_2__3__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2__3__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__3" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2__3__Impl" + // InternalVampireLanguage.g:5540:1: rule__VLSAtomicFunction__Group_0_2__3__Impl : ( ')' ) ; + public final void rule__VLSAtomicFunction__Group_0_2__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5544:1: ( ( ')' ) ) + // InternalVampireLanguage.g:5545:1: ( ')' ) + { + // InternalVampireLanguage.g:5545:1: ( ')' ) + // InternalVampireLanguage.g:5546:2: ')' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_0_2_3()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_0_2_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2__3__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2_2__0" + // InternalVampireLanguage.g:5556:1: rule__VLSAtomicFunction__Group_0_2_2__0 : rule__VLSAtomicFunction__Group_0_2_2__0__Impl rule__VLSAtomicFunction__Group_0_2_2__1 ; + public final void rule__VLSAtomicFunction__Group_0_2_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5560:1: ( rule__VLSAtomicFunction__Group_0_2_2__0__Impl rule__VLSAtomicFunction__Group_0_2_2__1 ) + // InternalVampireLanguage.g:5561:2: rule__VLSAtomicFunction__Group_0_2_2__0__Impl rule__VLSAtomicFunction__Group_0_2_2__1 + { + pushFollow(FOLLOW_36); + rule__VLSAtomicFunction__Group_0_2_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2_2__0" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2_2__0__Impl" + // InternalVampireLanguage.g:5568:1: rule__VLSAtomicFunction__Group_0_2_2__0__Impl : ( ',' ) ; + public final void rule__VLSAtomicFunction__Group_0_2_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5572:1: ( ( ',' ) ) + // InternalVampireLanguage.g:5573:1: ( ',' ) + { + // InternalVampireLanguage.g:5573:1: ( ',' ) + // InternalVampireLanguage.g:5574:2: ',' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_0_2_2_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_0_2_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2_2__0__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2_2__1" + // InternalVampireLanguage.g:5583:1: rule__VLSAtomicFunction__Group_0_2_2__1 : rule__VLSAtomicFunction__Group_0_2_2__1__Impl ; + public final void rule__VLSAtomicFunction__Group_0_2_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5587:1: ( rule__VLSAtomicFunction__Group_0_2_2__1__Impl ) + // InternalVampireLanguage.g:5588:2: rule__VLSAtomicFunction__Group_0_2_2__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_0_2_2__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2_2__1" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_0_2_2__1__Impl" + // InternalVampireLanguage.g:5594:1: rule__VLSAtomicFunction__Group_0_2_2__1__Impl : ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 ) ) ; + public final void rule__VLSAtomicFunction__Group_0_2_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5598:1: ( ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 ) ) ) + // InternalVampireLanguage.g:5599:1: ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 ) ) + { + // InternalVampireLanguage.g:5599:1: ( ( rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 ) ) + // InternalVampireLanguage.g:5600:2: ( rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_2_1()); + // InternalVampireLanguage.g:5601:2: ( rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 ) + // InternalVampireLanguage.g:5601:3: rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__TermsAssignment_0_2_2_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_0_2_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_0_2_2__1__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__0" + // InternalVampireLanguage.g:5610:1: rule__VLSAtomicFunction__Group_1__0 : rule__VLSAtomicFunction__Group_1__0__Impl rule__VLSAtomicFunction__Group_1__1 ; + public final void rule__VLSAtomicFunction__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5614:1: ( rule__VLSAtomicFunction__Group_1__0__Impl rule__VLSAtomicFunction__Group_1__1 ) + // InternalVampireLanguage.g:5615:2: rule__VLSAtomicFunction__Group_1__0__Impl rule__VLSAtomicFunction__Group_1__1 + { + pushFollow(FOLLOW_60); + rule__VLSAtomicFunction__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__0" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__0__Impl" + // InternalVampireLanguage.g:5622:1: rule__VLSAtomicFunction__Group_1__0__Impl : ( () ) ; + public final void rule__VLSAtomicFunction__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5626:1: ( ( () ) ) + // InternalVampireLanguage.g:5627:1: ( () ) + { + // InternalVampireLanguage.g:5627:1: ( () ) + // InternalVampireLanguage.g:5628:2: () + { + before(grammarAccess.getVLSAtomicFunctionAccess().getVLSLessAction_1_0()); + // InternalVampireLanguage.g:5629:2: () + // InternalVampireLanguage.g:5629:3: + { + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getVLSLessAction_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__1" + // InternalVampireLanguage.g:5637:1: rule__VLSAtomicFunction__Group_1__1 : rule__VLSAtomicFunction__Group_1__1__Impl rule__VLSAtomicFunction__Group_1__2 ; + public final void rule__VLSAtomicFunction__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5641:1: ( rule__VLSAtomicFunction__Group_1__1__Impl rule__VLSAtomicFunction__Group_1__2 ) + // InternalVampireLanguage.g:5642:2: rule__VLSAtomicFunction__Group_1__1__Impl rule__VLSAtomicFunction__Group_1__2 + { + pushFollow(FOLLOW_22); + rule__VLSAtomicFunction__Group_1__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__1" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__1__Impl" + // InternalVampireLanguage.g:5649:1: rule__VLSAtomicFunction__Group_1__1__Impl : ( ( rule__VLSAtomicFunction__NameAssignment_1_1 ) ) ; + public final void rule__VLSAtomicFunction__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5653:1: ( ( ( rule__VLSAtomicFunction__NameAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:5654:1: ( ( rule__VLSAtomicFunction__NameAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:5654:1: ( ( rule__VLSAtomicFunction__NameAssignment_1_1 ) ) + // InternalVampireLanguage.g:5655:2: ( rule__VLSAtomicFunction__NameAssignment_1_1 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getNameAssignment_1_1()); + // InternalVampireLanguage.g:5656:2: ( rule__VLSAtomicFunction__NameAssignment_1_1 ) + // InternalVampireLanguage.g:5656:3: rule__VLSAtomicFunction__NameAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__NameAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getNameAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__2" + // InternalVampireLanguage.g:5664:1: rule__VLSAtomicFunction__Group_1__2 : rule__VLSAtomicFunction__Group_1__2__Impl rule__VLSAtomicFunction__Group_1__3 ; + public final void rule__VLSAtomicFunction__Group_1__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5668:1: ( rule__VLSAtomicFunction__Group_1__2__Impl rule__VLSAtomicFunction__Group_1__3 ) + // InternalVampireLanguage.g:5669:2: rule__VLSAtomicFunction__Group_1__2__Impl rule__VLSAtomicFunction__Group_1__3 + { + pushFollow(FOLLOW_36); + rule__VLSAtomicFunction__Group_1__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__2" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__2__Impl" + // InternalVampireLanguage.g:5676:1: rule__VLSAtomicFunction__Group_1__2__Impl : ( '(' ) ; + public final void rule__VLSAtomicFunction__Group_1__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5680:1: ( ( '(' ) ) + // InternalVampireLanguage.g:5681:1: ( '(' ) + { + // InternalVampireLanguage.g:5681:1: ( '(' ) + // InternalVampireLanguage.g:5682:2: '(' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_1_2()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_1_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__2__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__3" + // InternalVampireLanguage.g:5691:1: rule__VLSAtomicFunction__Group_1__3 : rule__VLSAtomicFunction__Group_1__3__Impl rule__VLSAtomicFunction__Group_1__4 ; + public final void rule__VLSAtomicFunction__Group_1__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5695:1: ( rule__VLSAtomicFunction__Group_1__3__Impl rule__VLSAtomicFunction__Group_1__4 ) + // InternalVampireLanguage.g:5696:2: rule__VLSAtomicFunction__Group_1__3__Impl rule__VLSAtomicFunction__Group_1__4 + { + pushFollow(FOLLOW_24); + rule__VLSAtomicFunction__Group_1__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__3" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__3__Impl" + // InternalVampireLanguage.g:5703:1: rule__VLSAtomicFunction__Group_1__3__Impl : ( ( rule__VLSAtomicFunction__TermsAssignment_1_3 ) ) ; + public final void rule__VLSAtomicFunction__Group_1__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5707:1: ( ( ( rule__VLSAtomicFunction__TermsAssignment_1_3 ) ) ) + // InternalVampireLanguage.g:5708:1: ( ( rule__VLSAtomicFunction__TermsAssignment_1_3 ) ) + { + // InternalVampireLanguage.g:5708:1: ( ( rule__VLSAtomicFunction__TermsAssignment_1_3 ) ) + // InternalVampireLanguage.g:5709:2: ( rule__VLSAtomicFunction__TermsAssignment_1_3 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_3()); + // InternalVampireLanguage.g:5710:2: ( rule__VLSAtomicFunction__TermsAssignment_1_3 ) + // InternalVampireLanguage.g:5710:3: rule__VLSAtomicFunction__TermsAssignment_1_3 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__TermsAssignment_1_3(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__3__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__4" + // InternalVampireLanguage.g:5718:1: rule__VLSAtomicFunction__Group_1__4 : rule__VLSAtomicFunction__Group_1__4__Impl rule__VLSAtomicFunction__Group_1__5 ; + public final void rule__VLSAtomicFunction__Group_1__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5722:1: ( rule__VLSAtomicFunction__Group_1__4__Impl rule__VLSAtomicFunction__Group_1__5 ) + // InternalVampireLanguage.g:5723:2: rule__VLSAtomicFunction__Group_1__4__Impl rule__VLSAtomicFunction__Group_1__5 + { + pushFollow(FOLLOW_36); + rule__VLSAtomicFunction__Group_1__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__4" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__4__Impl" + // InternalVampireLanguage.g:5730:1: rule__VLSAtomicFunction__Group_1__4__Impl : ( ',' ) ; + public final void rule__VLSAtomicFunction__Group_1__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5734:1: ( ( ',' ) ) + // InternalVampireLanguage.g:5735:1: ( ',' ) + { + // InternalVampireLanguage.g:5735:1: ( ',' ) + // InternalVampireLanguage.g:5736:2: ',' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_1_4()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_1_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__4__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__5" + // InternalVampireLanguage.g:5745:1: rule__VLSAtomicFunction__Group_1__5 : rule__VLSAtomicFunction__Group_1__5__Impl rule__VLSAtomicFunction__Group_1__6 ; + public final void rule__VLSAtomicFunction__Group_1__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5749:1: ( rule__VLSAtomicFunction__Group_1__5__Impl rule__VLSAtomicFunction__Group_1__6 ) + // InternalVampireLanguage.g:5750:2: rule__VLSAtomicFunction__Group_1__5__Impl rule__VLSAtomicFunction__Group_1__6 + { + pushFollow(FOLLOW_33); + rule__VLSAtomicFunction__Group_1__5__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__6(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__5" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__5__Impl" + // InternalVampireLanguage.g:5757:1: rule__VLSAtomicFunction__Group_1__5__Impl : ( ( rule__VLSAtomicFunction__TermsAssignment_1_5 ) ) ; + public final void rule__VLSAtomicFunction__Group_1__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5761:1: ( ( ( rule__VLSAtomicFunction__TermsAssignment_1_5 ) ) ) + // InternalVampireLanguage.g:5762:1: ( ( rule__VLSAtomicFunction__TermsAssignment_1_5 ) ) + { + // InternalVampireLanguage.g:5762:1: ( ( rule__VLSAtomicFunction__TermsAssignment_1_5 ) ) + // InternalVampireLanguage.g:5763:2: ( rule__VLSAtomicFunction__TermsAssignment_1_5 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_5()); + // InternalVampireLanguage.g:5764:2: ( rule__VLSAtomicFunction__TermsAssignment_1_5 ) + // InternalVampireLanguage.g:5764:3: rule__VLSAtomicFunction__TermsAssignment_1_5 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__TermsAssignment_1_5(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsAssignment_1_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__5__Impl" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__6" + // InternalVampireLanguage.g:5772:1: rule__VLSAtomicFunction__Group_1__6 : rule__VLSAtomicFunction__Group_1__6__Impl ; + public final void rule__VLSAtomicFunction__Group_1__6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5776:1: ( rule__VLSAtomicFunction__Group_1__6__Impl ) + // InternalVampireLanguage.g:5777:2: rule__VLSAtomicFunction__Group_1__6__Impl + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__Group_1__6__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__6" + + + // $ANTLR start "rule__VLSAtomicFunction__Group_1__6__Impl" + // InternalVampireLanguage.g:5783:1: rule__VLSAtomicFunction__Group_1__6__Impl : ( ')' ) ; + public final void rule__VLSAtomicFunction__Group_1__6__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5787:1: ( ( ')' ) ) + // InternalVampireLanguage.g:5788:1: ( ')' ) + { + // InternalVampireLanguage.g:5788:1: ( ')' ) + // InternalVampireLanguage.g:5789:2: ')' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_1_6()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_1_6()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__Group_1__6__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group__0" + // InternalVampireLanguage.g:5799:1: rule__VLSFunctionAsTerm__Group__0 : rule__VLSFunctionAsTerm__Group__0__Impl rule__VLSFunctionAsTerm__Group__1 ; + public final void rule__VLSFunctionAsTerm__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5803:1: ( rule__VLSFunctionAsTerm__Group__0__Impl rule__VLSFunctionAsTerm__Group__1 ) + // InternalVampireLanguage.g:5804:2: rule__VLSFunctionAsTerm__Group__0__Impl rule__VLSFunctionAsTerm__Group__1 + { + pushFollow(FOLLOW_22); + rule__VLSFunctionAsTerm__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group__0" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group__0__Impl" + // InternalVampireLanguage.g:5811:1: rule__VLSFunctionAsTerm__Group__0__Impl : ( ( rule__VLSFunctionAsTerm__FunctorAssignment_0 ) ) ; + public final void rule__VLSFunctionAsTerm__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5815:1: ( ( ( rule__VLSFunctionAsTerm__FunctorAssignment_0 ) ) ) + // InternalVampireLanguage.g:5816:1: ( ( rule__VLSFunctionAsTerm__FunctorAssignment_0 ) ) + { + // InternalVampireLanguage.g:5816:1: ( ( rule__VLSFunctionAsTerm__FunctorAssignment_0 ) ) + // InternalVampireLanguage.g:5817:2: ( rule__VLSFunctionAsTerm__FunctorAssignment_0 ) + { + before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAssignment_0()); + // InternalVampireLanguage.g:5818:2: ( rule__VLSFunctionAsTerm__FunctorAssignment_0 ) + // InternalVampireLanguage.g:5818:3: rule__VLSFunctionAsTerm__FunctorAssignment_0 + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__FunctorAssignment_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAssignment_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group__0__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group__1" + // InternalVampireLanguage.g:5826:1: rule__VLSFunctionAsTerm__Group__1 : rule__VLSFunctionAsTerm__Group__1__Impl ; + public final void rule__VLSFunctionAsTerm__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5830:1: ( rule__VLSFunctionAsTerm__Group__1__Impl ) + // InternalVampireLanguage.g:5831:2: rule__VLSFunctionAsTerm__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group__1" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group__1__Impl" + // InternalVampireLanguage.g:5837:1: rule__VLSFunctionAsTerm__Group__1__Impl : ( ( rule__VLSFunctionAsTerm__Group_1__0 )? ) ; + public final void rule__VLSFunctionAsTerm__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5841:1: ( ( ( rule__VLSFunctionAsTerm__Group_1__0 )? ) ) + // InternalVampireLanguage.g:5842:1: ( ( rule__VLSFunctionAsTerm__Group_1__0 )? ) + { + // InternalVampireLanguage.g:5842:1: ( ( rule__VLSFunctionAsTerm__Group_1__0 )? ) + // InternalVampireLanguage.g:5843:2: ( rule__VLSFunctionAsTerm__Group_1__0 )? + { + before(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1()); + // InternalVampireLanguage.g:5844:2: ( rule__VLSFunctionAsTerm__Group_1__0 )? + int alt43=2; + int LA43_0 = input.LA(1); + + if ( (LA43_0==55) ) { + alt43=1; + } + switch (alt43) { + case 1 : + // InternalVampireLanguage.g:5844:3: rule__VLSFunctionAsTerm__Group_1__0 + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group__1__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__0" + // InternalVampireLanguage.g:5853:1: rule__VLSFunctionAsTerm__Group_1__0 : rule__VLSFunctionAsTerm__Group_1__0__Impl rule__VLSFunctionAsTerm__Group_1__1 ; + public final void rule__VLSFunctionAsTerm__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5857:1: ( rule__VLSFunctionAsTerm__Group_1__0__Impl rule__VLSFunctionAsTerm__Group_1__1 ) + // InternalVampireLanguage.g:5858:2: rule__VLSFunctionAsTerm__Group_1__0__Impl rule__VLSFunctionAsTerm__Group_1__1 + { + pushFollow(FOLLOW_36); + rule__VLSFunctionAsTerm__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__0" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__0__Impl" + // InternalVampireLanguage.g:5865:1: rule__VLSFunctionAsTerm__Group_1__0__Impl : ( '(' ) ; + public final void rule__VLSFunctionAsTerm__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5869:1: ( ( '(' ) ) + // InternalVampireLanguage.g:5870:1: ( '(' ) + { + // InternalVampireLanguage.g:5870:1: ( '(' ) + // InternalVampireLanguage.g:5871:2: '(' + { + before(grammarAccess.getVLSFunctionAsTermAccess().getLeftParenthesisKeyword_1_0()); + match(input,55,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getLeftParenthesisKeyword_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__1" + // InternalVampireLanguage.g:5880:1: rule__VLSFunctionAsTerm__Group_1__1 : rule__VLSFunctionAsTerm__Group_1__1__Impl rule__VLSFunctionAsTerm__Group_1__2 ; + public final void rule__VLSFunctionAsTerm__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5884:1: ( rule__VLSFunctionAsTerm__Group_1__1__Impl rule__VLSFunctionAsTerm__Group_1__2 ) + // InternalVampireLanguage.g:5885:2: rule__VLSFunctionAsTerm__Group_1__1__Impl rule__VLSFunctionAsTerm__Group_1__2 + { + pushFollow(FOLLOW_27); + rule__VLSFunctionAsTerm__Group_1__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__1" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__1__Impl" + // InternalVampireLanguage.g:5892:1: rule__VLSFunctionAsTerm__Group_1__1__Impl : ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_1 ) ) ; + public final void rule__VLSFunctionAsTerm__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5896:1: ( ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:5897:1: ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:5897:1: ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_1 ) ) + // InternalVampireLanguage.g:5898:2: ( rule__VLSFunctionAsTerm__TermsAssignment_1_1 ) + { + before(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_1()); + // InternalVampireLanguage.g:5899:2: ( rule__VLSFunctionAsTerm__TermsAssignment_1_1 ) + // InternalVampireLanguage.g:5899:3: rule__VLSFunctionAsTerm__TermsAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__TermsAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__1__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__2" + // InternalVampireLanguage.g:5907:1: rule__VLSFunctionAsTerm__Group_1__2 : rule__VLSFunctionAsTerm__Group_1__2__Impl rule__VLSFunctionAsTerm__Group_1__3 ; + public final void rule__VLSFunctionAsTerm__Group_1__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5911:1: ( rule__VLSFunctionAsTerm__Group_1__2__Impl rule__VLSFunctionAsTerm__Group_1__3 ) + // InternalVampireLanguage.g:5912:2: rule__VLSFunctionAsTerm__Group_1__2__Impl rule__VLSFunctionAsTerm__Group_1__3 + { + pushFollow(FOLLOW_27); + rule__VLSFunctionAsTerm__Group_1__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__2" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__2__Impl" + // InternalVampireLanguage.g:5919:1: rule__VLSFunctionAsTerm__Group_1__2__Impl : ( ( rule__VLSFunctionAsTerm__Group_1_2__0 )* ) ; + public final void rule__VLSFunctionAsTerm__Group_1__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5923:1: ( ( ( rule__VLSFunctionAsTerm__Group_1_2__0 )* ) ) + // InternalVampireLanguage.g:5924:1: ( ( rule__VLSFunctionAsTerm__Group_1_2__0 )* ) + { + // InternalVampireLanguage.g:5924:1: ( ( rule__VLSFunctionAsTerm__Group_1_2__0 )* ) + // InternalVampireLanguage.g:5925:2: ( rule__VLSFunctionAsTerm__Group_1_2__0 )* + { + before(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1_2()); + // InternalVampireLanguage.g:5926:2: ( rule__VLSFunctionAsTerm__Group_1_2__0 )* + loop44: + do { + int alt44=2; + int LA44_0 = input.LA(1); + + if ( (LA44_0==56) ) { + alt44=1; + } + + + switch (alt44) { + case 1 : + // InternalVampireLanguage.g:5926:3: rule__VLSFunctionAsTerm__Group_1_2__0 + { + pushFollow(FOLLOW_34); + rule__VLSFunctionAsTerm__Group_1_2__0(); + + state._fsp--; + + + } + break; + + default : + break loop44; + } + } while (true); + + after(grammarAccess.getVLSFunctionAsTermAccess().getGroup_1_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__2__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__3" + // InternalVampireLanguage.g:5934:1: rule__VLSFunctionAsTerm__Group_1__3 : rule__VLSFunctionAsTerm__Group_1__3__Impl ; + public final void rule__VLSFunctionAsTerm__Group_1__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5938:1: ( rule__VLSFunctionAsTerm__Group_1__3__Impl ) + // InternalVampireLanguage.g:5939:2: rule__VLSFunctionAsTerm__Group_1__3__Impl + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1__3__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__3" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1__3__Impl" + // InternalVampireLanguage.g:5945:1: rule__VLSFunctionAsTerm__Group_1__3__Impl : ( ')' ) ; + public final void rule__VLSFunctionAsTerm__Group_1__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5949:1: ( ( ')' ) ) + // InternalVampireLanguage.g:5950:1: ( ')' ) + { + // InternalVampireLanguage.g:5950:1: ( ')' ) + // InternalVampireLanguage.g:5951:2: ')' + { + before(grammarAccess.getVLSFunctionAsTermAccess().getRightParenthesisKeyword_1_3()); + match(input,57,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getRightParenthesisKeyword_1_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1__3__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1_2__0" + // InternalVampireLanguage.g:5961:1: rule__VLSFunctionAsTerm__Group_1_2__0 : rule__VLSFunctionAsTerm__Group_1_2__0__Impl rule__VLSFunctionAsTerm__Group_1_2__1 ; + public final void rule__VLSFunctionAsTerm__Group_1_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5965:1: ( rule__VLSFunctionAsTerm__Group_1_2__0__Impl rule__VLSFunctionAsTerm__Group_1_2__1 ) + // InternalVampireLanguage.g:5966:2: rule__VLSFunctionAsTerm__Group_1_2__0__Impl rule__VLSFunctionAsTerm__Group_1_2__1 + { + pushFollow(FOLLOW_36); + rule__VLSFunctionAsTerm__Group_1_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1_2__0" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1_2__0__Impl" + // InternalVampireLanguage.g:5973:1: rule__VLSFunctionAsTerm__Group_1_2__0__Impl : ( ',' ) ; + public final void rule__VLSFunctionAsTerm__Group_1_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5977:1: ( ( ',' ) ) + // InternalVampireLanguage.g:5978:1: ( ',' ) + { + // InternalVampireLanguage.g:5978:1: ( ',' ) + // InternalVampireLanguage.g:5979:2: ',' + { + before(grammarAccess.getVLSFunctionAsTermAccess().getCommaKeyword_1_2_0()); + match(input,56,FOLLOW_2); + after(grammarAccess.getVLSFunctionAsTermAccess().getCommaKeyword_1_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1_2__0__Impl" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1_2__1" + // InternalVampireLanguage.g:5988:1: rule__VLSFunctionAsTerm__Group_1_2__1 : rule__VLSFunctionAsTerm__Group_1_2__1__Impl ; + public final void rule__VLSFunctionAsTerm__Group_1_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:5992:1: ( rule__VLSFunctionAsTerm__Group_1_2__1__Impl ) + // InternalVampireLanguage.g:5993:2: rule__VLSFunctionAsTerm__Group_1_2__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__Group_1_2__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1_2__1" + + + // $ANTLR start "rule__VLSFunctionAsTerm__Group_1_2__1__Impl" + // InternalVampireLanguage.g:5999:1: rule__VLSFunctionAsTerm__Group_1_2__1__Impl : ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 ) ) ; + public final void rule__VLSFunctionAsTerm__Group_1_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6003:1: ( ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 ) ) ) + // InternalVampireLanguage.g:6004:1: ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 ) ) + { + // InternalVampireLanguage.g:6004:1: ( ( rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 ) ) + // InternalVampireLanguage.g:6005:2: ( rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 ) + { + before(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_2_1()); + // InternalVampireLanguage.g:6006:2: ( rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 ) + // InternalVampireLanguage.g:6006:3: rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__TermsAssignment_1_2_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFunctionAsTermAccess().getTermsAssignment_1_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__Group_1_2__1__Impl" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_0__0" + // InternalVampireLanguage.g:6015:1: rule__VLSDefinedTerm__Group_0__0 : rule__VLSDefinedTerm__Group_0__0__Impl rule__VLSDefinedTerm__Group_0__1 ; + public final void rule__VLSDefinedTerm__Group_0__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6019:1: ( rule__VLSDefinedTerm__Group_0__0__Impl rule__VLSDefinedTerm__Group_0__1 ) + // InternalVampireLanguage.g:6020:2: rule__VLSDefinedTerm__Group_0__0__Impl rule__VLSDefinedTerm__Group_0__1 + { + pushFollow(FOLLOW_61); + rule__VLSDefinedTerm__Group_0__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Group_0__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_0__0" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_0__0__Impl" + // InternalVampireLanguage.g:6027:1: rule__VLSDefinedTerm__Group_0__0__Impl : ( () ) ; + public final void rule__VLSDefinedTerm__Group_0__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6031:1: ( ( () ) ) + // InternalVampireLanguage.g:6032:1: ( () ) + { + // InternalVampireLanguage.g:6032:1: ( () ) + // InternalVampireLanguage.g:6033:2: () + { + before(grammarAccess.getVLSDefinedTermAccess().getVLSIntAction_0_0()); + // InternalVampireLanguage.g:6034:2: () + // InternalVampireLanguage.g:6034:3: + { + } + + after(grammarAccess.getVLSDefinedTermAccess().getVLSIntAction_0_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_0__0__Impl" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_0__1" + // InternalVampireLanguage.g:6042:1: rule__VLSDefinedTerm__Group_0__1 : rule__VLSDefinedTerm__Group_0__1__Impl ; + public final void rule__VLSDefinedTerm__Group_0__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6046:1: ( rule__VLSDefinedTerm__Group_0__1__Impl ) + // InternalVampireLanguage.g:6047:2: rule__VLSDefinedTerm__Group_0__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Group_0__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_0__1" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_0__1__Impl" + // InternalVampireLanguage.g:6053:1: rule__VLSDefinedTerm__Group_0__1__Impl : ( ( rule__VLSDefinedTerm__ValueAssignment_0_1 ) ) ; + public final void rule__VLSDefinedTerm__Group_0__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6057:1: ( ( ( rule__VLSDefinedTerm__ValueAssignment_0_1 ) ) ) + // InternalVampireLanguage.g:6058:1: ( ( rule__VLSDefinedTerm__ValueAssignment_0_1 ) ) + { + // InternalVampireLanguage.g:6058:1: ( ( rule__VLSDefinedTerm__ValueAssignment_0_1 ) ) + // InternalVampireLanguage.g:6059:2: ( rule__VLSDefinedTerm__ValueAssignment_0_1 ) + { + before(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_0_1()); + // InternalVampireLanguage.g:6060:2: ( rule__VLSDefinedTerm__ValueAssignment_0_1 ) + // InternalVampireLanguage.g:6060:3: rule__VLSDefinedTerm__ValueAssignment_0_1 + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__ValueAssignment_0_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_0_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_0__1__Impl" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_1__0" + // InternalVampireLanguage.g:6069:1: rule__VLSDefinedTerm__Group_1__0 : rule__VLSDefinedTerm__Group_1__0__Impl rule__VLSDefinedTerm__Group_1__1 ; + public final void rule__VLSDefinedTerm__Group_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6073:1: ( rule__VLSDefinedTerm__Group_1__0__Impl rule__VLSDefinedTerm__Group_1__1 ) + // InternalVampireLanguage.g:6074:2: rule__VLSDefinedTerm__Group_1__0__Impl rule__VLSDefinedTerm__Group_1__1 + { + pushFollow(FOLLOW_36); + rule__VLSDefinedTerm__Group_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Group_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_1__0" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_1__0__Impl" + // InternalVampireLanguage.g:6081:1: rule__VLSDefinedTerm__Group_1__0__Impl : ( () ) ; + public final void rule__VLSDefinedTerm__Group_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6085:1: ( ( () ) ) + // InternalVampireLanguage.g:6086:1: ( () ) + { + // InternalVampireLanguage.g:6086:1: ( () ) + // InternalVampireLanguage.g:6087:2: () + { + before(grammarAccess.getVLSDefinedTermAccess().getVLSDoubleQuoteAction_1_0()); + // InternalVampireLanguage.g:6088:2: () + // InternalVampireLanguage.g:6088:3: + { + } + + after(grammarAccess.getVLSDefinedTermAccess().getVLSDoubleQuoteAction_1_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_1__0__Impl" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_1__1" + // InternalVampireLanguage.g:6096:1: rule__VLSDefinedTerm__Group_1__1 : rule__VLSDefinedTerm__Group_1__1__Impl ; + public final void rule__VLSDefinedTerm__Group_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6100:1: ( rule__VLSDefinedTerm__Group_1__1__Impl ) + // InternalVampireLanguage.g:6101:2: rule__VLSDefinedTerm__Group_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__Group_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_1__1" + + + // $ANTLR start "rule__VLSDefinedTerm__Group_1__1__Impl" + // InternalVampireLanguage.g:6107:1: rule__VLSDefinedTerm__Group_1__1__Impl : ( ( rule__VLSDefinedTerm__ValueAssignment_1_1 ) ) ; + public final void rule__VLSDefinedTerm__Group_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6111:1: ( ( ( rule__VLSDefinedTerm__ValueAssignment_1_1 ) ) ) + // InternalVampireLanguage.g:6112:1: ( ( rule__VLSDefinedTerm__ValueAssignment_1_1 ) ) + { + // InternalVampireLanguage.g:6112:1: ( ( rule__VLSDefinedTerm__ValueAssignment_1_1 ) ) + // InternalVampireLanguage.g:6113:2: ( rule__VLSDefinedTerm__ValueAssignment_1_1 ) + { + before(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_1_1()); + // InternalVampireLanguage.g:6114:2: ( rule__VLSDefinedTerm__ValueAssignment_1_1 ) + // InternalVampireLanguage.g:6114:3: rule__VLSDefinedTerm__ValueAssignment_1_1 + { + pushFollow(FOLLOW_2); + rule__VLSDefinedTerm__ValueAssignment_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSDefinedTermAccess().getValueAssignment_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__Group_1__1__Impl" + + + // $ANTLR start "rule__VampireModel__CommentsAssignment_0" + // InternalVampireLanguage.g:6123:1: rule__VampireModel__CommentsAssignment_0 : ( ruleVLSComment ) ; + public final void rule__VampireModel__CommentsAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6127:1: ( ( ruleVLSComment ) ) + // InternalVampireLanguage.g:6128:2: ( ruleVLSComment ) + { + // InternalVampireLanguage.g:6128:2: ( ruleVLSComment ) + // InternalVampireLanguage.g:6129:3: ruleVLSComment + { + before(grammarAccess.getVampireModelAccess().getCommentsVLSCommentParserRuleCall_0_0()); + pushFollow(FOLLOW_2); + ruleVLSComment(); + + state._fsp--; + + after(grammarAccess.getVampireModelAccess().getCommentsVLSCommentParserRuleCall_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VampireModel__CommentsAssignment_0" + + + // $ANTLR start "rule__VampireModel__ConfirmationsAssignment_1" + // InternalVampireLanguage.g:6138:1: rule__VampireModel__ConfirmationsAssignment_1 : ( ruleVLSConfirmations ) ; + public final void rule__VampireModel__ConfirmationsAssignment_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6142:1: ( ( ruleVLSConfirmations ) ) + // InternalVampireLanguage.g:6143:2: ( ruleVLSConfirmations ) + { + // InternalVampireLanguage.g:6143:2: ( ruleVLSConfirmations ) + // InternalVampireLanguage.g:6144:3: ruleVLSConfirmations + { + before(grammarAccess.getVampireModelAccess().getConfirmationsVLSConfirmationsParserRuleCall_1_0()); + pushFollow(FOLLOW_2); + ruleVLSConfirmations(); + + state._fsp--; + + after(grammarAccess.getVampireModelAccess().getConfirmationsVLSConfirmationsParserRuleCall_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VampireModel__ConfirmationsAssignment_1" + + + // $ANTLR start "rule__VampireModel__FormulasAssignment_2" + // InternalVampireLanguage.g:6153:1: rule__VampireModel__FormulasAssignment_2 : ( ruleVLSFofFormula ) ; + public final void rule__VampireModel__FormulasAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6157:1: ( ( ruleVLSFofFormula ) ) + // InternalVampireLanguage.g:6158:2: ( ruleVLSFofFormula ) + { + // InternalVampireLanguage.g:6158:2: ( ruleVLSFofFormula ) + // InternalVampireLanguage.g:6159:3: ruleVLSFofFormula + { + before(grammarAccess.getVampireModelAccess().getFormulasVLSFofFormulaParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSFofFormula(); + + state._fsp--; + + after(grammarAccess.getVampireModelAccess().getFormulasVLSFofFormulaParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VampireModel__FormulasAssignment_2" + + + // $ANTLR start "rule__VampireModel__TfformulasAssignment_3" + // InternalVampireLanguage.g:6168:1: rule__VampireModel__TfformulasAssignment_3 : ( ruleVLSTffFormula ) ; + public final void rule__VampireModel__TfformulasAssignment_3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6172:1: ( ( ruleVLSTffFormula ) ) + // InternalVampireLanguage.g:6173:2: ( ruleVLSTffFormula ) + { + // InternalVampireLanguage.g:6173:2: ( ruleVLSTffFormula ) + // InternalVampireLanguage.g:6174:3: ruleVLSTffFormula + { + before(grammarAccess.getVampireModelAccess().getTfformulasVLSTffFormulaParserRuleCall_3_0()); + pushFollow(FOLLOW_2); + ruleVLSTffFormula(); + + state._fsp--; + + after(grammarAccess.getVampireModelAccess().getTfformulasVLSTffFormulaParserRuleCall_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VampireModel__TfformulasAssignment_3" + + + // $ANTLR start "rule__VLSComment__CommentAssignment" + // InternalVampireLanguage.g:6183:1: rule__VLSComment__CommentAssignment : ( RULE_SINGLE_COMMENT ) ; + public final void rule__VLSComment__CommentAssignment() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6187:1: ( ( RULE_SINGLE_COMMENT ) ) + // InternalVampireLanguage.g:6188:2: ( RULE_SINGLE_COMMENT ) + { + // InternalVampireLanguage.g:6188:2: ( RULE_SINGLE_COMMENT ) + // InternalVampireLanguage.g:6189:3: RULE_SINGLE_COMMENT + { + before(grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + match(input,RULE_SINGLE_COMMENT,FOLLOW_2); + after(grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSComment__CommentAssignment" + + + // $ANTLR start "rule__VLSConfirmations__NameAssignment_2_3" + // InternalVampireLanguage.g:6198:1: rule__VLSConfirmations__NameAssignment_2_3 : ( RULE_LITERAL ) ; + public final void rule__VLSConfirmations__NameAssignment_2_3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6202:1: ( ( RULE_LITERAL ) ) + // InternalVampireLanguage.g:6203:2: ( RULE_LITERAL ) + { + // InternalVampireLanguage.g:6203:2: ( RULE_LITERAL ) + // InternalVampireLanguage.g:6204:3: RULE_LITERAL + { + before(grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0()); + match(input,RULE_LITERAL,FOLLOW_2); + after(grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSConfirmations__NameAssignment_2_3" + + + // $ANTLR start "rule__VLSFofFormula__NameAssignment_2" + // InternalVampireLanguage.g:6213:1: rule__VLSFofFormula__NameAssignment_2 : ( ( rule__VLSFofFormula__NameAlternatives_2_0 ) ) ; + public final void rule__VLSFofFormula__NameAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6217:1: ( ( ( rule__VLSFofFormula__NameAlternatives_2_0 ) ) ) + // InternalVampireLanguage.g:6218:2: ( ( rule__VLSFofFormula__NameAlternatives_2_0 ) ) + { + // InternalVampireLanguage.g:6218:2: ( ( rule__VLSFofFormula__NameAlternatives_2_0 ) ) + // InternalVampireLanguage.g:6219:3: ( rule__VLSFofFormula__NameAlternatives_2_0 ) + { + before(grammarAccess.getVLSFofFormulaAccess().getNameAlternatives_2_0()); + // InternalVampireLanguage.g:6220:3: ( rule__VLSFofFormula__NameAlternatives_2_0 ) + // InternalVampireLanguage.g:6220:4: rule__VLSFofFormula__NameAlternatives_2_0 + { + pushFollow(FOLLOW_2); + rule__VLSFofFormula__NameAlternatives_2_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFofFormulaAccess().getNameAlternatives_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__NameAssignment_2" + + + // $ANTLR start "rule__VLSFofFormula__FofRoleAssignment_4" + // InternalVampireLanguage.g:6228:1: rule__VLSFofFormula__FofRoleAssignment_4 : ( ruleVLSRole ) ; + public final void rule__VLSFofFormula__FofRoleAssignment_4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6232:1: ( ( ruleVLSRole ) ) + // InternalVampireLanguage.g:6233:2: ( ruleVLSRole ) + { + // InternalVampireLanguage.g:6233:2: ( ruleVLSRole ) + // InternalVampireLanguage.g:6234:3: ruleVLSRole + { + before(grammarAccess.getVLSFofFormulaAccess().getFofRoleVLSRoleParserRuleCall_4_0()); + pushFollow(FOLLOW_2); + ruleVLSRole(); + + state._fsp--; + + after(grammarAccess.getVLSFofFormulaAccess().getFofRoleVLSRoleParserRuleCall_4_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__FofRoleAssignment_4" + + + // $ANTLR start "rule__VLSFofFormula__FofFormulaAssignment_6" + // InternalVampireLanguage.g:6243:1: rule__VLSFofFormula__FofFormulaAssignment_6 : ( ruleVLSTerm ) ; + public final void rule__VLSFofFormula__FofFormulaAssignment_6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6247:1: ( ( ruleVLSTerm ) ) + // InternalVampireLanguage.g:6248:2: ( ruleVLSTerm ) + { + // InternalVampireLanguage.g:6248:2: ( ruleVLSTerm ) + // InternalVampireLanguage.g:6249:3: ruleVLSTerm + { + before(grammarAccess.getVLSFofFormulaAccess().getFofFormulaVLSTermParserRuleCall_6_0()); + pushFollow(FOLLOW_2); + ruleVLSTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFofFormulaAccess().getFofFormulaVLSTermParserRuleCall_6_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__FofFormulaAssignment_6" + + + // $ANTLR start "rule__VLSFofFormula__AnnotationsAssignment_7_1" + // InternalVampireLanguage.g:6258:1: rule__VLSFofFormula__AnnotationsAssignment_7_1 : ( ruleVLSAnnotation ) ; + public final void rule__VLSFofFormula__AnnotationsAssignment_7_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6262:1: ( ( ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:6263:2: ( ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:6263:2: ( ruleVLSAnnotation ) + // InternalVampireLanguage.g:6264:3: ruleVLSAnnotation + { + before(grammarAccess.getVLSFofFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAnnotation(); + + state._fsp--; + + after(grammarAccess.getVLSFofFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFofFormula__AnnotationsAssignment_7_1" + + + // $ANTLR start "rule__VLSTffFormula__NameAssignment_2" + // InternalVampireLanguage.g:6273:1: rule__VLSTffFormula__NameAssignment_2 : ( ruleVLSTffName ) ; + public final void rule__VLSTffFormula__NameAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6277:1: ( ( ruleVLSTffName ) ) + // InternalVampireLanguage.g:6278:2: ( ruleVLSTffName ) + { + // InternalVampireLanguage.g:6278:2: ( ruleVLSTffName ) + // InternalVampireLanguage.g:6279:3: ruleVLSTffName + { + before(grammarAccess.getVLSTffFormulaAccess().getNameVLSTffNameParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSTffName(); + + state._fsp--; + + after(grammarAccess.getVLSTffFormulaAccess().getNameVLSTffNameParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__NameAssignment_2" + + + // $ANTLR start "rule__VLSTffFormula__TffRoleAssignment_4" + // InternalVampireLanguage.g:6288:1: rule__VLSTffFormula__TffRoleAssignment_4 : ( ruleVLSRole ) ; + public final void rule__VLSTffFormula__TffRoleAssignment_4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6292:1: ( ( ruleVLSRole ) ) + // InternalVampireLanguage.g:6293:2: ( ruleVLSRole ) + { + // InternalVampireLanguage.g:6293:2: ( ruleVLSRole ) + // InternalVampireLanguage.g:6294:3: ruleVLSRole + { + before(grammarAccess.getVLSTffFormulaAccess().getTffRoleVLSRoleParserRuleCall_4_0()); + pushFollow(FOLLOW_2); + ruleVLSRole(); + + state._fsp--; + + after(grammarAccess.getVLSTffFormulaAccess().getTffRoleVLSRoleParserRuleCall_4_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__TffRoleAssignment_4" + + + // $ANTLR start "rule__VLSTffFormula__FofFormulaAssignment_6" + // InternalVampireLanguage.g:6303:1: rule__VLSTffFormula__FofFormulaAssignment_6 : ( ruleVLSTffTerm ) ; + public final void rule__VLSTffFormula__FofFormulaAssignment_6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6307:1: ( ( ruleVLSTffTerm ) ) + // InternalVampireLanguage.g:6308:2: ( ruleVLSTffTerm ) + { + // InternalVampireLanguage.g:6308:2: ( ruleVLSTffTerm ) + // InternalVampireLanguage.g:6309:3: ruleVLSTffTerm + { + before(grammarAccess.getVLSTffFormulaAccess().getFofFormulaVLSTffTermParserRuleCall_6_0()); + pushFollow(FOLLOW_2); + ruleVLSTffTerm(); + + state._fsp--; + + after(grammarAccess.getVLSTffFormulaAccess().getFofFormulaVLSTffTermParserRuleCall_6_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__FofFormulaAssignment_6" + + + // $ANTLR start "rule__VLSTffFormula__AnnotationsAssignment_7_1" + // InternalVampireLanguage.g:6318:1: rule__VLSTffFormula__AnnotationsAssignment_7_1 : ( ruleVLSAnnotation ) ; + public final void rule__VLSTffFormula__AnnotationsAssignment_7_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6322:1: ( ( ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:6323:2: ( ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:6323:2: ( ruleVLSAnnotation ) + // InternalVampireLanguage.g:6324:3: ruleVLSAnnotation + { + before(grammarAccess.getVLSTffFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAnnotation(); + + state._fsp--; + + after(grammarAccess.getVLSTffFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTffFormula__AnnotationsAssignment_7_1" + + + // $ANTLR start "rule__VLSAnnotation__NameAssignment_1" + // InternalVampireLanguage.g:6333:1: rule__VLSAnnotation__NameAssignment_1 : ( ( rule__VLSAnnotation__NameAlternatives_1_0 ) ) ; + public final void rule__VLSAnnotation__NameAssignment_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6337:1: ( ( ( rule__VLSAnnotation__NameAlternatives_1_0 ) ) ) + // InternalVampireLanguage.g:6338:2: ( ( rule__VLSAnnotation__NameAlternatives_1_0 ) ) + { + // InternalVampireLanguage.g:6338:2: ( ( rule__VLSAnnotation__NameAlternatives_1_0 ) ) + // InternalVampireLanguage.g:6339:3: ( rule__VLSAnnotation__NameAlternatives_1_0 ) + { + before(grammarAccess.getVLSAnnotationAccess().getNameAlternatives_1_0()); + // InternalVampireLanguage.g:6340:3: ( rule__VLSAnnotation__NameAlternatives_1_0 ) + // InternalVampireLanguage.g:6340:4: rule__VLSAnnotation__NameAlternatives_1_0 + { + pushFollow(FOLLOW_2); + rule__VLSAnnotation__NameAlternatives_1_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAnnotationAccess().getNameAlternatives_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__NameAssignment_1" + + + // $ANTLR start "rule__VLSAnnotation__FollowupAssignment_2_1" + // InternalVampireLanguage.g:6348:1: rule__VLSAnnotation__FollowupAssignment_2_1 : ( ruleVLSAnnotationTerms ) ; + public final void rule__VLSAnnotation__FollowupAssignment_2_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6352:1: ( ( ruleVLSAnnotationTerms ) ) + // InternalVampireLanguage.g:6353:2: ( ruleVLSAnnotationTerms ) + { + // InternalVampireLanguage.g:6353:2: ( ruleVLSAnnotationTerms ) + // InternalVampireLanguage.g:6354:3: ruleVLSAnnotationTerms + { + before(grammarAccess.getVLSAnnotationAccess().getFollowupVLSAnnotationTermsParserRuleCall_2_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAnnotationTerms(); + + state._fsp--; + + after(grammarAccess.getVLSAnnotationAccess().getFollowupVLSAnnotationTermsParserRuleCall_2_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotation__FollowupAssignment_2_1" + + + // $ANTLR start "rule__VLSAnnotationTerms__TermsAssignment_0" + // InternalVampireLanguage.g:6363:1: rule__VLSAnnotationTerms__TermsAssignment_0 : ( ruleVLSAnnotation ) ; + public final void rule__VLSAnnotationTerms__TermsAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6367:1: ( ( ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:6368:2: ( ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:6368:2: ( ruleVLSAnnotation ) + // InternalVampireLanguage.g:6369:3: ruleVLSAnnotation + { + before(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_0_0()); + pushFollow(FOLLOW_2); + ruleVLSAnnotation(); + + state._fsp--; + + after(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__TermsAssignment_0" + + + // $ANTLR start "rule__VLSAnnotationTerms__TermsAssignment_1_1" + // InternalVampireLanguage.g:6378:1: rule__VLSAnnotationTerms__TermsAssignment_1_1 : ( ruleVLSAnnotation ) ; + public final void rule__VLSAnnotationTerms__TermsAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6382:1: ( ( ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:6383:2: ( ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:6383:2: ( ruleVLSAnnotation ) + // InternalVampireLanguage.g:6384:3: ruleVLSAnnotation + { + before(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_1_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAnnotation(); + + state._fsp--; + + after(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAnnotationTerms__TermsAssignment_1_1" + + + // $ANTLR start "rule__VLSCommentTerm__CommentAssignment" + // InternalVampireLanguage.g:6393:1: rule__VLSCommentTerm__CommentAssignment : ( RULE_SINGLE_COMMENT ) ; + public final void rule__VLSCommentTerm__CommentAssignment() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6397:1: ( ( RULE_SINGLE_COMMENT ) ) + // InternalVampireLanguage.g:6398:2: ( RULE_SINGLE_COMMENT ) + { + // InternalVampireLanguage.g:6398:2: ( RULE_SINGLE_COMMENT ) + // InternalVampireLanguage.g:6399:3: RULE_SINGLE_COMMENT + { + before(grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + match(input,RULE_SINGLE_COMMENT,FOLLOW_2); + after(grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSCommentTerm__CommentAssignment" + + + // $ANTLR start "rule__VLSOtherDeclaration__NameAssignment_0" + // InternalVampireLanguage.g:6408:1: rule__VLSOtherDeclaration__NameAssignment_0 : ( ruleVLSAtomicConstant ) ; + public final void rule__VLSOtherDeclaration__NameAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6412:1: ( ( ruleVLSAtomicConstant ) ) + // InternalVampireLanguage.g:6413:2: ( ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:6413:2: ( ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:6414:3: ruleVLSAtomicConstant + { + before(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomicConstant(); + + state._fsp--; + + after(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__NameAssignment_0" + + + // $ANTLR start "rule__VLSOtherDeclaration__TypeAssignment_2" + // InternalVampireLanguage.g:6423:1: rule__VLSOtherDeclaration__TypeAssignment_2 : ( ruleVLSTypeDef ) ; + public final void rule__VLSOtherDeclaration__TypeAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6427:1: ( ( ruleVLSTypeDef ) ) + // InternalVampireLanguage.g:6428:2: ( ruleVLSTypeDef ) + { + // InternalVampireLanguage.g:6428:2: ( ruleVLSTypeDef ) + // InternalVampireLanguage.g:6429:3: ruleVLSTypeDef + { + before(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSTypeDef(); + + state._fsp--; + + after(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSOtherDeclaration__TypeAssignment_2" + + + // $ANTLR start "rule__VLSVariableDeclaration__NameAssignment_0" + // InternalVampireLanguage.g:6438:1: rule__VLSVariableDeclaration__NameAssignment_0 : ( ruleVLSVariable ) ; + public final void rule__VLSVariableDeclaration__NameAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6442:1: ( ( ruleVLSVariable ) ) + // InternalVampireLanguage.g:6443:2: ( ruleVLSVariable ) + { + // InternalVampireLanguage.g:6443:2: ( ruleVLSVariable ) + // InternalVampireLanguage.g:6444:3: ruleVLSVariable + { + before(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0()); + pushFollow(FOLLOW_2); + ruleVLSVariable(); + + state._fsp--; + + after(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__NameAssignment_0" + + + // $ANTLR start "rule__VLSVariableDeclaration__TypeAssignment_2" + // InternalVampireLanguage.g:6453:1: rule__VLSVariableDeclaration__TypeAssignment_2 : ( ruleVLSTypeDef ) ; + public final void rule__VLSVariableDeclaration__TypeAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6457:1: ( ( ruleVLSTypeDef ) ) + // InternalVampireLanguage.g:6458:2: ( ruleVLSTypeDef ) + { + // InternalVampireLanguage.g:6458:2: ( ruleVLSTypeDef ) + // InternalVampireLanguage.g:6459:3: ruleVLSTypeDef + { + before(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSTypeDef(); + + state._fsp--; + + after(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariableDeclaration__TypeAssignment_2" + + + // $ANTLR start "rule__VLSTypeDef__TypeSigAssignment_0" + // InternalVampireLanguage.g:6468:1: rule__VLSTypeDef__TypeSigAssignment_0 : ( ruleVLSUnitaryTerm ) ; + public final void rule__VLSTypeDef__TypeSigAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6472:1: ( ( ruleVLSUnitaryTerm ) ) + // InternalVampireLanguage.g:6473:2: ( ruleVLSUnitaryTerm ) + { + // InternalVampireLanguage.g:6473:2: ( ruleVLSUnitaryTerm ) + // InternalVampireLanguage.g:6474:3: ruleVLSUnitaryTerm + { + before(grammarAccess.getVLSTypeDefAccess().getTypeSigVLSUnitaryTermParserRuleCall_0_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryTerm(); + + state._fsp--; + + after(grammarAccess.getVLSTypeDefAccess().getTypeSigVLSUnitaryTermParserRuleCall_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__TypeSigAssignment_0" + + + // $ANTLR start "rule__VLSTypeDef__MapsToAssignment_1_1" + // InternalVampireLanguage.g:6483:1: rule__VLSTypeDef__MapsToAssignment_1_1 : ( ruleVLSAtomicConstant ) ; + public final void rule__VLSTypeDef__MapsToAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6487:1: ( ( ruleVLSAtomicConstant ) ) + // InternalVampireLanguage.g:6488:2: ( ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:6488:2: ( ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:6489:3: ruleVLSAtomicConstant + { + before(grammarAccess.getVLSTypeDefAccess().getMapsToVLSAtomicConstantParserRuleCall_1_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomicConstant(); + + state._fsp--; + + after(grammarAccess.getVLSTypeDefAccess().getMapsToVLSAtomicConstantParserRuleCall_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSTypeDef__MapsToAssignment_1_1" + + + // $ANTLR start "rule__VLSUnitaryTerm__InitTypeAssignment_0" + // InternalVampireLanguage.g:6498:1: rule__VLSUnitaryTerm__InitTypeAssignment_0 : ( ruleVLSAtomic ) ; + public final void rule__VLSUnitaryTerm__InitTypeAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6502:1: ( ( ruleVLSAtomic ) ) + // InternalVampireLanguage.g:6503:2: ( ruleVLSAtomic ) + { + // InternalVampireLanguage.g:6503:2: ( ruleVLSAtomic ) + // InternalVampireLanguage.g:6504:3: ruleVLSAtomic + { + before(grammarAccess.getVLSUnitaryTermAccess().getInitTypeVLSAtomicParserRuleCall_0_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomic(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryTermAccess().getInitTypeVLSAtomicParserRuleCall_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__InitTypeAssignment_0" + + + // $ANTLR start "rule__VLSUnitaryTerm__NextTypeAssignment_1_1" + // InternalVampireLanguage.g:6513:1: rule__VLSUnitaryTerm__NextTypeAssignment_1_1 : ( ruleVLSAtomicConstant ) ; + public final void rule__VLSUnitaryTerm__NextTypeAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6517:1: ( ( ruleVLSAtomicConstant ) ) + // InternalVampireLanguage.g:6518:2: ( ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:6518:2: ( ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:6519:3: ruleVLSAtomicConstant + { + before(grammarAccess.getVLSUnitaryTermAccess().getNextTypeVLSAtomicConstantParserRuleCall_1_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomicConstant(); + + state._fsp--; + + after(grammarAccess.getVLSUnitaryTermAccess().getNextTypeVLSAtomicConstantParserRuleCall_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnitaryTerm__NextTypeAssignment_1_1" + + + // $ANTLR start "rule__VLSBinary__RightAssignment_1_0_1" + // InternalVampireLanguage.g:6528:1: rule__VLSBinary__RightAssignment_1_0_1 : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSBinary__RightAssignment_1_0_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6532:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:6533:2: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:6533:2: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:6534:3: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__RightAssignment_1_0_1" + + + // $ANTLR start "rule__VLSBinary__RightAssignment_1_1_2" + // InternalVampireLanguage.g:6543:1: rule__VLSBinary__RightAssignment_1_1_2 : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSBinary__RightAssignment_1_1_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6547:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:6548:2: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:6548:2: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:6549:3: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__RightAssignment_1_1_2" + + + // $ANTLR start "rule__VLSBinary__RightAssignment_1_2_2" + // InternalVampireLanguage.g:6558:1: rule__VLSBinary__RightAssignment_1_2_2 : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSBinary__RightAssignment_1_2_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6562:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:6563:2: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:6563:2: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:6564:3: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSBinary__RightAssignment_1_2_2" + + + // $ANTLR start "rule__VLSUniversalQuantifier__VariablesAssignment_1_2" + // InternalVampireLanguage.g:6573:1: rule__VLSUniversalQuantifier__VariablesAssignment_1_2 : ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 ) ) ; + public final void rule__VLSUniversalQuantifier__VariablesAssignment_1_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6577:1: ( ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 ) ) ) + // InternalVampireLanguage.g:6578:2: ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 ) ) + { + // InternalVampireLanguage.g:6578:2: ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 ) ) + // InternalVampireLanguage.g:6579:3: ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_2_0()); + // InternalVampireLanguage.g:6580:3: ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 ) + // InternalVampireLanguage.g:6580:4: rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__VariablesAlternatives_1_2_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__VariablesAssignment_1_2" + + + // $ANTLR start "rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1" + // InternalVampireLanguage.g:6588:1: rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1 : ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 ) ) ; + public final void rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6592:1: ( ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 ) ) ) + // InternalVampireLanguage.g:6593:2: ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 ) ) + { + // InternalVampireLanguage.g:6593:2: ( ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 ) ) + // InternalVampireLanguage.g:6594:3: ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 ) + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_3_1_0()); + // InternalVampireLanguage.g:6595:3: ( rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 ) + // InternalVampireLanguage.g:6595:4: rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0 + { + pushFollow(FOLLOW_2); + rule__VLSUniversalQuantifier__VariablesAlternatives_1_3_1_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesAlternatives_1_3_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__VariablesAssignment_1_3_1" + + + // $ANTLR start "rule__VLSUniversalQuantifier__OperandAssignment_2" + // InternalVampireLanguage.g:6603:1: rule__VLSUniversalQuantifier__OperandAssignment_2 : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSUniversalQuantifier__OperandAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6607:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:6608:2: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:6608:2: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:6609:3: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSUniversalQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSUniversalQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUniversalQuantifier__OperandAssignment_2" + + + // $ANTLR start "rule__VLSExistentialQuantifier__VariablesAssignment_1_2" + // InternalVampireLanguage.g:6618:1: rule__VLSExistentialQuantifier__VariablesAssignment_1_2 : ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 ) ) ; + public final void rule__VLSExistentialQuantifier__VariablesAssignment_1_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6622:1: ( ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 ) ) ) + // InternalVampireLanguage.g:6623:2: ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 ) ) + { + // InternalVampireLanguage.g:6623:2: ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 ) ) + // InternalVampireLanguage.g:6624:3: ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_2_0()); + // InternalVampireLanguage.g:6625:3: ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 ) + // InternalVampireLanguage.g:6625:4: rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__VariablesAlternatives_1_2_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__VariablesAssignment_1_2" + + + // $ANTLR start "rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1" + // InternalVampireLanguage.g:6633:1: rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1 : ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 ) ) ; + public final void rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6637:1: ( ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 ) ) ) + // InternalVampireLanguage.g:6638:2: ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 ) ) + { + // InternalVampireLanguage.g:6638:2: ( ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 ) ) + // InternalVampireLanguage.g:6639:3: ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 ) + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_3_1_0()); + // InternalVampireLanguage.g:6640:3: ( rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 ) + // InternalVampireLanguage.g:6640:4: rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0 + { + pushFollow(FOLLOW_2); + rule__VLSExistentialQuantifier__VariablesAlternatives_1_3_1_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesAlternatives_1_3_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__VariablesAssignment_1_3_1" + + + // $ANTLR start "rule__VLSExistentialQuantifier__OperandAssignment_2" + // InternalVampireLanguage.g:6648:1: rule__VLSExistentialQuantifier__OperandAssignment_2 : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSExistentialQuantifier__OperandAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6652:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:6653:2: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:6653:2: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:6654:3: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSExistentialQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSExistentialQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSExistentialQuantifier__OperandAssignment_2" + + + // $ANTLR start "rule__VLSUnaryNegation__OperandAssignment_2" + // InternalVampireLanguage.g:6663:1: rule__VLSUnaryNegation__OperandAssignment_2 : ( ruleVLSUnitaryFormula ) ; + public final void rule__VLSUnaryNegation__OperandAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6667:1: ( ( ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:6668:2: ( ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:6668:2: ( ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:6669:3: ruleVLSUnitaryFormula + { + before(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleVLSUnitaryFormula(); + + state._fsp--; + + after(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryNegation__OperandAssignment_2" + + + // $ANTLR start "rule__VLSUnaryInfix__RightAssignment_1_1" + // InternalVampireLanguage.g:6678:1: rule__VLSUnaryInfix__RightAssignment_1_1 : ( ruleVLSAtomic ) ; + public final void rule__VLSUnaryInfix__RightAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6682:1: ( ( ruleVLSAtomic ) ) + // InternalVampireLanguage.g:6683:2: ( ruleVLSAtomic ) + { + // InternalVampireLanguage.g:6683:2: ( ruleVLSAtomic ) + // InternalVampireLanguage.g:6684:3: ruleVLSAtomic + { + before(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0()); + pushFollow(FOLLOW_2); + ruleVLSAtomic(); + + state._fsp--; + + after(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSUnaryInfix__RightAssignment_1_1" + + + // $ANTLR start "rule__VLSAtomicConstant__NameAssignment_0_1" + // InternalVampireLanguage.g:6693:1: rule__VLSAtomicConstant__NameAssignment_0_1 : ( ( rule__VLSAtomicConstant__NameAlternatives_0_1_0 ) ) ; + public final void rule__VLSAtomicConstant__NameAssignment_0_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6697:1: ( ( ( rule__VLSAtomicConstant__NameAlternatives_0_1_0 ) ) ) + // InternalVampireLanguage.g:6698:2: ( ( rule__VLSAtomicConstant__NameAlternatives_0_1_0 ) ) + { + // InternalVampireLanguage.g:6698:2: ( ( rule__VLSAtomicConstant__NameAlternatives_0_1_0 ) ) + // InternalVampireLanguage.g:6699:3: ( rule__VLSAtomicConstant__NameAlternatives_0_1_0 ) + { + before(grammarAccess.getVLSAtomicConstantAccess().getNameAlternatives_0_1_0()); + // InternalVampireLanguage.g:6700:3: ( rule__VLSAtomicConstant__NameAlternatives_0_1_0 ) + // InternalVampireLanguage.g:6700:4: rule__VLSAtomicConstant__NameAlternatives_0_1_0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicConstant__NameAlternatives_0_1_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicConstantAccess().getNameAlternatives_0_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicConstant__NameAssignment_0_1" + + + // $ANTLR start "rule__VLSAtomicFunction__ConstantAssignment_0_1" + // InternalVampireLanguage.g:6708:1: rule__VLSAtomicFunction__ConstantAssignment_0_1 : ( ( rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 ) ) ; + public final void rule__VLSAtomicFunction__ConstantAssignment_0_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6712:1: ( ( ( rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 ) ) ) + // InternalVampireLanguage.g:6713:2: ( ( rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 ) ) + { + // InternalVampireLanguage.g:6713:2: ( ( rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 ) ) + // InternalVampireLanguage.g:6714:3: ( rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getConstantAlternatives_0_1_0()); + // InternalVampireLanguage.g:6715:3: ( rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 ) + // InternalVampireLanguage.g:6715:4: rule__VLSAtomicFunction__ConstantAlternatives_0_1_0 + { + pushFollow(FOLLOW_2); + rule__VLSAtomicFunction__ConstantAlternatives_0_1_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getConstantAlternatives_0_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__ConstantAssignment_0_1" + + + // $ANTLR start "rule__VLSAtomicFunction__TermsAssignment_0_2_1" + // InternalVampireLanguage.g:6723:1: rule__VLSAtomicFunction__TermsAssignment_0_2_1 : ( ruleVLSFofTerm ) ; + public final void rule__VLSAtomicFunction__TermsAssignment_0_2_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6727:1: ( ( ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:6728:2: ( ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:6728:2: ( ruleVLSFofTerm ) + // InternalVampireLanguage.g:6729:3: ruleVLSFofTerm + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_1_0()); + pushFollow(FOLLOW_2); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__TermsAssignment_0_2_1" + + + // $ANTLR start "rule__VLSAtomicFunction__TermsAssignment_0_2_2_1" + // InternalVampireLanguage.g:6738:1: rule__VLSAtomicFunction__TermsAssignment_0_2_2_1 : ( ruleVLSFofTerm ) ; + public final void rule__VLSAtomicFunction__TermsAssignment_0_2_2_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6742:1: ( ( ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:6743:2: ( ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:6743:2: ( ruleVLSFofTerm ) + // InternalVampireLanguage.g:6744:3: ruleVLSFofTerm + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_2_1_0()); + pushFollow(FOLLOW_2); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_2_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__TermsAssignment_0_2_2_1" + + + // $ANTLR start "rule__VLSAtomicFunction__NameAssignment_1_1" + // InternalVampireLanguage.g:6753:1: rule__VLSAtomicFunction__NameAssignment_1_1 : ( ( '$less' ) ) ; + public final void rule__VLSAtomicFunction__NameAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6757:1: ( ( ( '$less' ) ) ) + // InternalVampireLanguage.g:6758:2: ( ( '$less' ) ) + { + // InternalVampireLanguage.g:6758:2: ( ( '$less' ) ) + // InternalVampireLanguage.g:6759:3: ( '$less' ) + { + before(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); + // InternalVampireLanguage.g:6760:3: ( '$less' ) + // InternalVampireLanguage.g:6761:4: '$less' + { + before(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); + match(input,80,FOLLOW_2); + after(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); + + } + + after(grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__NameAssignment_1_1" + + + // $ANTLR start "rule__VLSAtomicFunction__TermsAssignment_1_3" + // InternalVampireLanguage.g:6772:1: rule__VLSAtomicFunction__TermsAssignment_1_3 : ( ruleVLSFofTerm ) ; + public final void rule__VLSAtomicFunction__TermsAssignment_1_3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6776:1: ( ( ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:6777:2: ( ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:6777:2: ( ruleVLSFofTerm ) + // InternalVampireLanguage.g:6778:3: ruleVLSFofTerm + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_3_0()); + pushFollow(FOLLOW_2); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__TermsAssignment_1_3" + + + // $ANTLR start "rule__VLSAtomicFunction__TermsAssignment_1_5" + // InternalVampireLanguage.g:6787:1: rule__VLSAtomicFunction__TermsAssignment_1_5 : ( ruleVLSFofTerm ) ; + public final void rule__VLSAtomicFunction__TermsAssignment_1_5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6791:1: ( ( ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:6792:2: ( ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:6792:2: ( ruleVLSFofTerm ) + // InternalVampireLanguage.g:6793:3: ruleVLSFofTerm + { + before(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_5_0()); + pushFollow(FOLLOW_2); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_5_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSAtomicFunction__TermsAssignment_1_5" + + + // $ANTLR start "rule__VLSVariable__NameAssignment" + // InternalVampireLanguage.g:6802:1: rule__VLSVariable__NameAssignment : ( RULE_UPPER_WORD_ID ) ; + public final void rule__VLSVariable__NameAssignment() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6806:1: ( ( RULE_UPPER_WORD_ID ) ) + // InternalVampireLanguage.g:6807:2: ( RULE_UPPER_WORD_ID ) + { + // InternalVampireLanguage.g:6807:2: ( RULE_UPPER_WORD_ID ) + // InternalVampireLanguage.g:6808:3: RULE_UPPER_WORD_ID + { + before(grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0()); + match(input,RULE_UPPER_WORD_ID,FOLLOW_2); + after(grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSVariable__NameAssignment" + + + // $ANTLR start "rule__VLSFunctionAsTerm__FunctorAssignment_0" + // InternalVampireLanguage.g:6817:1: rule__VLSFunctionAsTerm__FunctorAssignment_0 : ( ( rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 ) ) ; + public final void rule__VLSFunctionAsTerm__FunctorAssignment_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6821:1: ( ( ( rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 ) ) ) + // InternalVampireLanguage.g:6822:2: ( ( rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 ) ) + { + // InternalVampireLanguage.g:6822:2: ( ( rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 ) ) + // InternalVampireLanguage.g:6823:3: ( rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 ) + { + before(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAlternatives_0_0()); + // InternalVampireLanguage.g:6824:3: ( rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 ) + // InternalVampireLanguage.g:6824:4: rule__VLSFunctionAsTerm__FunctorAlternatives_0_0 + { + pushFollow(FOLLOW_2); + rule__VLSFunctionAsTerm__FunctorAlternatives_0_0(); + + state._fsp--; + + + } + + after(grammarAccess.getVLSFunctionAsTermAccess().getFunctorAlternatives_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__FunctorAssignment_0" + + + // $ANTLR start "rule__VLSFunctionAsTerm__TermsAssignment_1_1" + // InternalVampireLanguage.g:6832:1: rule__VLSFunctionAsTerm__TermsAssignment_1_1 : ( ruleVLSFofTerm ) ; + public final void rule__VLSFunctionAsTerm__TermsAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6836:1: ( ( ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:6837:2: ( ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:6837:2: ( ruleVLSFofTerm ) + // InternalVampireLanguage.g:6838:3: ruleVLSFofTerm + { + before(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_1_0()); + pushFollow(FOLLOW_2); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__TermsAssignment_1_1" + + + // $ANTLR start "rule__VLSFunctionAsTerm__TermsAssignment_1_2_1" + // InternalVampireLanguage.g:6847:1: rule__VLSFunctionAsTerm__TermsAssignment_1_2_1 : ( ruleVLSFofTerm ) ; + public final void rule__VLSFunctionAsTerm__TermsAssignment_1_2_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6851:1: ( ( ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:6852:2: ( ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:6852:2: ( ruleVLSFofTerm ) + // InternalVampireLanguage.g:6853:3: ruleVLSFofTerm + { + before(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_2_1_0()); + pushFollow(FOLLOW_2); + ruleVLSFofTerm(); + + state._fsp--; + + after(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_2_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSFunctionAsTerm__TermsAssignment_1_2_1" + + + // $ANTLR start "rule__VLSDefinedTerm__ValueAssignment_0_1" + // InternalVampireLanguage.g:6862:1: rule__VLSDefinedTerm__ValueAssignment_0_1 : ( RULE_SIGNED_LITERAL ) ; + public final void rule__VLSDefinedTerm__ValueAssignment_0_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6866:1: ( ( RULE_SIGNED_LITERAL ) ) + // InternalVampireLanguage.g:6867:2: ( RULE_SIGNED_LITERAL ) + { + // InternalVampireLanguage.g:6867:2: ( RULE_SIGNED_LITERAL ) + // InternalVampireLanguage.g:6868:3: RULE_SIGNED_LITERAL + { + before(grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0()); + match(input,RULE_SIGNED_LITERAL,FOLLOW_2); + after(grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__ValueAssignment_0_1" + + + // $ANTLR start "rule__VLSDefinedTerm__ValueAssignment_1_1" + // InternalVampireLanguage.g:6877:1: rule__VLSDefinedTerm__ValueAssignment_1_1 : ( RULE_DOUBLE_QUOTE ) ; + public final void rule__VLSDefinedTerm__ValueAssignment_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalVampireLanguage.g:6881:1: ( ( RULE_DOUBLE_QUOTE ) ) + // InternalVampireLanguage.g:6882:2: ( RULE_DOUBLE_QUOTE ) + { + // InternalVampireLanguage.g:6882:2: ( RULE_DOUBLE_QUOTE ) + // InternalVampireLanguage.g:6883:3: RULE_DOUBLE_QUOTE + { + before(grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0()); + match(input,RULE_DOUBLE_QUOTE,FOLLOW_2); + after(grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__VLSDefinedTerm__ValueAssignment_1_1" + + // Delegated rules + + + protected DFA9 dfa9 = new DFA9(this); + protected DFA21 dfa21 = new DFA21(this); + static final String dfa_1s = "\32\uffff"; + static final String dfa_2s = "\2\uffff\26\1\2\uffff"; + static final String dfa_3s = "\1\4\1\uffff\23\67\3\70\2\uffff"; + static final String dfa_4s = "\1\120\1\uffff\26\115\2\uffff"; + static final String dfa_5s = "\1\uffff\1\1\26\uffff\1\3\1\2"; + static final String dfa_6s = "\32\uffff}>"; + static final String[] dfa_7s = { + "\1\2\1\1\1\3\1\4\1\5\1\30\1\uffff\1\27\1\1\13\uffff\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\20\uffff\1\1\20\uffff\3\1\3\uffff\1\25\1\26\1\1", + "", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\2\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\2\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\2\1\3\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "", + "" + }; + + static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s); + static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s); + static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s); + static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s); + static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s); + static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s); + static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s); + + class DFA9 extends DFA { + + public DFA9(BaseRecognizer recognizer) { + this.recognizer = recognizer; + this.decisionNumber = 9; + this.eot = dfa_1; + this.eof = dfa_2; + this.min = dfa_3; + this.max = dfa_4; + this.accept = dfa_5; + this.special = dfa_6; + this.transition = dfa_7; + } + public String getDescription() { + return "1144:1: rule__VLSTffTerm__Alternatives : ( ( ruleVLSTerm ) | ( ruleVLSDeclaration ) | ( ruleVLSCommentTerm ) );"; + } + } + static final String dfa_8s = "\30\uffff"; + static final String dfa_9s = "\1\uffff\23\24\4\uffff"; + static final String dfa_10s = "\1\4\23\62\4\uffff"; + static final String dfa_11s = "\1\120\23\115\4\uffff"; + static final String dfa_12s = "\24\uffff\1\1\1\2\1\3\1\4"; + static final String dfa_13s = "\30\uffff}>"; + static final String[] dfa_14s = { + "\1\1\1\27\1\2\1\3\1\4\2\uffff\1\26\1\27\13\uffff\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\47\uffff\2\24\1\25", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\4\uffff\12\24\3\uffff\3\24", + "", + "", + "", + "" + }; + + static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s); + static final short[] dfa_9 = DFA.unpackEncodedString(dfa_9s); + static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s); + static final char[] dfa_11 = DFA.unpackEncodedStringToUnsignedChars(dfa_11s); + static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s); + static final short[] dfa_13 = DFA.unpackEncodedString(dfa_13s); + static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s); + + class DFA21 extends DFA { + + public DFA21(BaseRecognizer recognizer) { + this.recognizer = recognizer; + this.decisionNumber = 21; + this.eot = dfa_8; + this.eof = dfa_9; + this.min = dfa_10; + this.max = dfa_11; + this.accept = dfa_12; + this.special = dfa_13; + this.transition = dfa_14; + } + public String getDescription() { + return "1428:1: rule__VLSAtomic__Alternatives : ( ( ruleVLSAtomicConstant ) | ( ruleVLSAtomicFunction ) | ( ruleVLSVariable ) | ( ruleVLSDefinedTerm ) );"; + } + } + + + public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0849018000000202L}); + public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L}); + public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L}); + public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000008000000000L}); + public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000010000000000L}); + public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000080000000000L}); + public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000100000000000L}); + public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000200000000000L}); + public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000400000000000L}); + public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000800000000000L}); + public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0001000000000000L}); + public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0002000000000000L}); + public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000400L}); + public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0004000000000000L}); + public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0009018000000000L}); + public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0010000000000000L}); + public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0020000000000000L}); + public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0080000000000000L}); + public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000070L}); + public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0100000000000000L}); + public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000007FFF000000L}); + public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0080007FFF0019F0L,0x000000000001C700L}); + public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0300000000000000L}); + public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0400000000000000L}); + public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0086007FFF000050L}); + public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x1000000000C00010L}); + public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0080007FFF001BF0L,0x000000000001C700L}); + public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000080L}); + public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0200000000000000L}); + public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0100000000000002L}); + public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x2000000000000000L}); + public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000007FFF0019F0L,0x000000000001C000L}); + public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x4000000000000000L}); + public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000007FFF0001D0L,0x000000000000C000L}); + public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x8000000000000000L}); + public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x8000000000000002L}); + public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FFL}); + public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L}); + public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L}); + public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L}); + public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x000000000000003FL}); + public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L}); + public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L}); + public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L}); + public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000800L}); + public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0104000000000000L}); + public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L}); + public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L}); + public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000000L,0x0000000000003800L}); + public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L}); + public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L}); + public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000007FFF0001D0L}); + public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L}); + public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000007FFF0001D0L,0x0000000000010000L}); + public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000020L}); + +} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src/ca/mcgill/ecse/dslreasoner/ide/VampireLanguageIdeModule.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src/ca/mcgill/ecse/dslreasoner/ide/VampireLanguageIdeModule.xtend new file mode 100644 index 000000000..e48b49355 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src/ca/mcgill/ecse/dslreasoner/ide/VampireLanguageIdeModule.xtend @@ -0,0 +1,11 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ide + + +/** + * Use this class to register ide components. + */ +class VampireLanguageIdeModule extends AbstractVampireLanguageIdeModule { +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src/ca/mcgill/ecse/dslreasoner/ide/VampireLanguageIdeSetup.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src/ca/mcgill/ecse/dslreasoner/ide/VampireLanguageIdeSetup.xtend new file mode 100644 index 000000000..b8411c322 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ide/src/ca/mcgill/ecse/dslreasoner/ide/VampireLanguageIdeSetup.xtend @@ -0,0 +1,20 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ide + +import ca.mcgill.ecse.dslreasoner.VampireLanguageRuntimeModule +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup +import com.google.inject.Guice +import org.eclipse.xtext.util.Modules2 + +/** + * Initialization support for running Xtext languages as language servers. + */ +class VampireLanguageIdeSetup extends VampireLanguageStandaloneSetup { + + override createInjector() { + Guice.createInjector(Modules2.mixin(new VampireLanguageRuntimeModule, new VampireLanguageIdeModule)) + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.classpath new file mode 100644 index 000000000..1287f96c4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.gitignore new file mode 100644 index 000000000..8d2cfe73f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/src-gen/ +/xtend-gen/ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.project new file mode 100644 index 000000000..323ea59fb --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.project @@ -0,0 +1,34 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.language.tests + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.settings/org.eclipse.core.resources.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4824b8026 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/META-INF/MANIFEST.MF new file mode 100644 index 000000000..0667fc7f6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/META-INF/MANIFEST.MF @@ -0,0 +1,21 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ca.mcgill.ecse.dslreasoner.vampire.language.tests +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.language.tests; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: ca.mcgill.ecse.dslreasoner.vampire.language, + org.junit;bundle-version="4.12.0", + org.eclipse.xtext.testing, + org.eclipse.xtext.xbase.testing, + org.eclipse.xtext.xbase.lib;bundle-version="2.14.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: ca.mcgill.ecse.dslreasoner.tests;x-internal=true +Import-Package: org.hamcrest.core, + org.junit;version="4.5.0", + org.junit.runners.model;version="4.5.0", + org.junit.runner;version="4.5.0", + org.junit.runners;version="4.5.0", + org.junit.runner.manipulation;version="4.5.0", + org.junit.runner.notification;version="4.5.0" diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/build.properties new file mode 100644 index 000000000..4c654e9b0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/build.properties @@ -0,0 +1,6 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/ +bin.excludes = **/*.xtend diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/src-gen/ca/mcgill/ecse/dslreasoner/tests/VampireLanguageInjectorProvider.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/src-gen/ca/mcgill/ecse/dslreasoner/tests/VampireLanguageInjectorProvider.java new file mode 100644 index 000000000..0362a2fa0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/src-gen/ca/mcgill/ecse/dslreasoner/tests/VampireLanguageInjectorProvider.java @@ -0,0 +1,66 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.tests; + +import ca.mcgill.ecse.dslreasoner.VampireLanguageRuntimeModule; +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup; +import com.google.inject.Guice; +import com.google.inject.Injector; +import org.eclipse.xtext.testing.GlobalRegistries; +import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento; +import org.eclipse.xtext.testing.IInjectorProvider; +import org.eclipse.xtext.testing.IRegistryConfigurator; + +public class VampireLanguageInjectorProvider implements IInjectorProvider, IRegistryConfigurator { + + protected GlobalStateMemento stateBeforeInjectorCreation; + protected GlobalStateMemento stateAfterInjectorCreation; + protected Injector injector; + + static { + GlobalRegistries.initializeDefaults(); + } + + @Override + public Injector getInjector() { + if (injector == null) { + stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState(); + this.injector = internalCreateInjector(); + stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState(); + } + return injector; + } + + protected Injector internalCreateInjector() { + return new VampireLanguageStandaloneSetup() { + @Override + public Injector createInjector() { + return Guice.createInjector(createRuntimeModule()); + } + }.createInjectorAndDoEMFRegistration(); + } + + protected VampireLanguageRuntimeModule createRuntimeModule() { + // make it work also with Maven/Tycho and OSGI + // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672 + return new VampireLanguageRuntimeModule() { + @Override + public ClassLoader bindClassLoaderToInstance() { + return VampireLanguageInjectorProvider.class + .getClassLoader(); + } + }; + } + + @Override + public void restoreRegistry() { + stateBeforeInjectorCreation.restoreGlobalState(); + } + + @Override + public void setupRegistry() { + getInjector(); + stateAfterInjectorCreation.restoreGlobalState(); + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/src/ca/mcgill/ecse/dslreasoner/tests/VampireLanguageParsingTest.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/src/ca/mcgill/ecse/dslreasoner/tests/VampireLanguageParsingTest.xtend new file mode 100644 index 000000000..6d13b4554 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.tests/src/ca/mcgill/ecse/dslreasoner/tests/VampireLanguageParsingTest.xtend @@ -0,0 +1,29 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.tests + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel +import com.google.inject.Inject +import org.eclipse.xtext.testing.InjectWith +import org.eclipse.xtext.testing.XtextRunner +import org.eclipse.xtext.testing.util.ParseHelper +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(XtextRunner) +@InjectWith(VampireLanguageInjectorProvider) +class VampireLanguageParsingTest { + @Inject + ParseHelper parseHelper + + @Test + def void loadModel() { + val result = parseHelper.parse(''' + Hello Xtext! + ''') + Assert.assertNotNull(result) + Assert.assertTrue(result.eResource.errors.isEmpty) + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.classpath new file mode 100644 index 000000000..1287f96c4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.gitignore new file mode 100644 index 000000000..8d2cfe73f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/src-gen/ +/xtend-gen/ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.project new file mode 100644 index 000000000..f0c7fbeda --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.project @@ -0,0 +1,34 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.settings/org.eclipse.core.resources.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4824b8026 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/META-INF/MANIFEST.MF new file mode 100644 index 000000000..8bfed6bce --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/META-INF/MANIFEST.MF @@ -0,0 +1,24 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: ca.mcgill.ecse.dslreasoner.vampire.language.ui, + org.junit;bundle-version="4.12.0", + org.eclipse.xtext.testing, + org.eclipse.xtext.xbase.testing, + org.eclipse.xtext.junit4, + org.eclipse.xtext.xbase.junit, + org.eclipse.core.runtime, + org.eclipse.ui.workbench;resolution:=optional +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: ca.mcgill.ecse.dslreasoner.ui.tests;x-internal=true +Import-Package: org.hamcrest.core, + org.junit;version="4.5.0", + org.junit.runners.model;version="4.5.0", + org.junit.runner;version="4.5.0", + org.junit.runners;version="4.5.0", + org.junit.runner.manipulation;version="4.5.0", + org.junit.runner.notification;version="4.5.0" diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/build.properties new file mode 100644 index 000000000..4c654e9b0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/build.properties @@ -0,0 +1,6 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/ +bin.excludes = **/*.xtend diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/src-gen/ca/mcgill/ecse/dslreasoner/ui/tests/VampireLanguageUiInjectorProvider.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/src-gen/ca/mcgill/ecse/dslreasoner/ui/tests/VampireLanguageUiInjectorProvider.java new file mode 100644 index 000000000..1c2ad5b48 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui.tests/src-gen/ca/mcgill/ecse/dslreasoner/ui/tests/VampireLanguageUiInjectorProvider.java @@ -0,0 +1,17 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.tests; + +import ca.mcgill.ecse.dslreasoner.vampire.language.ui.internal.LanguageActivator; +import com.google.inject.Injector; +import org.eclipse.xtext.testing.IInjectorProvider; + +public class VampireLanguageUiInjectorProvider implements IInjectorProvider { + + @Override + public Injector getInjector() { + return LanguageActivator.getInstance().getInjector("ca.mcgill.ecse.dslreasoner.VampireLanguage"); + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.classpath new file mode 100644 index 000000000..1287f96c4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.gitignore new file mode 100644 index 000000000..8d2cfe73f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/src-gen/ +/xtend-gen/ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.project new file mode 100644 index 000000000..51d158328 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.project @@ -0,0 +1,34 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.language.ui + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.settings/org.eclipse.core.resources.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4824b8026 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/META-INF/MANIFEST.MF new file mode 100644 index 000000000..48ee74177 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/META-INF/MANIFEST.MF @@ -0,0 +1,25 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ca.mcgill.ecse.dslreasoner.vampire.language.ui +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.language.ui; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: ca.mcgill.ecse.dslreasoner.vampire.language, + ca.mcgill.ecse.dslreasoner.vampire.language.ide, + org.eclipse.xtext.ui, + org.eclipse.xtext.ui.shared, + org.eclipse.xtext.ui.codetemplates.ui, + org.eclipse.ui.editors;bundle-version="3.5.0", + org.eclipse.ui.ide;bundle-version="3.5.0", + org.eclipse.ui, + org.eclipse.compare, + org.eclipse.xtext.builder, + org.eclipse.xtend.lib;resolution:=optional, + org.eclipse.xtext.xbase.lib;bundle-version="2.14.0" +Import-Package: org.apache.log4j +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: ca.mcgill.ecse.dslreasoner.ui.contentassist, + ca.mcgill.ecse.dslreasoner.vampire.language.ui.internal, + ca.mcgill.ecse.dslreasoner.ui.quickfix +Bundle-Activator: ca.mcgill.ecse.dslreasoner.vampire.language.ui.internal.LanguageActivator diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/build.properties new file mode 100644 index 000000000..4b1fa5039 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/build.properties @@ -0,0 +1,7 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/,\ + plugin.xml +bin.excludes = **/*.xtend diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/plugin.xml b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/plugin.xml new file mode 100644 index 000000000..b15ba9ffb --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/plugin.xml @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/plugin.xml_gen b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/plugin.xml_gen new file mode 100644 index 000000000..cbb504dd4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/plugin.xml_gen @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/AbstractVampireLanguageUiModule.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/AbstractVampireLanguageUiModule.java new file mode 100644 index 000000000..726c20f54 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/AbstractVampireLanguageUiModule.java @@ -0,0 +1,300 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ui; + +import ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.PartialVampireLanguageContentAssistParser; +import ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.VampireLanguageParser; +import ca.mcgill.ecse.dslreasoner.ide.contentassist.antlr.internal.InternalVampireLanguageLexer; +import ca.mcgill.ecse.dslreasoner.ui.contentassist.VampireLanguageProposalProvider; +import ca.mcgill.ecse.dslreasoner.ui.labeling.VampireLanguageDescriptionLabelProvider; +import ca.mcgill.ecse.dslreasoner.ui.labeling.VampireLanguageLabelProvider; +import ca.mcgill.ecse.dslreasoner.ui.outline.VampireLanguageOutlineTreeProvider; +import ca.mcgill.ecse.dslreasoner.ui.quickfix.VampireLanguageQuickfixProvider; +import ca.mcgill.ecse.dslreasoner.validation.VampireLanguageValidatorConfigurationBlock; +import com.google.inject.Binder; +import com.google.inject.Provider; +import com.google.inject.name.Names; +import org.eclipse.compare.IViewerCreator; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.xtext.builder.BuilderParticipant; +import org.eclipse.xtext.builder.EclipseOutputConfigurationProvider; +import org.eclipse.xtext.builder.IXtextBuilderParticipant; +import org.eclipse.xtext.builder.builderState.IBuilderState; +import org.eclipse.xtext.builder.clustering.CurrentDescriptions; +import org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource; +import org.eclipse.xtext.builder.nature.NatureAddingEditorCallback; +import org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess; +import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider; +import org.eclipse.xtext.ide.LexerIdeBindings; +import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser; +import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider; +import org.eclipse.xtext.parser.antlr.ITokenDefProvider; +import org.eclipse.xtext.parser.antlr.LexerProvider; +import org.eclipse.xtext.resource.IResourceDescriptions; +import org.eclipse.xtext.resource.containers.IAllContainersState; +import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; +import org.eclipse.xtext.service.SingletonBinding; +import org.eclipse.xtext.ui.DefaultUiModule; +import org.eclipse.xtext.ui.UIBindings; +import org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator; +import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialEditingContentAssistContextFactory; +import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.PartialEditingContentAssistContextFactory; +import org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage; +import org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration; +import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar; +import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry; +import org.eclipse.xtext.ui.compare.DefaultViewerCreator; +import org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource; +import org.eclipse.xtext.ui.editor.IXtextEditorCallback; +import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; +import org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher; +import org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider; +import org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper; +import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher; +import org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper; +import org.eclipse.xtext.ui.editor.contentassist.antlr.DelegatingContentAssistContextFactory; +import org.eclipse.xtext.ui.editor.formatting.IContentFormatterFactory; +import org.eclipse.xtext.ui.editor.formatting2.ContentFormatterFactory; +import org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider; +import org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider; +import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer; +import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider; +import org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage; +import org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator; +import org.eclipse.xtext.ui.refactoring.IReferenceUpdater; +import org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider; +import org.eclipse.xtext.ui.refactoring.IRenameStrategy; +import org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator; +import org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater; +import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider; +import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy; +import org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport; +import org.eclipse.xtext.ui.refactoring.ui.IRenameSupport; +import org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences; +import org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider; +import org.eclipse.xtext.ui.shared.Access; +import org.eclipse.xtext.ui.validation.AbstractValidatorConfigurationBlock; + +/** + * Manual modifications go to {@link VampireLanguageUiModule}. + */ +@SuppressWarnings("all") +public abstract class AbstractVampireLanguageUiModule extends DefaultUiModule { + + public AbstractVampireLanguageUiModule(AbstractUIPlugin plugin) { + super(plugin); + } + + // contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment + public Provider provideIAllContainersState() { + return Access.getJavaProjectsState(); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindIProposalConflictHelper() { + return AntlrProposalConflictHelper.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureContentAssistLexer(Binder binder) { + binder.bind(Lexer.class) + .annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST)) + .to(InternalVampireLanguageLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureHighlightingLexer(Binder binder) { + binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class) + .annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING)) + .to(ca.mcgill.ecse.dslreasoner.parser.antlr.internal.InternalVampireLanguageLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureHighlightingTokenDefProvider(Binder binder) { + binder.bind(ITokenDefProvider.class) + .annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING)) + .to(AntlrTokenDefProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindContentAssistContext$Factory() { + return DelegatingContentAssistContextFactory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindIContentAssistParser() { + return VampireLanguageParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureContentAssistLexerProvider(Binder binder) { + binder.bind(InternalVampireLanguageLexer.class).toProvider(LexerProvider.create(InternalVampireLanguageLexer.class)); + } + + // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 + public Class bindAbstractValidatorConfigurationBlock() { + return VampireLanguageValidatorConfigurationBlock.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class bindPrefixMatcher() { + return FQNPrefixMatcher.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class bindIDependentElementsCalculator() { + return DefaultDependentElementsCalculator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptionsBuilderScope(Binder binder) { + binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(CurrentDescriptions.ResourceSetAware.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class bindIXtextEditorCallback() { + return NatureAddingEditorCallback.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class bindIContextualOutputConfigurationProvider() { + return EclipseOutputConfigurationProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptionsPersisted(Binder binder) { + binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(IBuilderState.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class bindDocumentBasedDirtyResource() { + return PersistentDataAwareDirtyResource.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public Class bindIXtextBuilderParticipant() { + return BuilderParticipant.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public IWorkspaceRoot bindIWorkspaceRootToInstance() { + return ResourcesPlugin.getWorkspace().getRoot(); + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public void configureBuilderPreferenceStoreInitializer(Binder binder) { + binder.bind(IPreferenceStoreInitializer.class) + .annotatedWith(Names.named("builderPreferenceInitializer")) + .to(BuilderPreferenceAccess.Initializer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 + public Class bindIContentFormatterFactory() { + return ContentFormatterFactory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2 + public Class bindILabelProvider() { + return VampireLanguageLabelProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2 + public void configureResourceUIServiceLabelProvider(Binder binder) { + binder.bind(ILabelProvider.class).annotatedWith(ResourceServiceDescriptionLabelProvider.class).to(VampireLanguageDescriptionLabelProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2 + public Class bindIOutlineTreeProvider() { + return VampireLanguageOutlineTreeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2 + public Class bindIOutlineTreeStructureProvider() { + return VampireLanguageOutlineTreeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2 + public Class bindIssueResolutionProvider() { + return VampireLanguageQuickfixProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.contentAssist.ContentAssistFragment2 + public Class bindIContentProposalProvider() { + return VampireLanguageProposalProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public void configureIPreferenceStoreInitializer(Binder binder) { + binder.bind(IPreferenceStoreInitializer.class) + .annotatedWith(Names.named("RefactoringPreferences")) + .to(RefactoringPreferences.Initializer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameStrategy() { + return DefaultRenameStrategy.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIReferenceUpdater() { + return DefaultReferenceUpdater.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameRefactoringProvider() { + return DefaultRenameRefactoringProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class bindIRenameSupport$Factory() { + return DefaultRenameSupport.Factory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Provider provideTemplatesLanguageConfiguration() { + return AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider(); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Provider provideLanguageRegistry() { + return AccessibleCodetemplatesActivator.getLanguageRegistry(); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + @SingletonBinding(eager=true) + public Class bindLanguageRegistrar() { + return LanguageRegistrar.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Class bindXtextTemplatePreferencePage() { + return AdvancedTemplatesPreferencePage.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Class bindIPartialEditingContentAssistParser() { + return PartialVampireLanguageContentAssistParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Class bindIPartialEditingContentAssistContextFactory() { + return PartialEditingContentAssistContextFactory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2 + public Class bindIViewerCreator() { + return DefaultViewerCreator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2 + public void configureCompareViewerTitle(Binder binder) { + binder.bind(String.class).annotatedWith(Names.named(UIBindings.COMPARE_VIEWER_TITLE)).toInstance("VampireLanguage Compare"); + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/VampireLanguageExecutableExtensionFactory.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/VampireLanguageExecutableExtensionFactory.java new file mode 100644 index 000000000..1dc2d4cb6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/VampireLanguageExecutableExtensionFactory.java @@ -0,0 +1,29 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ui; + +import ca.mcgill.ecse.dslreasoner.vampire.language.ui.internal.LanguageActivator; +import com.google.inject.Injector; +import org.eclipse.core.runtime.Platform; +import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory; +import org.osgi.framework.Bundle; + +/** + * This class was generated. Customizations should only happen in a newly + * introduced subclass. + */ +public class VampireLanguageExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory { + + @Override + protected Bundle getBundle() { + return Platform.getBundle(LanguageActivator.PLUGIN_ID); + } + + @Override + protected Injector getInjector() { + LanguageActivator activator = LanguageActivator.getInstance(); + return activator != null ? activator.getInjector(LanguageActivator.CA_MCGILL_ECSE_DSLREASONER_VAMPIRELANGUAGE) : null; + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/AbstractVampireLanguageProposalProvider.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/AbstractVampireLanguageProposalProvider.java new file mode 100644 index 000000000..84b77335f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/ui/contentassist/AbstractVampireLanguageProposalProvider.java @@ -0,0 +1,294 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.contentassist; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.Alternatives; +import org.eclipse.xtext.Assignment; +import org.eclipse.xtext.RuleCall; +import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider; +import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; +import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; + +/** + * Represents a generated, default implementation of superclass {@link TerminalsProposalProvider}. + * Methods are dynamically dispatched on the first parameter, i.e., you can override them + * with a more concrete subtype. + */ +public abstract class AbstractVampireLanguageProposalProvider extends TerminalsProposalProvider { + + public void completeVampireModel_Comments(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVampireModel_Confirmations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVampireModel_Formulas(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVampireModel_Tfformulas(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSComment_Comment(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSConfirmations_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSFofFormula_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(2)), context, acceptor); + } + public void completeVLSFofFormula_FofRole(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSFofFormula_FofFormula(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSFofFormula_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSTffFormula_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSTffFormula_TffRole(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSTffFormula_FofFormula(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSTffFormula_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSAnnotation_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(2)), context, acceptor); + } + public void completeVLSAnnotation_Followup(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSAnnotationTerms_Terms(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSCommentTerm_Comment(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSOtherDeclaration_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSOtherDeclaration_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSVariableDeclaration_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSVariableDeclaration_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSTypeDef_TypeSig(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSTypeDef_MapsTo(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSUnitaryTerm_InitType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSUnitaryTerm_NextType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSBinary_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSUniversalQuantifier_Variables(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + } + public void completeVLSUniversalQuantifier_Operand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSExistentialQuantifier_Variables(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + } + public void completeVLSExistentialQuantifier_Operand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSUnaryNegation_Operand(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSUnaryInfix_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSAtomicConstant_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(2)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(3)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(4)), context, acceptor); + } + public void completeVLSAtomicFunction_Constant(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(2)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(3)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(4)), context, acceptor); + } + public void completeVLSAtomicFunction_Terms(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSAtomicFunction_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void completeVLSVariable_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSFunctionAsTerm_Functor(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(2)), context, acceptor); + completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(3)), context, acceptor); + } + public void completeVLSFunctionAsTerm_Terms(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeVLSDefinedTerm_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + + public void complete_VampireModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_ALPHA_NUMERIC(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_UPPER_WORD_ID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_LOWER_WORD_ID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_DOUBLE_QUOTE(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_SINGLE_QUOTE(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_SIGN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_DOLLAR_ID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_DOUBLE_DOLLAR_ID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_LITERAL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_SIGNED_LITERAL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_SINGLE_COMMENT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSComment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSConfirmations(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSFofFormula(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTffFormula(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTffName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTffDistinct(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTffFinite(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTffDeclPred(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSRole(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSAnnotation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSAnnotationTerms(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTffTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSCommentTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSDeclaration(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSOtherDeclaration(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSVariableDeclaration(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTypeDef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSUnitaryTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSBinary(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSUnitaryFormula(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSUniversalQuantifier(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSExistentialQuantifier(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSUnaryNegation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSUnaryInfix(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSAtomic(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSAtomicConstant(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSAtomicFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSVariable(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSFofTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSFunctionAsTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_VLSDefinedTerm(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageValidatorConfigurationBlock.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageValidatorConfigurationBlock.java new file mode 100644 index 000000000..9faf62323 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageValidatorConfigurationBlock.java @@ -0,0 +1,65 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.validation; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.xtext.ui.preferences.OptionsConfigurationBlock; +import org.eclipse.xtext.ui.validation.AbstractValidatorConfigurationBlock; +import org.eclipse.xtext.validation.SeverityConverter; + +@SuppressWarnings("restriction") +public class VampireLanguageValidatorConfigurationBlock extends AbstractValidatorConfigurationBlock { + + @Override + protected void fillSettingsPage(Composite composite, int nColumns, int defaultIndent) { + addComboBox(VampireLanguageConfigurableIssueCodesProvider.DEPRECATED_MODEL_PART, "Deprecated Model Part", composite, defaultIndent); + } + + @Override + protected Job getBuildJob(IProject project) { + Job buildJob = new OptionsConfigurationBlock.BuildJob("Validation Settings Changed", project); + buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule()); + buildJob.setUser(true); + return buildJob; + } + + @Override + protected String[] getFullBuildDialogStrings(boolean workspaceSettings) { + return new String[] { "Validation Settings Changed", + "Validation settings have changed. A full rebuild is required for changes to take effect. Do the full build now?" }; + } + + @Override + protected void validateSettings(String changedKey, String oldValue, String newValue) { + } + + protected Combo addComboBox(String prefKey, String label, Composite parent, int indent) { + String[] values = new String[] { SeverityConverter.SEVERITY_ERROR, SeverityConverter.SEVERITY_WARNING, + SeverityConverter.SEVERITY_INFO, SeverityConverter.SEVERITY_IGNORE }; + String[] valueLabels = new String[] { "Error", "Warning", "Info", "Ignore" }; + Combo comboBox = addComboBox(parent, label, prefKey, indent, values, valueLabels); + return comboBox; + } + + @Override + public void dispose() { + storeSectionExpansionStates(getDialogSettings()); + super.dispose(); + } + + @Override + protected IDialogSettings getDialogSettings() { + IDialogSettings dialogSettings = super.getDialogSettings(); + IDialogSettings section = dialogSettings.getSection("VampireLanguage"); + if (section == null) { + return dialogSettings.addNewSection("VampireLanguage"); + } + return section; + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/vampire/language/ui/internal/LanguageActivator.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/vampire/language/ui/internal/LanguageActivator.java new file mode 100644 index 000000000..b25ea8a3c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src-gen/ca/mcgill/ecse/dslreasoner/vampire/language/ui/internal/LanguageActivator.java @@ -0,0 +1,94 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampire.language.ui.internal; + +import ca.mcgill.ecse.dslreasoner.VampireLanguageRuntimeModule; +import ca.mcgill.ecse.dslreasoner.ui.VampireLanguageUiModule; +import com.google.common.collect.Maps; +import com.google.inject.Guice; +import com.google.inject.Injector; +import java.util.Collections; +import java.util.Map; +import org.apache.log4j.Logger; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.xtext.ui.shared.SharedStateModule; +import org.eclipse.xtext.util.Modules2; +import org.osgi.framework.BundleContext; + +/** + * This class was generated. Customizations should only happen in a newly + * introduced subclass. + */ +public class LanguageActivator extends AbstractUIPlugin { + + public static final String PLUGIN_ID = "ca.mcgill.ecse.dslreasoner.vampire.language.ui"; + public static final String CA_MCGILL_ECSE_DSLREASONER_VAMPIRELANGUAGE = "ca.mcgill.ecse.dslreasoner.VampireLanguage"; + + private static final Logger logger = Logger.getLogger(LanguageActivator.class); + + private static LanguageActivator INSTANCE; + + private Map injectors = Collections.synchronizedMap(Maps. newHashMapWithExpectedSize(1)); + + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + INSTANCE = this; + } + + @Override + public void stop(BundleContext context) throws Exception { + injectors.clear(); + INSTANCE = null; + super.stop(context); + } + + public static LanguageActivator getInstance() { + return INSTANCE; + } + + public Injector getInjector(String language) { + synchronized (injectors) { + Injector injector = injectors.get(language); + if (injector == null) { + injectors.put(language, injector = createInjector(language)); + } + return injector; + } + } + + protected Injector createInjector(String language) { + try { + com.google.inject.Module runtimeModule = getRuntimeModule(language); + com.google.inject.Module sharedStateModule = getSharedStateModule(); + com.google.inject.Module uiModule = getUiModule(language); + com.google.inject.Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule); + return Guice.createInjector(mergedModule); + } catch (Exception e) { + logger.error("Failed to create injector for " + language); + logger.error(e.getMessage(), e); + throw new RuntimeException("Failed to create injector for " + language, e); + } + } + + protected com.google.inject.Module getRuntimeModule(String grammar) { + if (CA_MCGILL_ECSE_DSLREASONER_VAMPIRELANGUAGE.equals(grammar)) { + return new VampireLanguageRuntimeModule(); + } + throw new IllegalArgumentException(grammar); + } + + protected com.google.inject.Module getUiModule(String grammar) { + if (CA_MCGILL_ECSE_DSLREASONER_VAMPIRELANGUAGE.equals(grammar)) { + return new VampireLanguageUiModule(this); + } + throw new IllegalArgumentException(grammar); + } + + protected com.google.inject.Module getSharedStateModule() { + return new SharedStateModule(); + } + + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/VampireLanguageUiModule.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/VampireLanguageUiModule.xtend new file mode 100644 index 000000000..ab20cdc58 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/VampireLanguageUiModule.xtend @@ -0,0 +1,13 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ui + +import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor + +/** + * Use this class to register components to be used within the Eclipse IDE. + */ +@FinalFieldsConstructor +class VampireLanguageUiModule extends AbstractVampireLanguageUiModule { +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/contentassist/VampireLanguageProposalProvider.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/contentassist/VampireLanguageProposalProvider.xtend new file mode 100644 index 000000000..e550c9740 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/contentassist/VampireLanguageProposalProvider.xtend @@ -0,0 +1,12 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.contentassist + + +/** + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist + * on how to customize the content assistant. + */ +class VampireLanguageProposalProvider extends AbstractVampireLanguageProposalProvider { +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/labeling/VampireLanguageDescriptionLabelProvider.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/labeling/VampireLanguageDescriptionLabelProvider.xtend new file mode 100644 index 000000000..4e33aebcc --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/labeling/VampireLanguageDescriptionLabelProvider.xtend @@ -0,0 +1,24 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.labeling + +import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider + +/** + * Provides labels for IEObjectDescriptions and IResourceDescriptions. + * + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider + */ +class VampireLanguageDescriptionLabelProvider extends DefaultDescriptionLabelProvider { + + // Labels and icons can be computed like this: + +// override text(IEObjectDescription ele) { +// ele.name.toString +// } +// +// override image(IEObjectDescription ele) { +// ele.EClass.name + '.gif' +// } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/labeling/VampireLanguageLabelProvider.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/labeling/VampireLanguageLabelProvider.xtend new file mode 100644 index 000000000..345e6bbd5 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/labeling/VampireLanguageLabelProvider.xtend @@ -0,0 +1,31 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.labeling + +import com.google.inject.Inject +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider +import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider + +/** + * Provides labels for EObjects. + * + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider + */ +class VampireLanguageLabelProvider extends DefaultEObjectLabelProvider { + + @Inject + new(AdapterFactoryLabelProvider delegate) { + super(delegate); + } + + // Labels and icons can be computed like this: + +// def text(Greeting ele) { +// 'A greeting to ' + ele.name +// } +// +// def image(Greeting ele) { +// 'Greeting.gif' +// } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/outline/VampireLanguageOutlineTreeProvider.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/outline/VampireLanguageOutlineTreeProvider.xtend new file mode 100644 index 000000000..fdcf1f938 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/outline/VampireLanguageOutlineTreeProvider.xtend @@ -0,0 +1,15 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.outline + +import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider + +/** + * Customization of the default outline structure. + * + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#outline + */ +class VampireLanguageOutlineTreeProvider extends DefaultOutlineTreeProvider { + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/quickfix/VampireLanguageQuickfixProvider.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/quickfix/VampireLanguageQuickfixProvider.xtend new file mode 100644 index 000000000..b657d9721 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language.ui/src/ca/mcgill/ecse/dslreasoner/ui/quickfix/VampireLanguageQuickfixProvider.xtend @@ -0,0 +1,24 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.ui.quickfix + +import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider + +/** + * Custom quickfixes. + * + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#quick-fixes + */ +class VampireLanguageQuickfixProvider extends DefaultQuickfixProvider { + +// @Fix(VampireLanguageValidator.INVALID_NAME) +// def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) { +// acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [ +// context | +// val xtextDocument = context.xtextDocument +// val firstLetter = xtextDocument.get(issue.offset, 1) +// xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase) +// ] +// } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.classpath new file mode 100644 index 000000000..1287f96c4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.gitignore new file mode 100644 index 000000000..9dd5f2f6e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/src-egn/ +/xtend-gen/ \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.launch/Generate VampireLanguage (tptp) Language Infrastructure.launch b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.launch/Generate VampireLanguage (tptp) Language Infrastructure.launch new file mode 100644 index 000000000..1e23f6945 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.launch/Generate VampireLanguage (tptp) Language Infrastructure.launch @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.launch/Launch Runtime Eclipse.launch b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.launch/Launch Runtime Eclipse.launch new file mode 100644 index 000000000..b17718992 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.launch/Launch Runtime Eclipse.launch @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.project new file mode 100644 index 000000000..447ae6e50 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.project @@ -0,0 +1,34 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.language + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.settings/org.eclipse.core.resources.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4824b8026 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/META-INF/MANIFEST.MF new file mode 100644 index 000000000..9e28a5514 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/META-INF/MANIFEST.MF @@ -0,0 +1,30 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ca.mcgill.ecse.dslreasoner.vampire.language +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.language; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.xtext, + org.eclipse.xtext.xbase, + org.eclipse.equinox.common;bundle-version="3.5.0", + org.eclipse.emf.ecore, + org.eclipse.xtext.xbase.lib;bundle-version="2.14.0", + org.antlr.runtime, + org.eclipse.xtext.util, + org.eclipse.xtend.lib;bundle-version="2.14.0", + org.eclipse.emf.common +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: ca.mcgill.ecse.dslreasoner.generator, + ca.mcgill.ecse.dslreasoner.parser.antlr, + ca.mcgill.ecse.dslreasoner.services, + ca.mcgill.ecse.dslreasoner.parser.antlr.internal, + ca.mcgill.ecse.dslreasoner, + ca.mcgill.ecse.dslreasoner.vampireLanguage, + ca.mcgill.ecse.dslreasoner.vampireLanguage.impl, + ca.mcgill.ecse.dslreasoner.serializer, + ca.mcgill.ecse.dslreasoner.validation, + ca.mcgill.ecse.dslreasoner.vampireLanguage.util, + ca.mcgill.ecse.dslreasoner.scoping, + ca.mcgill.ecse.dslreasoner.formatting2 +Import-Package: org.apache.log4j diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/build.properties new file mode 100644 index 000000000..aa338a94e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/build.properties @@ -0,0 +1,20 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = model/generated/,\ + .,\ + META-INF/,\ + plugin.xml +bin.excludes = **/*.mwe2,\ + **/*.xtend +additional.bundles = org.eclipse.xtext.xbase,\ + org.eclipse.xtext.common.types,\ + org.eclipse.xtext.xtext.generator,\ + org.eclipse.emf.codegen.ecore,\ + org.eclipse.emf.mwe.utils,\ + org.eclipse.emf.mwe2.launch,\ + org.eclipse.emf.mwe2.lib,\ + org.objectweb.asm,\ + org.apache.commons.logging,\ + org.apache.log4j,\ + com.ibm.icu diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/model/generated/VampireLanguage.ecore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/model/generated/VampireLanguage.ecore new file mode 100644 index 000000000..49f8b3a96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/model/generated/VampireLanguage.ecore @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/model/generated/VampireLanguage.genmodel b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/model/generated/VampireLanguage.genmodel new file mode 100644 index 000000000..cb3c1036d --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/model/generated/VampireLanguage.genmodel @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/plugin.xml b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/plugin.xml new file mode 100644 index 000000000..52f3c0a5e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/plugin.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/AbstractVampireLanguageRuntimeModule.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/AbstractVampireLanguageRuntimeModule.java new file mode 100644 index 000000000..b5884df4c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/AbstractVampireLanguageRuntimeModule.java @@ -0,0 +1,216 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner; + +import ca.mcgill.ecse.dslreasoner.formatting2.VampireLanguageFormatter; +import ca.mcgill.ecse.dslreasoner.generator.VampireLanguageGenerator; +import ca.mcgill.ecse.dslreasoner.parser.antlr.VampireLanguageAntlrTokenFileProvider; +import ca.mcgill.ecse.dslreasoner.parser.antlr.VampireLanguageParser; +import ca.mcgill.ecse.dslreasoner.parser.antlr.internal.InternalVampireLanguageLexer; +import ca.mcgill.ecse.dslreasoner.scoping.VampireLanguageScopeProvider; +import ca.mcgill.ecse.dslreasoner.serializer.VampireLanguageSemanticSequencer; +import ca.mcgill.ecse.dslreasoner.serializer.VampireLanguageSyntacticSequencer; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; +import ca.mcgill.ecse.dslreasoner.validation.VampireLanguageConfigurableIssueCodesProvider; +import ca.mcgill.ecse.dslreasoner.validation.VampireLanguageValidator; +import com.google.inject.Binder; +import com.google.inject.Provider; +import com.google.inject.name.Names; +import java.util.Properties; +import org.eclipse.xtext.Constants; +import org.eclipse.xtext.IGrammarAccess; +import org.eclipse.xtext.formatting2.FormatterPreferenceValuesProvider; +import org.eclipse.xtext.formatting2.FormatterPreferences; +import org.eclipse.xtext.formatting2.IFormatter2; +import org.eclipse.xtext.generator.IGenerator2; +import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; +import org.eclipse.xtext.naming.IQualifiedNameProvider; +import org.eclipse.xtext.parser.IParser; +import org.eclipse.xtext.parser.ITokenToStringConverter; +import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider; +import org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter; +import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider; +import org.eclipse.xtext.parser.antlr.ITokenDefProvider; +import org.eclipse.xtext.parser.antlr.Lexer; +import org.eclipse.xtext.parser.antlr.LexerBindings; +import org.eclipse.xtext.parser.antlr.LexerProvider; +import org.eclipse.xtext.preferences.IPreferenceValuesProvider; +import org.eclipse.xtext.resource.IContainer; +import org.eclipse.xtext.resource.IResourceDescriptions; +import org.eclipse.xtext.resource.containers.IAllContainersState; +import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider; +import org.eclipse.xtext.resource.containers.StateBasedContainerManager; +import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; +import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions; +import org.eclipse.xtext.scoping.IGlobalScopeProvider; +import org.eclipse.xtext.scoping.IScopeProvider; +import org.eclipse.xtext.scoping.IgnoreCaseLinking; +import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider; +import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider; +import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; +import org.eclipse.xtext.serializer.ISerializer; +import org.eclipse.xtext.serializer.impl.Serializer; +import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer; +import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer; +import org.eclipse.xtext.service.DefaultRuntimeModule; +import org.eclipse.xtext.service.SingletonBinding; +import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider; + +/** + * Manual modifications go to {@link VampireLanguageRuntimeModule}. + */ +@SuppressWarnings("all") +public abstract class AbstractVampireLanguageRuntimeModule extends DefaultRuntimeModule { + + protected Properties properties = null; + + @Override + public void configure(Binder binder) { + properties = tryBindProperties(binder, "ca/mcgill/ecse/dslreasoner/VampireLanguage.properties"); + super.configure(binder); + } + + public void configureLanguageName(Binder binder) { + binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("ca.mcgill.ecse.dslreasoner.VampireLanguage"); + } + + public void configureFileExtensions(Binder binder) { + if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null) + binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("tptp"); + } + + // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2 + public ClassLoader bindClassLoaderToInstance() { + return getClass().getClassLoader(); + } + + // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2 + public Class bindIGrammarAccess() { + return VampireLanguageGrammarAccess.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 + public Class bindISemanticSequencer() { + return VampireLanguageSemanticSequencer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 + public Class bindISyntacticSequencer() { + return VampireLanguageSyntacticSequencer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 + public Class bindISerializer() { + return Serializer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindIParser() { + return VampireLanguageParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindITokenToStringConverter() { + return AntlrTokenToStringConverter.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindIAntlrTokenFileProvider() { + return VampireLanguageAntlrTokenFileProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindLexer() { + return InternalVampireLanguageLexer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class bindITokenDefProvider() { + return AntlrTokenDefProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Provider provideInternalVampireLanguageLexer() { + return LexerProvider.create(InternalVampireLanguageLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureRuntimeLexer(Binder binder) { + binder.bind(Lexer.class) + .annotatedWith(Names.named(LexerBindings.RUNTIME)) + .to(InternalVampireLanguageLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 + @SingletonBinding(eager=true) + public Class bindVampireLanguageValidator() { + return VampireLanguageValidator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 + public Class bindConfigurableIssueCodesProvider() { + return VampireLanguageConfigurableIssueCodesProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public Class bindIScopeProvider() { + return VampireLanguageScopeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public void configureIScopeProviderDelegate(Binder binder) { + binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(ImportedNamespaceAwareLocalScopeProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public Class bindIGlobalScopeProvider() { + return DefaultGlobalScopeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public void configureIgnoreCaseLinking(Binder binder) { + binder.bindConstant().annotatedWith(IgnoreCaseLinking.class).to(false); + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class bindIQualifiedNameProvider() { + return DefaultDeclarativeQualifiedNameProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class bindIContainer$Manager() { + return StateBasedContainerManager.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class bindIAllContainersState$Provider() { + return ResourceSetBasedAllContainersStateProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptions(Binder binder) { + binder.bind(IResourceDescriptions.class).to(ResourceSetBasedResourceDescriptions.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptionsPersisted(Binder binder) { + binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(ResourceSetBasedResourceDescriptions.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public Class bindIGenerator2() { + return VampireLanguageGenerator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 + public Class bindIFormatter2() { + return VampireLanguageFormatter.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 + public void configureFormatterPreferences(Binder binder) { + binder.bind(IPreferenceValuesProvider.class).annotatedWith(FormatterPreferences.class).to(FormatterPreferenceValuesProvider.class); + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/VampireLanguage.xtextbin b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/VampireLanguage.xtextbin new file mode 100644 index 000000000..e5a377b60 Binary files /dev/null and b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/VampireLanguage.xtextbin differ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/VampireLanguageStandaloneSetupGenerated.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/VampireLanguageStandaloneSetupGenerated.java new file mode 100644 index 000000000..d2b4312bd --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/VampireLanguageStandaloneSetupGenerated.java @@ -0,0 +1,42 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; +import com.google.inject.Guice; +import com.google.inject.Injector; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.xtext.ISetup; +import org.eclipse.xtext.common.TerminalsStandaloneSetup; +import org.eclipse.xtext.resource.IResourceFactory; +import org.eclipse.xtext.resource.IResourceServiceProvider; + +@SuppressWarnings("all") +public class VampireLanguageStandaloneSetupGenerated implements ISetup { + + @Override + public Injector createInjectorAndDoEMFRegistration() { + TerminalsStandaloneSetup.doSetup(); + + Injector injector = createInjector(); + register(injector); + return injector; + } + + public Injector createInjector() { + return Guice.createInjector(new VampireLanguageRuntimeModule()); + } + + public void register(Injector injector) { + if (!EPackage.Registry.INSTANCE.containsKey("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage")) { + EPackage.Registry.INSTANCE.put("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", VampireLanguagePackage.eINSTANCE); + } + IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class); + IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class); + + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("tptp", resourceFactory); + IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("tptp", serviceProvider); + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/VampireLanguageAntlrTokenFileProvider.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/VampireLanguageAntlrTokenFileProvider.java new file mode 100644 index 000000000..43a00009a --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/VampireLanguageAntlrTokenFileProvider.java @@ -0,0 +1,16 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.parser.antlr; + +import java.io.InputStream; +import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider; + +public class VampireLanguageAntlrTokenFileProvider implements IAntlrTokenFileProvider { + + @Override + public InputStream getAntlrTokenFile() { + ClassLoader classLoader = getClass().getClassLoader(); + return classLoader.getResourceAsStream("ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.tokens"); + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/VampireLanguageParser.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/VampireLanguageParser.java new file mode 100644 index 000000000..11a9d1ed1 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/VampireLanguageParser.java @@ -0,0 +1,40 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.parser.antlr; + +import ca.mcgill.ecse.dslreasoner.parser.antlr.internal.InternalVampireLanguageParser; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; +import com.google.inject.Inject; +import org.eclipse.xtext.parser.antlr.AbstractAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; + +public class VampireLanguageParser extends AbstractAntlrParser { + + @Inject + private VampireLanguageGrammarAccess grammarAccess; + + @Override + protected void setInitialHiddenTokens(XtextTokenStream tokenStream) { + tokenStream.setInitialHiddenTokens("RULE_WS"); + } + + + @Override + protected InternalVampireLanguageParser createParser(XtextTokenStream stream) { + return new InternalVampireLanguageParser(stream, getGrammarAccess()); + } + + @Override + protected String getDefaultRuleName() { + return "VampireModel"; + } + + public VampireLanguageGrammarAccess getGrammarAccess() { + return this.grammarAccess; + } + + public void setGrammarAccess(VampireLanguageGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.g b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.g new file mode 100644 index 000000000..231a525be --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.g @@ -0,0 +1,2874 @@ +/* + * generated by Xtext 2.14.0 + */ +grammar InternalVampireLanguage; + +options { + superClass=AbstractInternalAntlrParser; +} + +@lexer::header { +package ca.mcgill.ecse.dslreasoner.parser.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.parser.antlr.Lexer; +} + +@parser::header { +package ca.mcgill.ecse.dslreasoner.parser.antlr.internal; + +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; + +} + +@parser::members { + + private VampireLanguageGrammarAccess grammarAccess; + + public InternalVampireLanguageParser(TokenStream input, VampireLanguageGrammarAccess grammarAccess) { + this(input); + this.grammarAccess = grammarAccess; + registerRules(grammarAccess.getGrammar()); + } + + @Override + protected String getFirstRuleName() { + return "VampireModel"; + } + + @Override + protected VampireLanguageGrammarAccess getGrammarAccess() { + return grammarAccess; + } + +} + +@rulecatch { + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } +} + +// Entry rule entryRuleVampireModel +entryRuleVampireModel returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVampireModelRule()); } + iv_ruleVampireModel=ruleVampireModel + { $current=$iv_ruleVampireModel.current; } + EOF; + +// Rule VampireModel +ruleVampireModel returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + newCompositeNode(grammarAccess.getVampireModelAccess().getCommentsVLSCommentParserRuleCall_0_0()); + } + lv_comments_0_0=ruleVLSComment + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + $current, + "comments", + lv_comments_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSComment"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getVampireModelAccess().getConfirmationsVLSConfirmationsParserRuleCall_1_0()); + } + lv_confirmations_1_0=ruleVLSConfirmations + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + $current, + "confirmations", + lv_confirmations_1_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSConfirmations"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getVampireModelAccess().getFormulasVLSFofFormulaParserRuleCall_2_0()); + } + lv_formulas_2_0=ruleVLSFofFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + $current, + "formulas", + lv_formulas_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getVampireModelAccess().getTfformulasVLSTffFormulaParserRuleCall_3_0()); + } + lv_tfformulas_3_0=ruleVLSTffFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + $current, + "tfformulas", + lv_tfformulas_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* +; + +// Entry rule entryRuleVLSComment +entryRuleVLSComment returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSCommentRule()); } + iv_ruleVLSComment=ruleVLSComment + { $current=$iv_ruleVLSComment.current; } + EOF; + +// Rule VLSComment +ruleVLSComment returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + lv_comment_0_0=RULE_SINGLE_COMMENT + { + newLeafNode(lv_comment_0_0, grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSCommentRule()); + } + setWithLastConsumed( + $current, + "comment", + lv_comment_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_COMMENT"); + } + ) + ) +; + +// Entry rule entryRuleVLSConfirmations +entryRuleVLSConfirmations returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSConfirmationsRule()); } + iv_ruleVLSConfirmations=ruleVLSConfirmations + { $current=$iv_ruleVLSConfirmations.current; } + EOF; + +// Rule VLSConfirmations +ruleVLSConfirmations returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSSatisfiableAction_0_0(), + $current); + } + ) + otherlv_1='Satisfiable!' + { + newLeafNode(otherlv_1, grammarAccess.getVLSConfirmationsAccess().getSatisfiableKeyword_0_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSWarningAction_1_0(), + $current); + } + ) + otherlv_3='WARNING!' + { + newLeafNode(otherlv_3, grammarAccess.getVLSConfirmationsAccess().getWARNINGKeyword_1_1()); + } + otherlv_4='Could' + { + newLeafNode(otherlv_4, grammarAccess.getVLSConfirmationsAccess().getCouldKeyword_1_2()); + } + otherlv_5='not' + { + newLeafNode(otherlv_5, grammarAccess.getVLSConfirmationsAccess().getNotKeyword_1_3()); + } + otherlv_6='set' + { + newLeafNode(otherlv_6, grammarAccess.getVLSConfirmationsAccess().getSetKeyword_1_4()); + } + otherlv_7='resource' + { + newLeafNode(otherlv_7, grammarAccess.getVLSConfirmationsAccess().getResourceKeyword_1_5()); + } + otherlv_8='limit:' + { + newLeafNode(otherlv_8, grammarAccess.getVLSConfirmationsAccess().getLimitKeyword_1_6()); + } + otherlv_9='Virtual' + { + newLeafNode(otherlv_9, grammarAccess.getVLSConfirmationsAccess().getVirtualKeyword_1_7()); + } + otherlv_10='memory.' + { + newLeafNode(otherlv_10, grammarAccess.getVLSConfirmationsAccess().getMemoryKeyword_1_8()); + } + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSTryingAction_2_0(), + $current); + } + ) + otherlv_12='TRYING' + { + newLeafNode(otherlv_12, grammarAccess.getVLSConfirmationsAccess().getTRYINGKeyword_2_1()); + } + otherlv_13='[' + { + newLeafNode(otherlv_13, grammarAccess.getVLSConfirmationsAccess().getLeftSquareBracketKeyword_2_2()); + } + ( + ( + lv_name_14_0=RULE_LITERAL + { + newLeafNode(lv_name_14_0, grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSConfirmationsRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_14_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LITERAL"); + } + ) + ) + otherlv_15=']' + { + newLeafNode(otherlv_15, grammarAccess.getVLSConfirmationsAccess().getRightSquareBracketKeyword_2_4()); + } + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSFiniteModelAction_3_0(), + $current); + } + ) + otherlv_17='Finite' + { + newLeafNode(otherlv_17, grammarAccess.getVLSConfirmationsAccess().getFiniteKeyword_3_1()); + } + otherlv_18='Model' + { + newLeafNode(otherlv_18, grammarAccess.getVLSConfirmationsAccess().getModelKeyword_3_2()); + } + otherlv_19='Found!' + { + newLeafNode(otherlv_19, grammarAccess.getVLSConfirmationsAccess().getFoundKeyword_3_3()); + } + ) + ) +; + +// Entry rule entryRuleVLSFofFormula +entryRuleVLSFofFormula returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSFofFormulaRule()); } + iv_ruleVLSFofFormula=ruleVLSFofFormula + { $current=$iv_ruleVLSFofFormula.current; } + EOF; + +// Rule VLSFofFormula +ruleVLSFofFormula returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + otherlv_0='fof' + { + newLeafNode(otherlv_0, grammarAccess.getVLSFofFormulaAccess().getFofKeyword_0()); + } + otherlv_1='(' + { + newLeafNode(otherlv_1, grammarAccess.getVLSFofFormulaAccess().getLeftParenthesisKeyword_1()); + } + ( + ( + ( + lv_name_2_1=RULE_LOWER_WORD_ID + { + newLeafNode(lv_name_2_1, grammarAccess.getVLSFofFormulaAccess().getNameLOWER_WORD_IDTerminalRuleCall_2_0_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFofFormulaRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + } + | + lv_name_2_2=RULE_SIGNED_LITERAL + { + newLeafNode(lv_name_2_2, grammarAccess.getVLSFofFormulaAccess().getNameSIGNED_LITERALTerminalRuleCall_2_0_1()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFofFormulaRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SIGNED_LITERAL"); + } + | + lv_name_2_3=RULE_SINGLE_QUOTE + { + newLeafNode(lv_name_2_3, grammarAccess.getVLSFofFormulaAccess().getNameSINGLE_QUOTETerminalRuleCall_2_0_2()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFofFormulaRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + } + ) + ) + ) + otherlv_3=',' + { + newLeafNode(otherlv_3, grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_3()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSFofFormulaAccess().getFofRoleVLSRoleParserRuleCall_4_0()); + } + lv_fofRole_4_0=ruleVLSRole + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSFofFormulaRule()); + } + set( + $current, + "fofRole", + lv_fofRole_4_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_5=',' + { + newLeafNode(otherlv_5, grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_5()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSFofFormulaAccess().getFofFormulaVLSTermParserRuleCall_6_0()); + } + lv_fofFormula_6_0=ruleVLSTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSFofFormulaRule()); + } + set( + $current, + "fofFormula", + lv_fofFormula_6_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_7=',' + { + newLeafNode(otherlv_7, grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_7_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSFofFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + } + lv_annotations_8_0=ruleVLSAnnotation + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSFofFormulaRule()); + } + set( + $current, + "annotations", + lv_annotations_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + otherlv_9=')' + { + newLeafNode(otherlv_9, grammarAccess.getVLSFofFormulaAccess().getRightParenthesisKeyword_8()); + } + otherlv_10='.' + { + newLeafNode(otherlv_10, grammarAccess.getVLSFofFormulaAccess().getFullStopKeyword_9()); + } + ) +; + +// Entry rule entryRuleVLSTffFormula +entryRuleVLSTffFormula returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSTffFormulaRule()); } + iv_ruleVLSTffFormula=ruleVLSTffFormula + { $current=$iv_ruleVLSTffFormula.current; } + EOF; + +// Rule VLSTffFormula +ruleVLSTffFormula returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + otherlv_0='tff' + { + newLeafNode(otherlv_0, grammarAccess.getVLSTffFormulaAccess().getTffKeyword_0()); + } + otherlv_1='(' + { + newLeafNode(otherlv_1, grammarAccess.getVLSTffFormulaAccess().getLeftParenthesisKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getNameVLSTffNameParserRuleCall_2_0()); + } + lv_name_2_0=ruleVLSTffName + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + $current, + "name", + lv_name_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffName"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_3=',' + { + newLeafNode(otherlv_3, grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_3()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getTffRoleVLSRoleParserRuleCall_4_0()); + } + lv_tffRole_4_0=ruleVLSRole + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + $current, + "tffRole", + lv_tffRole_4_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_5=',' + { + newLeafNode(otherlv_5, grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_5()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getFofFormulaVLSTffTermParserRuleCall_6_0()); + } + lv_fofFormula_6_0=ruleVLSTffTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + $current, + "fofFormula", + lv_fofFormula_6_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_7=',' + { + newLeafNode(otherlv_7, grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_7_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + } + lv_annotations_8_0=ruleVLSAnnotation + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + $current, + "annotations", + lv_annotations_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + otherlv_9=')' + { + newLeafNode(otherlv_9, grammarAccess.getVLSTffFormulaAccess().getRightParenthesisKeyword_8()); + } + otherlv_10='.' + { + newLeafNode(otherlv_10, grammarAccess.getVLSTffFormulaAccess().getFullStopKeyword_9()); + } + ) +; + +// Entry rule entryRuleVLSTffName +entryRuleVLSTffName returns [String current=null]: + { newCompositeNode(grammarAccess.getVLSTffNameRule()); } + iv_ruleVLSTffName=ruleVLSTffName + { $current=$iv_ruleVLSTffName.current.getText(); } + EOF; + +// Rule VLSTffName +ruleVLSTffName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSTffNameAccess().getVLSTffDeclPredParserRuleCall_0()); + } + this_VLSTffDeclPred_0=ruleVLSTffDeclPred + { + $current.merge(this_VLSTffDeclPred_0); + } + { + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSTffNameAccess().getVLSTffFiniteParserRuleCall_1()); + } + this_VLSTffFinite_1=ruleVLSTffFinite + { + $current.merge(this_VLSTffFinite_1); + } + { + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSTffNameAccess().getVLSTffDistinctParserRuleCall_2()); + } + this_VLSTffDistinct_2=ruleVLSTffDistinct + { + $current.merge(this_VLSTffDistinct_2); + } + { + afterParserOrEnumRuleCall(); + } + ) +; + +// Entry rule entryRuleVLSTffDistinct +entryRuleVLSTffDistinct returns [String current=null]: + { newCompositeNode(grammarAccess.getVLSTffDistinctRule()); } + iv_ruleVLSTffDistinct=ruleVLSTffDistinct + { $current=$iv_ruleVLSTffDistinct.current.getText(); } + EOF; + +// Rule VLSTffDistinct +ruleVLSTffDistinct returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + kw='distinct_domain' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSTffDistinctAccess().getDistinct_domainKeyword()); + } +; + +// Entry rule entryRuleVLSTffFinite +entryRuleVLSTffFinite returns [String current=null]: + { newCompositeNode(grammarAccess.getVLSTffFiniteRule()); } + iv_ruleVLSTffFinite=ruleVLSTffFinite + { $current=$iv_ruleVLSTffFinite.current.getText(); } + EOF; + +// Rule VLSTffFinite +ruleVLSTffFinite returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + kw='finite_domain' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSTffFiniteAccess().getFinite_domainKeyword()); + } +; + +// Entry rule entryRuleVLSTffDeclPred +entryRuleVLSTffDeclPred returns [String current=null]: + { newCompositeNode(grammarAccess.getVLSTffDeclPredRule()); } + iv_ruleVLSTffDeclPred=ruleVLSTffDeclPred + { $current=$iv_ruleVLSTffDeclPred.current.getText(); } + EOF; + +// Rule VLSTffDeclPred +ruleVLSTffDeclPred returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + kw='declare_' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSTffDeclPredAccess().getDeclare_Keyword_0_0()); + } + this_DOLLAR_ID_1=RULE_DOLLAR_ID + { + $current.merge(this_DOLLAR_ID_1); + } + { + newLeafNode(this_DOLLAR_ID_1, grammarAccess.getVLSTffDeclPredAccess().getDOLLAR_IDTerminalRuleCall_0_1()); + } + ) + | + this_LOWER_WORD_ID_2=RULE_LOWER_WORD_ID + { + $current.merge(this_LOWER_WORD_ID_2); + } + { + newLeafNode(this_LOWER_WORD_ID_2, grammarAccess.getVLSTffDeclPredAccess().getLOWER_WORD_IDTerminalRuleCall_1()); + } + ) +; + +// Entry rule entryRuleVLSRole +entryRuleVLSRole returns [String current=null]: + { newCompositeNode(grammarAccess.getVLSRoleRule()); } + iv_ruleVLSRole=ruleVLSRole + { $current=$iv_ruleVLSRole.current.getText(); } + EOF; + +// Rule VLSRole +ruleVLSRole returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + kw='axiom' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getAxiomKeyword_0()); + } + | + kw='conjecture' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getConjectureKeyword_1()); + } + | + kw='hypothesis' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getHypothesisKeyword_2()); + } + | + kw='definition' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getDefinitionKeyword_3()); + } + | + kw='assumption' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getAssumptionKeyword_4()); + } + | + kw='lemma' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getLemmaKeyword_5()); + } + | + kw='theorem' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getTheoremKeyword_6()); + } + | + kw='corollary' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getCorollaryKeyword_7()); + } + | + kw='negated_conjecture' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getNegated_conjectureKeyword_8()); + } + | + kw='plain' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getPlainKeyword_9()); + } + | + kw='type' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getTypeKeyword_10()); + } + | + kw='fi_domain' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getFi_domainKeyword_11()); + } + | + kw='fi_functors' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getFi_functorsKeyword_12()); + } + | + kw='fi_predicates' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getFi_predicatesKeyword_13()); + } + | + kw='unknown' + { + $current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getUnknownKeyword_14()); + } + ) +; + +// Entry rule entryRuleVLSAnnotation +entryRuleVLSAnnotation returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSAnnotationRule()); } + iv_ruleVLSAnnotation=ruleVLSAnnotation + { $current=$iv_ruleVLSAnnotation.current; } + EOF; + +// Rule VLSAnnotation +ruleVLSAnnotation returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + otherlv_0='[' + { + newLeafNode(otherlv_0, grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); + } + )? + ( + ( + ( + lv_name_1_1=RULE_LOWER_WORD_ID + { + newLeafNode(lv_name_1_1, grammarAccess.getVLSAnnotationAccess().getNameLOWER_WORD_IDTerminalRuleCall_1_0_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAnnotationRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_1_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + } + | + lv_name_1_2=RULE_SINGLE_QUOTE + { + newLeafNode(lv_name_1_2, grammarAccess.getVLSAnnotationAccess().getNameSINGLE_QUOTETerminalRuleCall_1_0_1()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAnnotationRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_1_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + } + | + { + newCompositeNode(grammarAccess.getVLSAnnotationAccess().getNameVLSRoleParserRuleCall_1_0_2()); + } + lv_name_1_3=ruleVLSRole + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAnnotationRule()); + } + set( + $current, + "name", + lv_name_1_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ( + otherlv_2='(' + { + newLeafNode(otherlv_2, grammarAccess.getVLSAnnotationAccess().getLeftParenthesisKeyword_2_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSAnnotationAccess().getFollowupVLSAnnotationTermsParserRuleCall_2_1_0()); + } + lv_followup_3_0=ruleVLSAnnotationTerms + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAnnotationRule()); + } + set( + $current, + "followup", + lv_followup_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotationTerms"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_4=')' + { + newLeafNode(otherlv_4, grammarAccess.getVLSAnnotationAccess().getRightParenthesisKeyword_2_2()); + } + )? + ( + otherlv_5=']' + { + newLeafNode(otherlv_5, grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); + } + )? + ) +; + +// Entry rule entryRuleVLSAnnotationTerms +entryRuleVLSAnnotationTerms returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSAnnotationTermsRule()); } + iv_ruleVLSAnnotationTerms=ruleVLSAnnotationTerms + { $current=$iv_ruleVLSAnnotationTerms.current; } + EOF; + +// Rule VLSAnnotationTerms +ruleVLSAnnotationTerms returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_0_0()); + } + lv_terms_0_0=ruleVLSAnnotation + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAnnotationTermsRule()); + } + add( + $current, + "terms", + lv_terms_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_1=',' + { + newLeafNode(otherlv_1, grammarAccess.getVLSAnnotationTermsAccess().getCommaKeyword_1_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_1_1_0()); + } + lv_terms_2_0=ruleVLSAnnotation + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAnnotationTermsRule()); + } + add( + $current, + "terms", + lv_terms_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* + ) +; + +// Entry rule entryRuleVLSTffTerm +entryRuleVLSTffTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSTffTermRule()); } + iv_ruleVLSTffTerm=ruleVLSTffTerm + { $current=$iv_ruleVLSTffTerm.current; } + EOF; + +// Rule VLSTffTerm +ruleVLSTffTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSTffTermAccess().getVLSTermParserRuleCall_0()); + } + this_VLSTerm_0=ruleVLSTerm + { + $current = $this_VLSTerm_0.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSTffTermAccess().getVLSDeclarationParserRuleCall_1()); + } + this_VLSDeclaration_1=ruleVLSDeclaration + { + $current = $this_VLSDeclaration_1.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSTffTermAccess().getVLSCommentTermParserRuleCall_2()); + } + this_VLSCommentTerm_2=ruleVLSCommentTerm + { + $current = $this_VLSCommentTerm_2.current; + afterParserOrEnumRuleCall(); + } + ) +; + +// Entry rule entryRuleVLSCommentTerm +entryRuleVLSCommentTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSCommentTermRule()); } + iv_ruleVLSCommentTerm=ruleVLSCommentTerm + { $current=$iv_ruleVLSCommentTerm.current; } + EOF; + +// Rule VLSCommentTerm +ruleVLSCommentTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + lv_comment_0_0=RULE_SINGLE_COMMENT + { + newLeafNode(lv_comment_0_0, grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSCommentTermRule()); + } + setWithLastConsumed( + $current, + "comment", + lv_comment_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_COMMENT"); + } + ) + ) +; + +// Entry rule entryRuleVLSDeclaration +entryRuleVLSDeclaration returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSDeclarationRule()); } + iv_ruleVLSDeclaration=ruleVLSDeclaration + { $current=$iv_ruleVLSDeclaration.current; } + EOF; + +// Rule VLSDeclaration +ruleVLSDeclaration returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSDeclarationAccess().getVLSVariableDeclarationParserRuleCall_0()); + } + this_VLSVariableDeclaration_0=ruleVLSVariableDeclaration + { + $current = $this_VLSVariableDeclaration_0.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSDeclarationAccess().getVLSOtherDeclarationParserRuleCall_1()); + } + this_VLSOtherDeclaration_1=ruleVLSOtherDeclaration + { + $current = $this_VLSOtherDeclaration_1.current; + afterParserOrEnumRuleCall(); + } + ) +; + +// Entry rule entryRuleVLSOtherDeclaration +entryRuleVLSOtherDeclaration returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSOtherDeclarationRule()); } + iv_ruleVLSOtherDeclaration=ruleVLSOtherDeclaration + { $current=$iv_ruleVLSOtherDeclaration.current; } + EOF; + +// Rule VLSOtherDeclaration +ruleVLSOtherDeclaration returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0()); + } + lv_name_0_0=ruleVLSAtomicConstant + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSOtherDeclarationRule()); + } + set( + $current, + "name", + lv_name_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_1=':' + { + newLeafNode(otherlv_1, grammarAccess.getVLSOtherDeclarationAccess().getColonKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + } + lv_type_2_0=ruleVLSTypeDef + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSOtherDeclarationRule()); + } + set( + $current, + "type", + lv_type_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTypeDef"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleVLSVariableDeclaration +entryRuleVLSVariableDeclaration returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSVariableDeclarationRule()); } + iv_ruleVLSVariableDeclaration=ruleVLSVariableDeclaration + { $current=$iv_ruleVLSVariableDeclaration.current; } + EOF; + +// Rule VLSVariableDeclaration +ruleVLSVariableDeclaration returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0()); + } + lv_name_0_0=ruleVLSVariable + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSVariableDeclarationRule()); + } + set( + $current, + "name", + lv_name_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_1=':' + { + newLeafNode(otherlv_1, grammarAccess.getVLSVariableDeclarationAccess().getColonKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + } + lv_type_2_0=ruleVLSTypeDef + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSVariableDeclarationRule()); + } + set( + $current, + "type", + lv_type_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTypeDef"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleVLSTypeDef +entryRuleVLSTypeDef returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSTypeDefRule()); } + iv_ruleVLSTypeDef=ruleVLSTypeDef + { $current=$iv_ruleVLSTypeDef.current; } + EOF; + +// Rule VLSTypeDef +ruleVLSTypeDef returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSTypeDefAccess().getTypeSigVLSUnitaryTermParserRuleCall_0_0()); + } + lv_typeSig_0_0=ruleVLSUnitaryTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSTypeDefRule()); + } + set( + $current, + "typeSig", + lv_typeSig_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_1='>' + { + newLeafNode(otherlv_1, grammarAccess.getVLSTypeDefAccess().getGreaterThanSignKeyword_1_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSTypeDefAccess().getMapsToVLSAtomicConstantParserRuleCall_1_1_0()); + } + lv_mapsTo_2_0=ruleVLSAtomicConstant + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSTypeDefRule()); + } + set( + $current, + "mapsTo", + lv_mapsTo_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ) +; + +// Entry rule entryRuleVLSUnitaryTerm +entryRuleVLSUnitaryTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSUnitaryTermRule()); } + iv_ruleVLSUnitaryTerm=ruleVLSUnitaryTerm + { $current=$iv_ruleVLSUnitaryTerm.current; } + EOF; + +// Rule VLSUnitaryTerm +ruleVLSUnitaryTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSUnitaryTermAccess().getInitTypeVLSAtomicParserRuleCall_0_0()); + } + lv_initType_0_0=ruleVLSAtomic + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUnitaryTermRule()); + } + set( + $current, + "initType", + lv_initType_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomic"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_1='*' + { + newLeafNode(otherlv_1, grammarAccess.getVLSUnitaryTermAccess().getAsteriskKeyword_1_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSUnitaryTermAccess().getNextTypeVLSAtomicConstantParserRuleCall_1_1_0()); + } + lv_nextType_2_0=ruleVLSAtomicConstant + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUnitaryTermRule()); + } + set( + $current, + "nextType", + lv_nextType_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* + ) +; + +// Entry rule entryRuleVLSTerm +entryRuleVLSTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSTermRule()); } + iv_ruleVLSTerm=ruleVLSTerm + { $current=$iv_ruleVLSTerm.current; } + EOF; + +// Rule VLSTerm +ruleVLSTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + { + newCompositeNode(grammarAccess.getVLSTermAccess().getVLSBinaryParserRuleCall()); + } + this_VLSBinary_0=ruleVLSBinary + { + $current = $this_VLSBinary_0.current; + afterParserOrEnumRuleCall(); + } +; + +// Entry rule entryRuleVLSBinary +entryRuleVLSBinary returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSBinaryRule()); } + iv_ruleVLSBinary=ruleVLSBinary + { $current=$iv_ruleVLSBinary.current; } + EOF; + +// Rule VLSBinary +ruleVLSBinary returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSBinaryAccess().getVLSUnitaryFormulaParserRuleCall_0()); + } + this_VLSUnitaryFormula_0=ruleVLSUnitaryFormula + { + $current = $this_VLSUnitaryFormula_0.current; + afterParserOrEnumRuleCall(); + } + ( + ( + ( + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0(), + $current); + } + ) + otherlv_2='<=>' + { + newLeafNode(otherlv_2, grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0(), + $current); + } + ) + otherlv_4='=>' + { + newLeafNode(otherlv_4, grammarAccess.getVLSBinaryAccess().getEqualsSignGreaterThanSignKeyword_1_0_0_1_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0(), + $current); + } + ) + otherlv_6='<=' + { + newLeafNode(otherlv_6, grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignKeyword_1_0_0_2_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0(), + $current); + } + ) + otherlv_8='<~>' + { + newLeafNode(otherlv_8, grammarAccess.getVLSBinaryAccess().getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0(), + $current); + } + ) + otherlv_10='~|' + { + newLeafNode(otherlv_10, grammarAccess.getVLSBinaryAccess().getTildeVerticalLineKeyword_1_0_0_4_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0(), + $current); + } + ) + otherlv_12='~&' + { + newLeafNode(otherlv_12, grammarAccess.getVLSBinaryAccess().getTildeAmpersandKeyword_1_0_0_5_1()); + } + ) + ) + ( + ( + { + newCompositeNode(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0()); + } + lv_right_13_0=ruleVLSUnitaryFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSBinaryRule()); + } + set( + $current, + "right", + lv_right_13_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0(), + $current); + } + ) + otherlv_15='&' + { + newLeafNode(otherlv_15, grammarAccess.getVLSBinaryAccess().getAmpersandKeyword_1_1_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0()); + } + lv_right_16_0=ruleVLSUnitaryFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSBinaryRule()); + } + set( + $current, + "right", + lv_right_16_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + )+ + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0(), + $current); + } + ) + otherlv_18='|' + { + newLeafNode(otherlv_18, grammarAccess.getVLSBinaryAccess().getVerticalLineKeyword_1_2_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0()); + } + lv_right_19_0=ruleVLSUnitaryFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSBinaryRule()); + } + set( + $current, + "right", + lv_right_19_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + )+ + )? + ) +; + +// Entry rule entryRuleVLSUnitaryFormula +entryRuleVLSUnitaryFormula returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSUnitaryFormulaRule()); } + iv_ruleVLSUnitaryFormula=ruleVLSUnitaryFormula + { $current=$iv_ruleVLSUnitaryFormula.current; } + EOF; + +// Rule VLSUnitaryFormula +ruleVLSUnitaryFormula returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUniversalQuantifierParserRuleCall_0()); + } + this_VLSUniversalQuantifier_0=ruleVLSUniversalQuantifier + { + $current = $this_VLSUniversalQuantifier_0.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSExistentialQuantifierParserRuleCall_1()); + } + this_VLSExistentialQuantifier_1=ruleVLSExistentialQuantifier + { + $current = $this_VLSExistentialQuantifier_1.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryNegationParserRuleCall_2()); + } + this_VLSUnaryNegation_2=ruleVLSUnaryNegation + { + $current = $this_VLSUnaryNegation_2.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryInfixParserRuleCall_3()); + } + this_VLSUnaryInfix_3=ruleVLSUnaryInfix + { + $current = $this_VLSUnaryInfix_3.current; + afterParserOrEnumRuleCall(); + } + | + ( + otherlv_4='(' + { + newLeafNode(otherlv_4, grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); + } + { + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSTermParserRuleCall_4_1()); + } + this_VLSTerm_5=ruleVLSTerm + { + $current = $this_VLSTerm_5.current; + afterParserOrEnumRuleCall(); + } + otherlv_6=')' + { + newLeafNode(otherlv_6, grammarAccess.getVLSUnitaryFormulaAccess().getRightParenthesisKeyword_4_2()); + } + ) + ) +; + +// Entry rule entryRuleVLSUniversalQuantifier +entryRuleVLSUniversalQuantifier returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSUniversalQuantifierRule()); } + iv_ruleVLSUniversalQuantifier=ruleVLSUniversalQuantifier + { $current=$iv_ruleVLSUniversalQuantifier.current; } + EOF; + +// Rule VLSUniversalQuantifier +ruleVLSUniversalQuantifier returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSUniversalQuantifierAccess().getVLSUniversalQuantifierAction_0(), + $current); + } + ) + ( + otherlv_1='!' + { + newLeafNode(otherlv_1, grammarAccess.getVLSUniversalQuantifierAccess().getExclamationMarkKeyword_1_0()); + } + otherlv_2='[' + { + newLeafNode(otherlv_2, grammarAccess.getVLSUniversalQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + } + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + } + lv_variables_3_1=ruleVLSVariable + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_3_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + } + lv_variables_3_2=ruleVLSVariableDeclaration + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_3_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + ( + otherlv_4=',' + { + newLeafNode(otherlv_4, grammarAccess.getVLSUniversalQuantifierAccess().getCommaKeyword_1_3_0()); + } + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + } + lv_variables_5_1=ruleVLSVariable + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_5_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + } + lv_variables_5_2=ruleVLSVariableDeclaration + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_5_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + )* + otherlv_6=']' + { + newLeafNode(otherlv_6, grammarAccess.getVLSUniversalQuantifierAccess().getRightSquareBracketKeyword_1_4()); + } + otherlv_7=':' + { + newLeafNode(otherlv_7, grammarAccess.getVLSUniversalQuantifierAccess().getColonKeyword_1_5()); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + } + lv_operand_8_0=ruleVLSUnitaryFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + set( + $current, + "operand", + lv_operand_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleVLSExistentialQuantifier +entryRuleVLSExistentialQuantifier returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSExistentialQuantifierRule()); } + iv_ruleVLSExistentialQuantifier=ruleVLSExistentialQuantifier + { $current=$iv_ruleVLSExistentialQuantifier.current; } + EOF; + +// Rule VLSExistentialQuantifier +ruleVLSExistentialQuantifier returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSExistentialQuantifierAccess().getVLSExistentialQuantifierAction_0(), + $current); + } + ) + ( + otherlv_1='?' + { + newLeafNode(otherlv_1, grammarAccess.getVLSExistentialQuantifierAccess().getQuestionMarkKeyword_1_0()); + } + otherlv_2='[' + { + newLeafNode(otherlv_2, grammarAccess.getVLSExistentialQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + } + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + } + lv_variables_3_1=ruleVLSVariable + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_3_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + } + lv_variables_3_2=ruleVLSVariableDeclaration + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_3_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + ( + otherlv_4=',' + { + newLeafNode(otherlv_4, grammarAccess.getVLSExistentialQuantifierAccess().getCommaKeyword_1_3_0()); + } + ( + ( + ( + { + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + } + lv_variables_5_1=ruleVLSVariable + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_5_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + } + lv_variables_5_2=ruleVLSVariableDeclaration + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + $current, + "variables", + lv_variables_5_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + )* + otherlv_6=']' + { + newLeafNode(otherlv_6, grammarAccess.getVLSExistentialQuantifierAccess().getRightSquareBracketKeyword_1_4()); + } + otherlv_7=':' + { + newLeafNode(otherlv_7, grammarAccess.getVLSExistentialQuantifierAccess().getColonKeyword_1_5()); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + } + lv_operand_8_0=ruleVLSUnitaryFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + set( + $current, + "operand", + lv_operand_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleVLSUnaryNegation +entryRuleVLSUnaryNegation returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSUnaryNegationRule()); } + iv_ruleVLSUnaryNegation=ruleVLSUnaryNegation + { $current=$iv_ruleVLSUnaryNegation.current; } + EOF; + +// Rule VLSUnaryNegation +ruleVLSUnaryNegation returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSUnaryNegationAccess().getVLSUnaryNegationAction_0(), + $current); + } + ) + otherlv_1='~' + { + newLeafNode(otherlv_1, grammarAccess.getVLSUnaryNegationAccess().getTildeKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + } + lv_operand_2_0=ruleVLSUnitaryFormula + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUnaryNegationRule()); + } + set( + $current, + "operand", + lv_operand_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleVLSUnaryInfix +entryRuleVLSUnaryInfix returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSUnaryInfixRule()); } + iv_ruleVLSUnaryInfix=ruleVLSUnaryInfix + { $current=$iv_ruleVLSUnaryInfix.current; } + EOF; + +// Rule VLSUnaryInfix +ruleVLSUnaryInfix returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSUnaryInfixAccess().getVLSAtomicParserRuleCall_0()); + } + this_VLSAtomic_0=ruleVLSAtomic + { + $current = $this_VLSAtomic_0.current; + afterParserOrEnumRuleCall(); + } + ( + ( + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0(), + $current); + } + ) + otherlv_2='!=' + { + newLeafNode(otherlv_2, grammarAccess.getVLSUnaryInfixAccess().getExclamationMarkEqualsSignKeyword_1_0_0_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0(), + $current); + } + ) + otherlv_4='=' + { + newLeafNode(otherlv_4, grammarAccess.getVLSUnaryInfixAccess().getEqualsSignKeyword_1_0_1_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElementAndSet( + grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0(), + $current); + } + ) + otherlv_6=':=' + { + newLeafNode(otherlv_6, grammarAccess.getVLSUnaryInfixAccess().getColonEqualsSignKeyword_1_0_2_1()); + } + ) + ) + ( + ( + { + newCompositeNode(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0()); + } + lv_right_7_0=ruleVLSAtomic + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSUnaryInfixRule()); + } + set( + $current, + "right", + lv_right_7_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomic"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ) +; + +// Entry rule entryRuleVLSAtomic +entryRuleVLSAtomic returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSAtomicRule()); } + iv_ruleVLSAtomic=ruleVLSAtomic + { $current=$iv_ruleVLSAtomic.current; } + EOF; + +// Rule VLSAtomic +ruleVLSAtomic returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSAtomicConstantParserRuleCall_0()); + } + this_VLSAtomicConstant_0=ruleVLSAtomicConstant + { + $current = $this_VLSAtomicConstant_0.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSAtomicFunctionParserRuleCall_1()); + } + this_VLSAtomicFunction_1=ruleVLSAtomicFunction + { + $current = $this_VLSAtomicFunction_1.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSVariableParserRuleCall_2()); + } + this_VLSVariable_2=ruleVLSVariable + { + $current = $this_VLSVariable_2.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSDefinedTermParserRuleCall_3()); + } + this_VLSDefinedTerm_3=ruleVLSDefinedTerm + { + $current = $this_VLSDefinedTerm_3.current; + afterParserOrEnumRuleCall(); + } + ) +; + +// Entry rule entryRuleVLSAtomicConstant +entryRuleVLSAtomicConstant returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSAtomicConstantRule()); } + iv_ruleVLSAtomicConstant=ruleVLSAtomicConstant + { $current=$iv_ruleVLSAtomicConstant.current; } + EOF; + +// Rule VLSAtomicConstant +ruleVLSAtomicConstant returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSAtomicConstantAccess().getVLSConstantAction_0_0(), + $current); + } + ) + ( + ( + ( + lv_name_1_1=RULE_LOWER_WORD_ID + { + newLeafNode(lv_name_1_1, grammarAccess.getVLSAtomicConstantAccess().getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_1_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + } + | + lv_name_1_2=RULE_SINGLE_QUOTE + { + newLeafNode(lv_name_1_2, grammarAccess.getVLSAtomicConstantAccess().getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_1_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + } + | + lv_name_1_3=RULE_DOLLAR_ID + { + newLeafNode(lv_name_1_3, grammarAccess.getVLSAtomicConstantAccess().getNameDOLLAR_IDTerminalRuleCall_0_1_0_2()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_1_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + } + | + lv_name_1_4=RULE_DOUBLE_DOLLAR_ID + { + newLeafNode(lv_name_1_4, grammarAccess.getVLSAtomicConstantAccess().getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_1_4, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + } + | + { + newCompositeNode(grammarAccess.getVLSAtomicConstantAccess().getNameVLSRoleParserRuleCall_0_1_0_4()); + } + lv_name_1_5=ruleVLSRole + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAtomicConstantRule()); + } + set( + $current, + "name", + lv_name_1_5, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSAtomicConstantAccess().getVLSTrueAction_1_0(), + $current); + } + ) + otherlv_3='$true' + { + newLeafNode(otherlv_3, grammarAccess.getVLSAtomicConstantAccess().getTrueKeyword_1_1()); + } + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSAtomicConstantAccess().getVLSFalseAction_2_0(), + $current); + } + ) + otherlv_5='$false' + { + newLeafNode(otherlv_5, grammarAccess.getVLSAtomicConstantAccess().getFalseKeyword_2_1()); + } + ) + ) +; + +// Entry rule entryRuleVLSAtomicFunction +entryRuleVLSAtomicFunction returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSAtomicFunctionRule()); } + iv_ruleVLSAtomicFunction=ruleVLSAtomicFunction + { $current=$iv_ruleVLSAtomicFunction.current; } + EOF; + +// Rule VLSAtomicFunction +ruleVLSAtomicFunction returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSAtomicFunctionAccess().getVLSFunctionAction_0_0(), + $current); + } + ) + ( + ( + ( + lv_constant_1_1=RULE_LOWER_WORD_ID + { + newLeafNode(lv_constant_1_1, grammarAccess.getVLSAtomicFunctionAccess().getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + $current, + "constant", + lv_constant_1_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + } + | + lv_constant_1_2=RULE_SINGLE_QUOTE + { + newLeafNode(lv_constant_1_2, grammarAccess.getVLSAtomicFunctionAccess().getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + $current, + "constant", + lv_constant_1_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + } + | + lv_constant_1_3=RULE_DOLLAR_ID + { + newLeafNode(lv_constant_1_3, grammarAccess.getVLSAtomicFunctionAccess().getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + $current, + "constant", + lv_constant_1_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + } + | + lv_constant_1_4=RULE_DOUBLE_DOLLAR_ID + { + newLeafNode(lv_constant_1_4, grammarAccess.getVLSAtomicFunctionAccess().getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + $current, + "constant", + lv_constant_1_4, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + } + | + { + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getConstantVLSRoleParserRuleCall_0_1_0_4()); + } + lv_constant_1_5=ruleVLSRole + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + set( + $current, + "constant", + lv_constant_1_5, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) + ( + otherlv_2='(' + { + newLeafNode(otherlv_2, grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_0_2_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_1_0()); + } + lv_terms_3_0=ruleVLSFofTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + $current, + "terms", + lv_terms_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_4=',' + { + newLeafNode(otherlv_4, grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_0_2_2_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_2_1_0()); + } + lv_terms_5_0=ruleVLSFofTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + $current, + "terms", + lv_terms_5_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* + otherlv_6=')' + { + newLeafNode(otherlv_6, grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_0_2_3()); + } + ) + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSAtomicFunctionAccess().getVLSLessAction_1_0(), + $current); + } + ) + ( + ( + lv_name_8_0='$less' + { + newLeafNode(lv_name_8_0, grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed($current, "name", lv_name_8_0, "\$less"); + } + ) + ) + otherlv_9='(' + { + newLeafNode(otherlv_9, grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_1_2()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_3_0()); + } + lv_terms_10_0=ruleVLSFofTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + $current, + "terms", + lv_terms_10_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_11=',' + { + newLeafNode(otherlv_11, grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_1_4()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_5_0()); + } + lv_terms_12_0=ruleVLSFofTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + $current, + "terms", + lv_terms_12_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_13=')' + { + newLeafNode(otherlv_13, grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_1_6()); + } + ) + ) +; + +// Entry rule entryRuleVLSVariable +entryRuleVLSVariable returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSVariableRule()); } + iv_ruleVLSVariable=ruleVLSVariable + { $current=$iv_ruleVLSVariable.current; } + EOF; + +// Rule VLSVariable +ruleVLSVariable returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + lv_name_0_0=RULE_UPPER_WORD_ID + { + newLeafNode(lv_name_0_0, grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSVariableRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.UPPER_WORD_ID"); + } + ) + ) +; + +// Entry rule entryRuleVLSFofTerm +entryRuleVLSFofTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSFofTermRule()); } + iv_ruleVLSFofTerm=ruleVLSFofTerm + { $current=$iv_ruleVLSFofTerm.current; } + EOF; + +// Rule VLSFofTerm +ruleVLSFofTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + { + newCompositeNode(grammarAccess.getVLSFofTermAccess().getVLSVariableParserRuleCall_0()); + } + this_VLSVariable_0=ruleVLSVariable + { + $current = $this_VLSVariable_0.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSFofTermAccess().getVLSFunctionAsTermParserRuleCall_1()); + } + this_VLSFunctionAsTerm_1=ruleVLSFunctionAsTerm + { + $current = $this_VLSFunctionAsTerm_1.current; + afterParserOrEnumRuleCall(); + } + | + { + newCompositeNode(grammarAccess.getVLSFofTermAccess().getVLSDefinedTermParserRuleCall_2()); + } + this_VLSDefinedTerm_2=ruleVLSDefinedTerm + { + $current = $this_VLSDefinedTerm_2.current; + afterParserOrEnumRuleCall(); + } + ) +; + +// Entry rule entryRuleVLSFunctionAsTerm +entryRuleVLSFunctionAsTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSFunctionAsTermRule()); } + iv_ruleVLSFunctionAsTerm=ruleVLSFunctionAsTerm + { $current=$iv_ruleVLSFunctionAsTerm.current; } + EOF; + +// Rule VLSFunctionAsTerm +ruleVLSFunctionAsTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + ( + lv_functor_0_1=RULE_LOWER_WORD_ID + { + newLeafNode(lv_functor_0_1, grammarAccess.getVLSFunctionAsTermAccess().getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + $current, + "functor", + lv_functor_0_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + } + | + lv_functor_0_2=RULE_SINGLE_QUOTE + { + newLeafNode(lv_functor_0_2, grammarAccess.getVLSFunctionAsTermAccess().getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + $current, + "functor", + lv_functor_0_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + } + | + lv_functor_0_3=RULE_DOLLAR_ID + { + newLeafNode(lv_functor_0_3, grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOLLAR_IDTerminalRuleCall_0_0_2()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + $current, + "functor", + lv_functor_0_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + } + | + lv_functor_0_4=RULE_DOUBLE_DOLLAR_ID + { + newLeafNode(lv_functor_0_4, grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + $current, + "functor", + lv_functor_0_4, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + } + ) + ) + ) + ( + otherlv_1='(' + { + newLeafNode(otherlv_1, grammarAccess.getVLSFunctionAsTermAccess().getLeftParenthesisKeyword_1_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_1_0()); + } + lv_terms_2_0=ruleVLSFofTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSFunctionAsTermRule()); + } + add( + $current, + "terms", + lv_terms_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_3=',' + { + newLeafNode(otherlv_3, grammarAccess.getVLSFunctionAsTermAccess().getCommaKeyword_1_2_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_2_1_0()); + } + lv_terms_4_0=ruleVLSFofTerm + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getVLSFunctionAsTermRule()); + } + add( + $current, + "terms", + lv_terms_4_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* + otherlv_5=')' + { + newLeafNode(otherlv_5, grammarAccess.getVLSFunctionAsTermAccess().getRightParenthesisKeyword_1_3()); + } + )? + ) +; + +// Entry rule entryRuleVLSDefinedTerm +entryRuleVLSDefinedTerm returns [EObject current=null]: + { newCompositeNode(grammarAccess.getVLSDefinedTermRule()); } + iv_ruleVLSDefinedTerm=ruleVLSDefinedTerm + { $current=$iv_ruleVLSDefinedTerm.current; } + EOF; + +// Rule VLSDefinedTerm +ruleVLSDefinedTerm returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSDefinedTermAccess().getVLSIntAction_0_0(), + $current); + } + ) + ( + ( + lv_value_1_0=RULE_SIGNED_LITERAL + { + newLeafNode(lv_value_1_0, grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSDefinedTermRule()); + } + setWithLastConsumed( + $current, + "value", + lv_value_1_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SIGNED_LITERAL"); + } + ) + ) + ) + | + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getVLSDefinedTermAccess().getVLSDoubleQuoteAction_1_0(), + $current); + } + ) + ( + ( + lv_value_3_0=RULE_DOUBLE_QUOTE + { + newLeafNode(lv_value_3_0, grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getVLSDefinedTermRule()); + } + setWithLastConsumed( + $current, + "value", + lv_value_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_QUOTE"); + } + ) + ) + ) + ) +; + +fragment RULE_ALPHA_NUMERIC : ('a'..'z'|'A'..'Z'|'0'..'9'|'_'); + +RULE_UPPER_WORD_ID : 'A'..'Z' RULE_ALPHA_NUMERIC*; + +RULE_LOWER_WORD_ID : 'a'..'z' RULE_ALPHA_NUMERIC*; + +RULE_DOUBLE_QUOTE : '"' ('\\' ('"'|'\\')|~(('\\'|'"')))* '"'; + +RULE_SINGLE_QUOTE : '\'' ('\\' ('\''|'\\')|~(('\\'|'\'')))+ '\''; + +fragment RULE_SIGN : ('+'|'-'); + +RULE_DOLLAR_ID : '$' RULE_LOWER_WORD_ID; + +RULE_DOUBLE_DOLLAR_ID : '$$' RULE_LOWER_WORD_ID; + +RULE_LITERAL : ('0'|'1'..'9' RULE_INT?); + +RULE_SIGNED_LITERAL : RULE_SIGN* RULE_LITERAL; + +RULE_SINGLE_COMMENT : '%' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + +fragment RULE_INT : ('0'..'9')+; + +RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\''); + +RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/'; + +RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_WS : (' '|'\t'|'\r'|'\n')+; + +RULE_ANY_OTHER : .; diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.tokens b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.tokens new file mode 100644 index 000000000..dd01b9b0f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguage.tokens @@ -0,0 +1,136 @@ +'!'=72 +'!='=75 +'$false'=79 +'$less'=80 +'$true'=78 +'&'=70 +'('=38 +')'=40 +'*'=63 +','=39 +'.'=41 +':'=61 +':='=77 +'<='=66 +'<=>'=64 +'<~>'=67 +'='=76 +'=>'=65 +'>'=62 +'?'=73 +'Could'=24 +'Finite'=34 +'Found!'=36 +'Model'=35 +'Satisfiable!'=22 +'TRYING'=31 +'Virtual'=29 +'WARNING!'=23 +'['=32 +']'=33 +'assumption'=50 +'axiom'=46 +'conjecture'=47 +'corollary'=53 +'declare_'=45 +'definition'=49 +'distinct_domain'=43 +'fi_domain'=57 +'fi_functors'=58 +'fi_predicates'=59 +'finite_domain'=44 +'fof'=37 +'hypothesis'=48 +'lemma'=51 +'limit:'=28 +'memory.'=30 +'negated_conjecture'=54 +'not'=25 +'plain'=55 +'resource'=27 +'set'=26 +'tff'=42 +'theorem'=52 +'type'=56 +'unknown'=60 +'|'=71 +'~&'=69 +'~'=74 +'~|'=68 +RULE_ALPHA_NUMERIC=13 +RULE_ANY_OTHER=21 +RULE_DOLLAR_ID=9 +RULE_DOUBLE_DOLLAR_ID=10 +RULE_DOUBLE_QUOTE=12 +RULE_ID=16 +RULE_INT=15 +RULE_LITERAL=5 +RULE_LOWER_WORD_ID=6 +RULE_ML_COMMENT=18 +RULE_SIGN=14 +RULE_SIGNED_LITERAL=7 +RULE_SINGLE_COMMENT=4 +RULE_SINGLE_QUOTE=8 +RULE_SL_COMMENT=19 +RULE_STRING=17 +RULE_UPPER_WORD_ID=11 +RULE_WS=20 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 +T__28=28 +T__29=29 +T__30=30 +T__31=31 +T__32=32 +T__33=33 +T__34=34 +T__35=35 +T__36=36 +T__37=37 +T__38=38 +T__39=39 +T__40=40 +T__41=41 +T__42=42 +T__43=43 +T__44=44 +T__45=45 +T__46=46 +T__47=47 +T__48=48 +T__49=49 +T__50=50 +T__51=51 +T__52=52 +T__53=53 +T__54=54 +T__55=55 +T__56=56 +T__57=57 +T__58=58 +T__59=59 +T__60=60 +T__61=61 +T__62=62 +T__63=63 +T__64=64 +T__65=65 +T__66=66 +T__67=67 +T__68=68 +T__69=69 +T__70=70 +T__71=71 +T__72=72 +T__73=73 +T__74=74 +T__75=75 +T__76=76 +T__77=77 +T__78=78 +T__79=79 +T__80=80 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguageLexer.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguageLexer.java new file mode 100644 index 000000000..f3377c741 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguageLexer.java @@ -0,0 +1,3515 @@ +package ca.mcgill.ecse.dslreasoner.parser.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.parser.antlr.Lexer; + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalVampireLanguageLexer extends Lexer { + public static final int T__50=50; + public static final int RULE_SIGN=14; + public static final int T__59=59; + public static final int RULE_SIGNED_LITERAL=7; + public static final int T__55=55; + public static final int T__56=56; + public static final int T__57=57; + public static final int T__58=58; + public static final int T__51=51; + public static final int RULE_DOUBLE_QUOTE=12; + public static final int T__52=52; + public static final int RULE_LITERAL=5; + public static final int T__53=53; + public static final int T__54=54; + public static final int T__60=60; + public static final int T__61=61; + public static final int RULE_ID=16; + public static final int RULE_SINGLE_QUOTE=8; + public static final int RULE_SINGLE_COMMENT=4; + public static final int T__26=26; + public static final int T__27=27; + public static final int T__28=28; + public static final int RULE_INT=15; + public static final int T__29=29; + public static final int T__22=22; + public static final int T__66=66; + public static final int RULE_ML_COMMENT=18; + public static final int T__23=23; + public static final int T__67=67; + public static final int T__24=24; + public static final int T__68=68; + public static final int T__25=25; + public static final int T__69=69; + public static final int T__62=62; + public static final int T__63=63; + public static final int T__64=64; + public static final int T__65=65; + public static final int T__70=70; + public static final int T__71=71; + public static final int T__72=72; + public static final int RULE_LOWER_WORD_ID=6; + public static final int RULE_STRING=17; + public static final int RULE_SL_COMMENT=19; + public static final int T__37=37; + public static final int T__38=38; + public static final int T__39=39; + public static final int T__33=33; + public static final int T__77=77; + public static final int T__34=34; + public static final int T__78=78; + public static final int T__35=35; + public static final int T__79=79; + public static final int T__36=36; + public static final int T__73=73; + public static final int EOF=-1; + public static final int T__30=30; + public static final int T__74=74; + public static final int T__31=31; + public static final int T__75=75; + public static final int T__32=32; + public static final int T__76=76; + public static final int T__80=80; + public static final int RULE_UPPER_WORD_ID=11; + public static final int RULE_WS=20; + public static final int RULE_DOLLAR_ID=9; + public static final int RULE_ALPHA_NUMERIC=13; + public static final int RULE_ANY_OTHER=21; + public static final int RULE_DOUBLE_DOLLAR_ID=10; + public static final int T__48=48; + public static final int T__49=49; + public static final int T__44=44; + public static final int T__45=45; + public static final int T__46=46; + public static final int T__47=47; + public static final int T__40=40; + public static final int T__41=41; + public static final int T__42=42; + public static final int T__43=43; + + // delegates + // delegators + + public InternalVampireLanguageLexer() {;} + public InternalVampireLanguageLexer(CharStream input) { + this(input, new RecognizerSharedState()); + } + public InternalVampireLanguageLexer(CharStream input, RecognizerSharedState state) { + super(input,state); + + } + public String getGrammarFileName() { return "InternalVampireLanguage.g"; } + + // $ANTLR start "T__22" + public final void mT__22() throws RecognitionException { + try { + int _type = T__22; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:11:7: ( 'Satisfiable!' ) + // InternalVampireLanguage.g:11:9: 'Satisfiable!' + { + match("Satisfiable!"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__22" + + // $ANTLR start "T__23" + public final void mT__23() throws RecognitionException { + try { + int _type = T__23; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:12:7: ( 'WARNING!' ) + // InternalVampireLanguage.g:12:9: 'WARNING!' + { + match("WARNING!"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__23" + + // $ANTLR start "T__24" + public final void mT__24() throws RecognitionException { + try { + int _type = T__24; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:13:7: ( 'Could' ) + // InternalVampireLanguage.g:13:9: 'Could' + { + match("Could"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__24" + + // $ANTLR start "T__25" + public final void mT__25() throws RecognitionException { + try { + int _type = T__25; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:14:7: ( 'not' ) + // InternalVampireLanguage.g:14:9: 'not' + { + match("not"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__25" + + // $ANTLR start "T__26" + public final void mT__26() throws RecognitionException { + try { + int _type = T__26; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:15:7: ( 'set' ) + // InternalVampireLanguage.g:15:9: 'set' + { + match("set"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__26" + + // $ANTLR start "T__27" + public final void mT__27() throws RecognitionException { + try { + int _type = T__27; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:16:7: ( 'resource' ) + // InternalVampireLanguage.g:16:9: 'resource' + { + match("resource"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__27" + + // $ANTLR start "T__28" + public final void mT__28() throws RecognitionException { + try { + int _type = T__28; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:17:7: ( 'limit:' ) + // InternalVampireLanguage.g:17:9: 'limit:' + { + match("limit:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__28" + + // $ANTLR start "T__29" + public final void mT__29() throws RecognitionException { + try { + int _type = T__29; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:18:7: ( 'Virtual' ) + // InternalVampireLanguage.g:18:9: 'Virtual' + { + match("Virtual"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__29" + + // $ANTLR start "T__30" + public final void mT__30() throws RecognitionException { + try { + int _type = T__30; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:19:7: ( 'memory.' ) + // InternalVampireLanguage.g:19:9: 'memory.' + { + match("memory."); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__30" + + // $ANTLR start "T__31" + public final void mT__31() throws RecognitionException { + try { + int _type = T__31; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:20:7: ( 'TRYING' ) + // InternalVampireLanguage.g:20:9: 'TRYING' + { + match("TRYING"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__31" + + // $ANTLR start "T__32" + public final void mT__32() throws RecognitionException { + try { + int _type = T__32; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:21:7: ( '[' ) + // InternalVampireLanguage.g:21:9: '[' + { + match('['); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__32" + + // $ANTLR start "T__33" + public final void mT__33() throws RecognitionException { + try { + int _type = T__33; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:22:7: ( ']' ) + // InternalVampireLanguage.g:22:9: ']' + { + match(']'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__33" + + // $ANTLR start "T__34" + public final void mT__34() throws RecognitionException { + try { + int _type = T__34; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:23:7: ( 'Finite' ) + // InternalVampireLanguage.g:23:9: 'Finite' + { + match("Finite"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__34" + + // $ANTLR start "T__35" + public final void mT__35() throws RecognitionException { + try { + int _type = T__35; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:24:7: ( 'Model' ) + // InternalVampireLanguage.g:24:9: 'Model' + { + match("Model"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__35" + + // $ANTLR start "T__36" + public final void mT__36() throws RecognitionException { + try { + int _type = T__36; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:25:7: ( 'Found!' ) + // InternalVampireLanguage.g:25:9: 'Found!' + { + match("Found!"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__36" + + // $ANTLR start "T__37" + public final void mT__37() throws RecognitionException { + try { + int _type = T__37; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:26:7: ( 'fof' ) + // InternalVampireLanguage.g:26:9: 'fof' + { + match("fof"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__37" + + // $ANTLR start "T__38" + public final void mT__38() throws RecognitionException { + try { + int _type = T__38; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:27:7: ( '(' ) + // InternalVampireLanguage.g:27:9: '(' + { + match('('); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__38" + + // $ANTLR start "T__39" + public final void mT__39() throws RecognitionException { + try { + int _type = T__39; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:28:7: ( ',' ) + // InternalVampireLanguage.g:28:9: ',' + { + match(','); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__39" + + // $ANTLR start "T__40" + public final void mT__40() throws RecognitionException { + try { + int _type = T__40; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:29:7: ( ')' ) + // InternalVampireLanguage.g:29:9: ')' + { + match(')'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__40" + + // $ANTLR start "T__41" + public final void mT__41() throws RecognitionException { + try { + int _type = T__41; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:30:7: ( '.' ) + // InternalVampireLanguage.g:30:9: '.' + { + match('.'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__41" + + // $ANTLR start "T__42" + public final void mT__42() throws RecognitionException { + try { + int _type = T__42; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:31:7: ( 'tff' ) + // InternalVampireLanguage.g:31:9: 'tff' + { + match("tff"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__42" + + // $ANTLR start "T__43" + public final void mT__43() throws RecognitionException { + try { + int _type = T__43; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:32:7: ( 'distinct_domain' ) + // InternalVampireLanguage.g:32:9: 'distinct_domain' + { + match("distinct_domain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__43" + + // $ANTLR start "T__44" + public final void mT__44() throws RecognitionException { + try { + int _type = T__44; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:33:7: ( 'finite_domain' ) + // InternalVampireLanguage.g:33:9: 'finite_domain' + { + match("finite_domain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__44" + + // $ANTLR start "T__45" + public final void mT__45() throws RecognitionException { + try { + int _type = T__45; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:34:7: ( 'declare_' ) + // InternalVampireLanguage.g:34:9: 'declare_' + { + match("declare_"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__45" + + // $ANTLR start "T__46" + public final void mT__46() throws RecognitionException { + try { + int _type = T__46; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:35:7: ( 'axiom' ) + // InternalVampireLanguage.g:35:9: 'axiom' + { + match("axiom"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__46" + + // $ANTLR start "T__47" + public final void mT__47() throws RecognitionException { + try { + int _type = T__47; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:36:7: ( 'conjecture' ) + // InternalVampireLanguage.g:36:9: 'conjecture' + { + match("conjecture"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__47" + + // $ANTLR start "T__48" + public final void mT__48() throws RecognitionException { + try { + int _type = T__48; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:37:7: ( 'hypothesis' ) + // InternalVampireLanguage.g:37:9: 'hypothesis' + { + match("hypothesis"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__48" + + // $ANTLR start "T__49" + public final void mT__49() throws RecognitionException { + try { + int _type = T__49; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:38:7: ( 'definition' ) + // InternalVampireLanguage.g:38:9: 'definition' + { + match("definition"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__49" + + // $ANTLR start "T__50" + public final void mT__50() throws RecognitionException { + try { + int _type = T__50; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:39:7: ( 'assumption' ) + // InternalVampireLanguage.g:39:9: 'assumption' + { + match("assumption"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__50" + + // $ANTLR start "T__51" + public final void mT__51() throws RecognitionException { + try { + int _type = T__51; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:40:7: ( 'lemma' ) + // InternalVampireLanguage.g:40:9: 'lemma' + { + match("lemma"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__51" + + // $ANTLR start "T__52" + public final void mT__52() throws RecognitionException { + try { + int _type = T__52; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:41:7: ( 'theorem' ) + // InternalVampireLanguage.g:41:9: 'theorem' + { + match("theorem"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__52" + + // $ANTLR start "T__53" + public final void mT__53() throws RecognitionException { + try { + int _type = T__53; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:42:7: ( 'corollary' ) + // InternalVampireLanguage.g:42:9: 'corollary' + { + match("corollary"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__53" + + // $ANTLR start "T__54" + public final void mT__54() throws RecognitionException { + try { + int _type = T__54; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:43:7: ( 'negated_conjecture' ) + // InternalVampireLanguage.g:43:9: 'negated_conjecture' + { + match("negated_conjecture"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__54" + + // $ANTLR start "T__55" + public final void mT__55() throws RecognitionException { + try { + int _type = T__55; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:44:7: ( 'plain' ) + // InternalVampireLanguage.g:44:9: 'plain' + { + match("plain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__55" + + // $ANTLR start "T__56" + public final void mT__56() throws RecognitionException { + try { + int _type = T__56; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:45:7: ( 'type' ) + // InternalVampireLanguage.g:45:9: 'type' + { + match("type"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__56" + + // $ANTLR start "T__57" + public final void mT__57() throws RecognitionException { + try { + int _type = T__57; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:46:7: ( 'fi_domain' ) + // InternalVampireLanguage.g:46:9: 'fi_domain' + { + match("fi_domain"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__57" + + // $ANTLR start "T__58" + public final void mT__58() throws RecognitionException { + try { + int _type = T__58; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:47:7: ( 'fi_functors' ) + // InternalVampireLanguage.g:47:9: 'fi_functors' + { + match("fi_functors"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__58" + + // $ANTLR start "T__59" + public final void mT__59() throws RecognitionException { + try { + int _type = T__59; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:48:7: ( 'fi_predicates' ) + // InternalVampireLanguage.g:48:9: 'fi_predicates' + { + match("fi_predicates"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__59" + + // $ANTLR start "T__60" + public final void mT__60() throws RecognitionException { + try { + int _type = T__60; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:49:7: ( 'unknown' ) + // InternalVampireLanguage.g:49:9: 'unknown' + { + match("unknown"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__60" + + // $ANTLR start "T__61" + public final void mT__61() throws RecognitionException { + try { + int _type = T__61; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:50:7: ( ':' ) + // InternalVampireLanguage.g:50:9: ':' + { + match(':'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__61" + + // $ANTLR start "T__62" + public final void mT__62() throws RecognitionException { + try { + int _type = T__62; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:51:7: ( '>' ) + // InternalVampireLanguage.g:51:9: '>' + { + match('>'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__62" + + // $ANTLR start "T__63" + public final void mT__63() throws RecognitionException { + try { + int _type = T__63; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:52:7: ( '*' ) + // InternalVampireLanguage.g:52:9: '*' + { + match('*'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__63" + + // $ANTLR start "T__64" + public final void mT__64() throws RecognitionException { + try { + int _type = T__64; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:53:7: ( '<=>' ) + // InternalVampireLanguage.g:53:9: '<=>' + { + match("<=>"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__64" + + // $ANTLR start "T__65" + public final void mT__65() throws RecognitionException { + try { + int _type = T__65; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:54:7: ( '=>' ) + // InternalVampireLanguage.g:54:9: '=>' + { + match("=>"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__65" + + // $ANTLR start "T__66" + public final void mT__66() throws RecognitionException { + try { + int _type = T__66; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:55:7: ( '<=' ) + // InternalVampireLanguage.g:55:9: '<=' + { + match("<="); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__66" + + // $ANTLR start "T__67" + public final void mT__67() throws RecognitionException { + try { + int _type = T__67; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:56:7: ( '<~>' ) + // InternalVampireLanguage.g:56:9: '<~>' + { + match("<~>"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__67" + + // $ANTLR start "T__68" + public final void mT__68() throws RecognitionException { + try { + int _type = T__68; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:57:7: ( '~|' ) + // InternalVampireLanguage.g:57:9: '~|' + { + match("~|"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__68" + + // $ANTLR start "T__69" + public final void mT__69() throws RecognitionException { + try { + int _type = T__69; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:58:7: ( '~&' ) + // InternalVampireLanguage.g:58:9: '~&' + { + match("~&"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__69" + + // $ANTLR start "T__70" + public final void mT__70() throws RecognitionException { + try { + int _type = T__70; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:59:7: ( '&' ) + // InternalVampireLanguage.g:59:9: '&' + { + match('&'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__70" + + // $ANTLR start "T__71" + public final void mT__71() throws RecognitionException { + try { + int _type = T__71; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:60:7: ( '|' ) + // InternalVampireLanguage.g:60:9: '|' + { + match('|'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__71" + + // $ANTLR start "T__72" + public final void mT__72() throws RecognitionException { + try { + int _type = T__72; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:61:7: ( '!' ) + // InternalVampireLanguage.g:61:9: '!' + { + match('!'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__72" + + // $ANTLR start "T__73" + public final void mT__73() throws RecognitionException { + try { + int _type = T__73; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:62:7: ( '?' ) + // InternalVampireLanguage.g:62:9: '?' + { + match('?'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__73" + + // $ANTLR start "T__74" + public final void mT__74() throws RecognitionException { + try { + int _type = T__74; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:63:7: ( '~' ) + // InternalVampireLanguage.g:63:9: '~' + { + match('~'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__74" + + // $ANTLR start "T__75" + public final void mT__75() throws RecognitionException { + try { + int _type = T__75; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:64:7: ( '!=' ) + // InternalVampireLanguage.g:64:9: '!=' + { + match("!="); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__75" + + // $ANTLR start "T__76" + public final void mT__76() throws RecognitionException { + try { + int _type = T__76; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:65:7: ( '=' ) + // InternalVampireLanguage.g:65:9: '=' + { + match('='); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__76" + + // $ANTLR start "T__77" + public final void mT__77() throws RecognitionException { + try { + int _type = T__77; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:66:7: ( ':=' ) + // InternalVampireLanguage.g:66:9: ':=' + { + match(":="); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__77" + + // $ANTLR start "T__78" + public final void mT__78() throws RecognitionException { + try { + int _type = T__78; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:67:7: ( '$true' ) + // InternalVampireLanguage.g:67:9: '$true' + { + match("$true"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__78" + + // $ANTLR start "T__79" + public final void mT__79() throws RecognitionException { + try { + int _type = T__79; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:68:7: ( '$false' ) + // InternalVampireLanguage.g:68:9: '$false' + { + match("$false"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__79" + + // $ANTLR start "T__80" + public final void mT__80() throws RecognitionException { + try { + int _type = T__80; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:69:7: ( '$less' ) + // InternalVampireLanguage.g:69:9: '$less' + { + match("$less"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__80" + + // $ANTLR start "RULE_ALPHA_NUMERIC" + public final void mRULE_ALPHA_NUMERIC() throws RecognitionException { + try { + // InternalVampireLanguage.g:2840:29: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' ) ) + // InternalVampireLanguage.g:2840:31: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' ) + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + } + finally { + } + } + // $ANTLR end "RULE_ALPHA_NUMERIC" + + // $ANTLR start "RULE_UPPER_WORD_ID" + public final void mRULE_UPPER_WORD_ID() throws RecognitionException { + try { + int _type = RULE_UPPER_WORD_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2842:20: ( 'A' .. 'Z' ( RULE_ALPHA_NUMERIC )* ) + // InternalVampireLanguage.g:2842:22: 'A' .. 'Z' ( RULE_ALPHA_NUMERIC )* + { + matchRange('A','Z'); + // InternalVampireLanguage.g:2842:31: ( RULE_ALPHA_NUMERIC )* + loop1: + do { + int alt1=2; + int LA1_0 = input.LA(1); + + if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) { + alt1=1; + } + + + switch (alt1) { + case 1 : + // InternalVampireLanguage.g:2842:31: RULE_ALPHA_NUMERIC + { + mRULE_ALPHA_NUMERIC(); + + } + break; + + default : + break loop1; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_UPPER_WORD_ID" + + // $ANTLR start "RULE_LOWER_WORD_ID" + public final void mRULE_LOWER_WORD_ID() throws RecognitionException { + try { + int _type = RULE_LOWER_WORD_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2844:20: ( 'a' .. 'z' ( RULE_ALPHA_NUMERIC )* ) + // InternalVampireLanguage.g:2844:22: 'a' .. 'z' ( RULE_ALPHA_NUMERIC )* + { + matchRange('a','z'); + // InternalVampireLanguage.g:2844:31: ( RULE_ALPHA_NUMERIC )* + loop2: + do { + int alt2=2; + int LA2_0 = input.LA(1); + + if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) { + alt2=1; + } + + + switch (alt2) { + case 1 : + // InternalVampireLanguage.g:2844:31: RULE_ALPHA_NUMERIC + { + mRULE_ALPHA_NUMERIC(); + + } + break; + + default : + break loop2; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_LOWER_WORD_ID" + + // $ANTLR start "RULE_DOUBLE_QUOTE" + public final void mRULE_DOUBLE_QUOTE() throws RecognitionException { + try { + int _type = RULE_DOUBLE_QUOTE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2846:19: ( '\"' ( '\\\\' ( '\"' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' ) + // InternalVampireLanguage.g:2846:21: '\"' ( '\\\\' ( '\"' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + { + match('\"'); + // InternalVampireLanguage.g:2846:25: ( '\\\\' ( '\"' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* + loop3: + do { + int alt3=3; + int LA3_0 = input.LA(1); + + if ( (LA3_0=='\\') ) { + alt3=1; + } + else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='[')||(LA3_0>=']' && LA3_0<='\uFFFF')) ) { + alt3=2; + } + + + switch (alt3) { + case 1 : + // InternalVampireLanguage.g:2846:26: '\\\\' ( '\"' | '\\\\' ) + { + match('\\'); + if ( input.LA(1)=='\"'||input.LA(1)=='\\' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + case 2 : + // InternalVampireLanguage.g:2846:42: ~ ( ( '\\\\' | '\"' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop3; + } + } while (true); + + match('\"'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_DOUBLE_QUOTE" + + // $ANTLR start "RULE_SINGLE_QUOTE" + public final void mRULE_SINGLE_QUOTE() throws RecognitionException { + try { + int _type = RULE_SINGLE_QUOTE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2848:19: ( '\\'' ( '\\\\' ( '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )+ '\\'' ) + // InternalVampireLanguage.g:2848:21: '\\'' ( '\\\\' ( '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )+ '\\'' + { + match('\''); + // InternalVampireLanguage.g:2848:26: ( '\\\\' ( '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )+ + int cnt4=0; + loop4: + do { + int alt4=3; + int LA4_0 = input.LA(1); + + if ( (LA4_0=='\\') ) { + alt4=1; + } + else if ( ((LA4_0>='\u0000' && LA4_0<='&')||(LA4_0>='(' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) { + alt4=2; + } + + + switch (alt4) { + case 1 : + // InternalVampireLanguage.g:2848:27: '\\\\' ( '\\'' | '\\\\' ) + { + match('\\'); + if ( input.LA(1)=='\''||input.LA(1)=='\\' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + case 2 : + // InternalVampireLanguage.g:2848:44: ~ ( ( '\\\\' | '\\'' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt4 >= 1 ) break loop4; + EarlyExitException eee = + new EarlyExitException(4, input); + throw eee; + } + cnt4++; + } while (true); + + match('\''); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SINGLE_QUOTE" + + // $ANTLR start "RULE_SIGN" + public final void mRULE_SIGN() throws RecognitionException { + try { + // InternalVampireLanguage.g:2850:20: ( ( '+' | '-' ) ) + // InternalVampireLanguage.g:2850:22: ( '+' | '-' ) + { + if ( input.LA(1)=='+'||input.LA(1)=='-' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + } + finally { + } + } + // $ANTLR end "RULE_SIGN" + + // $ANTLR start "RULE_DOLLAR_ID" + public final void mRULE_DOLLAR_ID() throws RecognitionException { + try { + int _type = RULE_DOLLAR_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2852:16: ( '$' RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:2852:18: '$' RULE_LOWER_WORD_ID + { + match('$'); + mRULE_LOWER_WORD_ID(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_DOLLAR_ID" + + // $ANTLR start "RULE_DOUBLE_DOLLAR_ID" + public final void mRULE_DOUBLE_DOLLAR_ID() throws RecognitionException { + try { + int _type = RULE_DOUBLE_DOLLAR_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2854:23: ( '$$' RULE_LOWER_WORD_ID ) + // InternalVampireLanguage.g:2854:25: '$$' RULE_LOWER_WORD_ID + { + match("$$"); + + mRULE_LOWER_WORD_ID(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_DOUBLE_DOLLAR_ID" + + // $ANTLR start "RULE_LITERAL" + public final void mRULE_LITERAL() throws RecognitionException { + try { + int _type = RULE_LITERAL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2856:14: ( ( '0' | '1' .. '9' ( RULE_INT )? ) ) + // InternalVampireLanguage.g:2856:16: ( '0' | '1' .. '9' ( RULE_INT )? ) + { + // InternalVampireLanguage.g:2856:16: ( '0' | '1' .. '9' ( RULE_INT )? ) + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0=='0') ) { + alt6=1; + } + else if ( ((LA6_0>='1' && LA6_0<='9')) ) { + alt6=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 6, 0, input); + + throw nvae; + } + switch (alt6) { + case 1 : + // InternalVampireLanguage.g:2856:17: '0' + { + match('0'); + + } + break; + case 2 : + // InternalVampireLanguage.g:2856:21: '1' .. '9' ( RULE_INT )? + { + matchRange('1','9'); + // InternalVampireLanguage.g:2856:30: ( RULE_INT )? + int alt5=2; + int LA5_0 = input.LA(1); + + if ( ((LA5_0>='0' && LA5_0<='9')) ) { + alt5=1; + } + switch (alt5) { + case 1 : + // InternalVampireLanguage.g:2856:30: RULE_INT + { + mRULE_INT(); + + } + break; + + } + + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_LITERAL" + + // $ANTLR start "RULE_SIGNED_LITERAL" + public final void mRULE_SIGNED_LITERAL() throws RecognitionException { + try { + int _type = RULE_SIGNED_LITERAL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2858:21: ( ( RULE_SIGN )* RULE_LITERAL ) + // InternalVampireLanguage.g:2858:23: ( RULE_SIGN )* RULE_LITERAL + { + // InternalVampireLanguage.g:2858:23: ( RULE_SIGN )* + loop7: + do { + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0=='+'||LA7_0=='-') ) { + alt7=1; + } + + + switch (alt7) { + case 1 : + // InternalVampireLanguage.g:2858:23: RULE_SIGN + { + mRULE_SIGN(); + + } + break; + + default : + break loop7; + } + } while (true); + + mRULE_LITERAL(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SIGNED_LITERAL" + + // $ANTLR start "RULE_SINGLE_COMMENT" + public final void mRULE_SINGLE_COMMENT() throws RecognitionException { + try { + int _type = RULE_SINGLE_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2860:21: ( '%' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalVampireLanguage.g:2860:23: '%' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + { + match('%'); + // InternalVampireLanguage.g:2860:27: (~ ( ( '\\n' | '\\r' ) ) )* + loop8: + do { + int alt8=2; + int LA8_0 = input.LA(1); + + if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) { + alt8=1; + } + + + switch (alt8) { + case 1 : + // InternalVampireLanguage.g:2860:27: ~ ( ( '\\n' | '\\r' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop8; + } + } while (true); + + // InternalVampireLanguage.g:2860:43: ( ( '\\r' )? '\\n' )? + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0=='\n'||LA10_0=='\r') ) { + alt10=1; + } + switch (alt10) { + case 1 : + // InternalVampireLanguage.g:2860:44: ( '\\r' )? '\\n' + { + // InternalVampireLanguage.g:2860:44: ( '\\r' )? + int alt9=2; + int LA9_0 = input.LA(1); + + if ( (LA9_0=='\r') ) { + alt9=1; + } + switch (alt9) { + case 1 : + // InternalVampireLanguage.g:2860:44: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SINGLE_COMMENT" + + // $ANTLR start "RULE_ID" + public final void mRULE_ID() throws RecognitionException { + try { + int _type = RULE_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2862:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalVampireLanguage.g:2862:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + { + // InternalVampireLanguage.g:2862:11: ( '^' )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0=='^') ) { + alt11=1; + } + switch (alt11) { + case 1 : + // InternalVampireLanguage.g:2862:11: '^' + { + match('^'); + + } + break; + + } + + if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + // InternalVampireLanguage.g:2862:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + loop12: + do { + int alt12=2; + int LA12_0 = input.LA(1); + + if ( ((LA12_0>='0' && LA12_0<='9')||(LA12_0>='A' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='z')) ) { + alt12=1; + } + + + switch (alt12) { + case 1 : + // InternalVampireLanguage.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop12; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ID" + + // $ANTLR start "RULE_INT" + public final void mRULE_INT() throws RecognitionException { + try { + // InternalVampireLanguage.g:2864:19: ( ( '0' .. '9' )+ ) + // InternalVampireLanguage.g:2864:21: ( '0' .. '9' )+ + { + // InternalVampireLanguage.g:2864:21: ( '0' .. '9' )+ + int cnt13=0; + loop13: + do { + int alt13=2; + int LA13_0 = input.LA(1); + + if ( ((LA13_0>='0' && LA13_0<='9')) ) { + alt13=1; + } + + + switch (alt13) { + case 1 : + // InternalVampireLanguage.g:2864:22: '0' .. '9' + { + matchRange('0','9'); + + } + break; + + default : + if ( cnt13 >= 1 ) break loop13; + EarlyExitException eee = + new EarlyExitException(13, input); + throw eee; + } + cnt13++; + } while (true); + + + } + + } + finally { + } + } + // $ANTLR end "RULE_INT" + + // $ANTLR start "RULE_STRING" + public final void mRULE_STRING() throws RecognitionException { + try { + int _type = RULE_STRING; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2866:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalVampireLanguage.g:2866:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + { + // InternalVampireLanguage.g:2866:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0=='\"') ) { + alt16=1; + } + else if ( (LA16_0=='\'') ) { + alt16=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 16, 0, input); + + throw nvae; + } + switch (alt16) { + case 1 : + // InternalVampireLanguage.g:2866:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + { + match('\"'); + // InternalVampireLanguage.g:2866:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + loop14: + do { + int alt14=3; + int LA14_0 = input.LA(1); + + if ( (LA14_0=='\\') ) { + alt14=1; + } + else if ( ((LA14_0>='\u0000' && LA14_0<='!')||(LA14_0>='#' && LA14_0<='[')||(LA14_0>=']' && LA14_0<='\uFFFF')) ) { + alt14=2; + } + + + switch (alt14) { + case 1 : + // InternalVampireLanguage.g:2866:21: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalVampireLanguage.g:2866:28: ~ ( ( '\\\\' | '\"' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop14; + } + } while (true); + + match('\"'); + + } + break; + case 2 : + // InternalVampireLanguage.g:2866:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + { + match('\''); + // InternalVampireLanguage.g:2866:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + loop15: + do { + int alt15=3; + int LA15_0 = input.LA(1); + + if ( (LA15_0=='\\') ) { + alt15=1; + } + else if ( ((LA15_0>='\u0000' && LA15_0<='&')||(LA15_0>='(' && LA15_0<='[')||(LA15_0>=']' && LA15_0<='\uFFFF')) ) { + alt15=2; + } + + + switch (alt15) { + case 1 : + // InternalVampireLanguage.g:2866:54: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalVampireLanguage.g:2866:61: ~ ( ( '\\\\' | '\\'' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop15; + } + } while (true); + + match('\''); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_STRING" + + // $ANTLR start "RULE_ML_COMMENT" + public final void mRULE_ML_COMMENT() throws RecognitionException { + try { + int _type = RULE_ML_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2868:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalVampireLanguage.g:2868:19: '/*' ( options {greedy=false; } : . )* '*/' + { + match("/*"); + + // InternalVampireLanguage.g:2868:24: ( options {greedy=false; } : . )* + loop17: + do { + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0=='*') ) { + int LA17_1 = input.LA(2); + + if ( (LA17_1=='/') ) { + alt17=2; + } + else if ( ((LA17_1>='\u0000' && LA17_1<='.')||(LA17_1>='0' && LA17_1<='\uFFFF')) ) { + alt17=1; + } + + + } + else if ( ((LA17_0>='\u0000' && LA17_0<=')')||(LA17_0>='+' && LA17_0<='\uFFFF')) ) { + alt17=1; + } + + + switch (alt17) { + case 1 : + // InternalVampireLanguage.g:2868:52: . + { + matchAny(); + + } + break; + + default : + break loop17; + } + } while (true); + + match("*/"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ML_COMMENT" + + // $ANTLR start "RULE_SL_COMMENT" + public final void mRULE_SL_COMMENT() throws RecognitionException { + try { + int _type = RULE_SL_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2870:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalVampireLanguage.g:2870:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + { + match("//"); + + // InternalVampireLanguage.g:2870:24: (~ ( ( '\\n' | '\\r' ) ) )* + loop18: + do { + int alt18=2; + int LA18_0 = input.LA(1); + + if ( ((LA18_0>='\u0000' && LA18_0<='\t')||(LA18_0>='\u000B' && LA18_0<='\f')||(LA18_0>='\u000E' && LA18_0<='\uFFFF')) ) { + alt18=1; + } + + + switch (alt18) { + case 1 : + // InternalVampireLanguage.g:2870:24: ~ ( ( '\\n' | '\\r' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop18; + } + } while (true); + + // InternalVampireLanguage.g:2870:40: ( ( '\\r' )? '\\n' )? + int alt20=2; + int LA20_0 = input.LA(1); + + if ( (LA20_0=='\n'||LA20_0=='\r') ) { + alt20=1; + } + switch (alt20) { + case 1 : + // InternalVampireLanguage.g:2870:41: ( '\\r' )? '\\n' + { + // InternalVampireLanguage.g:2870:41: ( '\\r' )? + int alt19=2; + int LA19_0 = input.LA(1); + + if ( (LA19_0=='\r') ) { + alt19=1; + } + switch (alt19) { + case 1 : + // InternalVampireLanguage.g:2870:41: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SL_COMMENT" + + // $ANTLR start "RULE_WS" + public final void mRULE_WS() throws RecognitionException { + try { + int _type = RULE_WS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2872:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalVampireLanguage.g:2872:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + { + // InternalVampireLanguage.g:2872:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + int cnt21=0; + loop21: + do { + int alt21=2; + int LA21_0 = input.LA(1); + + if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) { + alt21=1; + } + + + switch (alt21) { + case 1 : + // InternalVampireLanguage.g: + { + if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt21 >= 1 ) break loop21; + EarlyExitException eee = + new EarlyExitException(21, input); + throw eee; + } + cnt21++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_WS" + + // $ANTLR start "RULE_ANY_OTHER" + public final void mRULE_ANY_OTHER() throws RecognitionException { + try { + int _type = RULE_ANY_OTHER; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalVampireLanguage.g:2874:16: ( . ) + // InternalVampireLanguage.g:2874:18: . + { + matchAny(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ANY_OTHER" + + public void mTokens() throws RecognitionException { + // InternalVampireLanguage.g:1:8: ( T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | RULE_UPPER_WORD_ID | RULE_LOWER_WORD_ID | RULE_DOUBLE_QUOTE | RULE_SINGLE_QUOTE | RULE_DOLLAR_ID | RULE_DOUBLE_DOLLAR_ID | RULE_LITERAL | RULE_SIGNED_LITERAL | RULE_SINGLE_COMMENT | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) + int alt22=74; + alt22 = dfa22.predict(input); + switch (alt22) { + case 1 : + // InternalVampireLanguage.g:1:10: T__22 + { + mT__22(); + + } + break; + case 2 : + // InternalVampireLanguage.g:1:16: T__23 + { + mT__23(); + + } + break; + case 3 : + // InternalVampireLanguage.g:1:22: T__24 + { + mT__24(); + + } + break; + case 4 : + // InternalVampireLanguage.g:1:28: T__25 + { + mT__25(); + + } + break; + case 5 : + // InternalVampireLanguage.g:1:34: T__26 + { + mT__26(); + + } + break; + case 6 : + // InternalVampireLanguage.g:1:40: T__27 + { + mT__27(); + + } + break; + case 7 : + // InternalVampireLanguage.g:1:46: T__28 + { + mT__28(); + + } + break; + case 8 : + // InternalVampireLanguage.g:1:52: T__29 + { + mT__29(); + + } + break; + case 9 : + // InternalVampireLanguage.g:1:58: T__30 + { + mT__30(); + + } + break; + case 10 : + // InternalVampireLanguage.g:1:64: T__31 + { + mT__31(); + + } + break; + case 11 : + // InternalVampireLanguage.g:1:70: T__32 + { + mT__32(); + + } + break; + case 12 : + // InternalVampireLanguage.g:1:76: T__33 + { + mT__33(); + + } + break; + case 13 : + // InternalVampireLanguage.g:1:82: T__34 + { + mT__34(); + + } + break; + case 14 : + // InternalVampireLanguage.g:1:88: T__35 + { + mT__35(); + + } + break; + case 15 : + // InternalVampireLanguage.g:1:94: T__36 + { + mT__36(); + + } + break; + case 16 : + // InternalVampireLanguage.g:1:100: T__37 + { + mT__37(); + + } + break; + case 17 : + // InternalVampireLanguage.g:1:106: T__38 + { + mT__38(); + + } + break; + case 18 : + // InternalVampireLanguage.g:1:112: T__39 + { + mT__39(); + + } + break; + case 19 : + // InternalVampireLanguage.g:1:118: T__40 + { + mT__40(); + + } + break; + case 20 : + // InternalVampireLanguage.g:1:124: T__41 + { + mT__41(); + + } + break; + case 21 : + // InternalVampireLanguage.g:1:130: T__42 + { + mT__42(); + + } + break; + case 22 : + // InternalVampireLanguage.g:1:136: T__43 + { + mT__43(); + + } + break; + case 23 : + // InternalVampireLanguage.g:1:142: T__44 + { + mT__44(); + + } + break; + case 24 : + // InternalVampireLanguage.g:1:148: T__45 + { + mT__45(); + + } + break; + case 25 : + // InternalVampireLanguage.g:1:154: T__46 + { + mT__46(); + + } + break; + case 26 : + // InternalVampireLanguage.g:1:160: T__47 + { + mT__47(); + + } + break; + case 27 : + // InternalVampireLanguage.g:1:166: T__48 + { + mT__48(); + + } + break; + case 28 : + // InternalVampireLanguage.g:1:172: T__49 + { + mT__49(); + + } + break; + case 29 : + // InternalVampireLanguage.g:1:178: T__50 + { + mT__50(); + + } + break; + case 30 : + // InternalVampireLanguage.g:1:184: T__51 + { + mT__51(); + + } + break; + case 31 : + // InternalVampireLanguage.g:1:190: T__52 + { + mT__52(); + + } + break; + case 32 : + // InternalVampireLanguage.g:1:196: T__53 + { + mT__53(); + + } + break; + case 33 : + // InternalVampireLanguage.g:1:202: T__54 + { + mT__54(); + + } + break; + case 34 : + // InternalVampireLanguage.g:1:208: T__55 + { + mT__55(); + + } + break; + case 35 : + // InternalVampireLanguage.g:1:214: T__56 + { + mT__56(); + + } + break; + case 36 : + // InternalVampireLanguage.g:1:220: T__57 + { + mT__57(); + + } + break; + case 37 : + // InternalVampireLanguage.g:1:226: T__58 + { + mT__58(); + + } + break; + case 38 : + // InternalVampireLanguage.g:1:232: T__59 + { + mT__59(); + + } + break; + case 39 : + // InternalVampireLanguage.g:1:238: T__60 + { + mT__60(); + + } + break; + case 40 : + // InternalVampireLanguage.g:1:244: T__61 + { + mT__61(); + + } + break; + case 41 : + // InternalVampireLanguage.g:1:250: T__62 + { + mT__62(); + + } + break; + case 42 : + // InternalVampireLanguage.g:1:256: T__63 + { + mT__63(); + + } + break; + case 43 : + // InternalVampireLanguage.g:1:262: T__64 + { + mT__64(); + + } + break; + case 44 : + // InternalVampireLanguage.g:1:268: T__65 + { + mT__65(); + + } + break; + case 45 : + // InternalVampireLanguage.g:1:274: T__66 + { + mT__66(); + + } + break; + case 46 : + // InternalVampireLanguage.g:1:280: T__67 + { + mT__67(); + + } + break; + case 47 : + // InternalVampireLanguage.g:1:286: T__68 + { + mT__68(); + + } + break; + case 48 : + // InternalVampireLanguage.g:1:292: T__69 + { + mT__69(); + + } + break; + case 49 : + // InternalVampireLanguage.g:1:298: T__70 + { + mT__70(); + + } + break; + case 50 : + // InternalVampireLanguage.g:1:304: T__71 + { + mT__71(); + + } + break; + case 51 : + // InternalVampireLanguage.g:1:310: T__72 + { + mT__72(); + + } + break; + case 52 : + // InternalVampireLanguage.g:1:316: T__73 + { + mT__73(); + + } + break; + case 53 : + // InternalVampireLanguage.g:1:322: T__74 + { + mT__74(); + + } + break; + case 54 : + // InternalVampireLanguage.g:1:328: T__75 + { + mT__75(); + + } + break; + case 55 : + // InternalVampireLanguage.g:1:334: T__76 + { + mT__76(); + + } + break; + case 56 : + // InternalVampireLanguage.g:1:340: T__77 + { + mT__77(); + + } + break; + case 57 : + // InternalVampireLanguage.g:1:346: T__78 + { + mT__78(); + + } + break; + case 58 : + // InternalVampireLanguage.g:1:352: T__79 + { + mT__79(); + + } + break; + case 59 : + // InternalVampireLanguage.g:1:358: T__80 + { + mT__80(); + + } + break; + case 60 : + // InternalVampireLanguage.g:1:364: RULE_UPPER_WORD_ID + { + mRULE_UPPER_WORD_ID(); + + } + break; + case 61 : + // InternalVampireLanguage.g:1:383: RULE_LOWER_WORD_ID + { + mRULE_LOWER_WORD_ID(); + + } + break; + case 62 : + // InternalVampireLanguage.g:1:402: RULE_DOUBLE_QUOTE + { + mRULE_DOUBLE_QUOTE(); + + } + break; + case 63 : + // InternalVampireLanguage.g:1:420: RULE_SINGLE_QUOTE + { + mRULE_SINGLE_QUOTE(); + + } + break; + case 64 : + // InternalVampireLanguage.g:1:438: RULE_DOLLAR_ID + { + mRULE_DOLLAR_ID(); + + } + break; + case 65 : + // InternalVampireLanguage.g:1:453: RULE_DOUBLE_DOLLAR_ID + { + mRULE_DOUBLE_DOLLAR_ID(); + + } + break; + case 66 : + // InternalVampireLanguage.g:1:475: RULE_LITERAL + { + mRULE_LITERAL(); + + } + break; + case 67 : + // InternalVampireLanguage.g:1:488: RULE_SIGNED_LITERAL + { + mRULE_SIGNED_LITERAL(); + + } + break; + case 68 : + // InternalVampireLanguage.g:1:508: RULE_SINGLE_COMMENT + { + mRULE_SINGLE_COMMENT(); + + } + break; + case 69 : + // InternalVampireLanguage.g:1:528: RULE_ID + { + mRULE_ID(); + + } + break; + case 70 : + // InternalVampireLanguage.g:1:536: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 71 : + // InternalVampireLanguage.g:1:548: RULE_ML_COMMENT + { + mRULE_ML_COMMENT(); + + } + break; + case 72 : + // InternalVampireLanguage.g:1:564: RULE_SL_COMMENT + { + mRULE_SL_COMMENT(); + + } + break; + case 73 : + // InternalVampireLanguage.g:1:580: RULE_WS + { + mRULE_WS(); + + } + break; + case 74 : + // InternalVampireLanguage.g:1:588: RULE_ANY_OTHER + { + mRULE_ANY_OTHER(); + + } + break; + + } + + } + + + protected DFA22 dfa22 = new DFA22(this); + static final String DFA22_eotS = + "\1\uffff\3\64\4\72\1\64\1\72\1\64\2\uffff\2\64\1\72\4\uffff\7\72\1\132\2\uffff\1\62\1\140\1\143\2\uffff\1\147\1\uffff\1\62\1\64\1\72\2\62\1\uffff\1\164\1\62\1\uffff\1\62\1\uffff\1\62\2\uffff\1\64\1\uffff\3\64\2\72\1\uffff\5\72\1\64\1\72\1\64\2\uffff\3\64\2\72\4\uffff\13\72\4\uffff\1\u009c\13\uffff\3\155\11\uffff\1\164\6\uffff\3\64\1\u00a7\1\72\1\u00a9\3\72\1\64\1\72\4\64\1\u00b3\2\72\1\u00b8\14\72\2\uffff\3\155\4\uffff\3\64\1\uffff\1\72\1\uffff\3\72\1\64\1\72\4\64\1\uffff\4\72\1\uffff\1\72\1\u00db\12\72\3\155\1\uffff\2\64\1\u00eb\3\72\1\u00ef\1\64\1\72\3\64\1\u00f5\5\72\1\uffff\3\72\1\u00fe\4\72\1\u0103\1\72\1\u0105\1\155\1\u0107\2\64\1\uffff\2\72\2\uffff\1\64\1\72\1\u010e\1\u010f\2\uffff\10\72\1\uffff\4\72\1\uffff\1\72\1\uffff\1\u011d\1\uffff\2\64\2\72\1\u0122\3\uffff\4\72\1\u0127\7\72\1\u012f\1\uffff\1\64\1\uffff\1\72\1\u0132\1\uffff\4\72\1\uffff\1\72\1\u0138\5\72\1\uffff\1\64\1\72\1\uffff\1\72\1\u0141\3\72\1\uffff\3\72\1\u0148\1\72\1\64\2\72\1\uffff\3\72\1\u0150\1\u0151\1\u0152\1\uffff\1\u0153\1\64\2\72\1\u0157\2\72\5\uffff\2\72\1\uffff\3\72\1\u015f\1\u0160\2\72\2\uffff\2\72\1\u0165\1\72\1\uffff\1\72\1\u0168\1\uffff"; + static final String DFA22_eofS = + "\u0169\uffff"; + static final String DFA22_minS = + "\1\0\12\60\2\uffff\3\60\4\uffff\7\60\1\75\2\uffff\1\75\1\76\1\46\2\uffff\1\75\1\uffff\1\44\2\60\2\0\1\uffff\1\60\1\53\1\uffff\1\101\1\uffff\1\52\2\uffff\1\60\1\uffff\5\60\1\uffff\10\60\2\uffff\5\60\4\uffff\13\60\4\uffff\1\76\13\uffff\1\162\1\141\1\145\2\uffff\2\0\1\uffff\2\0\2\uffff\1\60\6\uffff\37\60\2\uffff\1\165\1\154\1\163\1\0\1\uffff\1\0\1\uffff\3\60\1\uffff\1\60\1\uffff\11\60\1\uffff\4\60\1\uffff\14\60\1\145\2\163\1\uffff\13\60\1\41\6\60\1\uffff\13\60\1\145\3\60\1\uffff\2\60\2\uffff\1\60\1\56\2\60\2\uffff\10\60\1\uffff\4\60\1\uffff\1\60\1\uffff\1\60\1\uffff\1\60\1\41\3\60\3\uffff\15\60\1\uffff\1\60\1\uffff\2\60\1\uffff\4\60\1\uffff\7\60\1\uffff\2\60\1\uffff\5\60\1\uffff\10\60\1\uffff\6\60\1\uffff\1\60\1\41\5\60\5\uffff\2\60\1\uffff\7\60\2\uffff\4\60\1\uffff\2\60\1\uffff"; + static final String DFA22_maxS = + "\1\uffff\12\172\2\uffff\3\172\4\uffff\7\172\1\75\2\uffff\1\176\1\76\1\174\2\uffff\1\75\1\uffff\3\172\2\uffff\1\uffff\2\71\1\uffff\1\172\1\uffff\1\57\2\uffff\1\172\1\uffff\5\172\1\uffff\10\172\2\uffff\5\172\4\uffff\13\172\4\uffff\1\76\13\uffff\1\162\1\141\1\145\2\uffff\2\uffff\1\uffff\2\uffff\2\uffff\1\71\6\uffff\37\172\2\uffff\1\165\1\154\1\163\1\uffff\1\uffff\1\uffff\1\uffff\3\172\1\uffff\1\172\1\uffff\11\172\1\uffff\4\172\1\uffff\14\172\1\145\2\163\1\uffff\22\172\1\uffff\13\172\1\145\3\172\1\uffff\2\172\2\uffff\4\172\2\uffff\10\172\1\uffff\4\172\1\uffff\1\172\1\uffff\1\172\1\uffff\5\172\3\uffff\15\172\1\uffff\1\172\1\uffff\2\172\1\uffff\4\172\1\uffff\7\172\1\uffff\2\172\1\uffff\5\172\1\uffff\10\172\1\uffff\6\172\1\uffff\7\172\5\uffff\2\172\1\uffff\7\172\2\uffff\4\172\1\uffff\2\172\1\uffff"; + static final String DFA22_acceptS = + "\13\uffff\1\13\1\14\3\uffff\1\21\1\22\1\23\1\24\10\uffff\1\51\1\52\3\uffff\1\61\1\62\1\uffff\1\64\5\uffff\1\102\2\uffff\1\104\1\uffff\1\105\1\uffff\1\111\1\112\1\uffff\1\74\5\uffff\1\75\10\uffff\1\13\1\14\5\uffff\1\21\1\22\1\23\1\24\13\uffff\1\70\1\50\1\51\1\52\1\uffff\1\56\1\54\1\67\1\57\1\60\1\65\1\61\1\62\1\66\1\63\1\64\3\uffff\1\101\1\100\2\uffff\1\76\2\uffff\1\106\1\102\1\uffff\1\103\1\104\1\105\1\107\1\110\1\111\37\uffff\1\53\1\55\4\uffff\1\76\1\uffff\1\77\3\uffff\1\4\1\uffff\1\5\11\uffff\1\20\4\uffff\1\25\17\uffff\1\77\22\uffff\1\43\17\uffff\1\3\2\uffff\1\7\1\36\4\uffff\1\17\1\16\10\uffff\1\31\4\uffff\1\42\1\uffff\1\71\1\uffff\1\73\5\uffff\1\11\1\12\1\15\15\uffff\1\72\1\uffff\1\2\2\uffff\1\10\4\uffff\1\37\7\uffff\1\47\2\uffff\1\6\5\uffff\1\30\10\uffff\1\44\6\uffff\1\40\7\uffff\1\34\1\35\1\32\1\33\1\1\2\uffff\1\45\7\uffff\1\27\1\46\4\uffff\1\26\2\uffff\1\41"; + static final String DFA22_specialS = + "\1\0\47\uffff\1\4\1\3\104\uffff\1\7\1\2\1\uffff\1\10\1\6\55\uffff\1\1\1\uffff\1\5\u00c6\uffff}>"; + static final String[] DFA22_transitionS = { + "\11\62\2\61\2\62\1\61\22\62\1\61\1\43\1\50\1\62\1\45\1\55\1\41\1\51\1\20\1\22\1\35\1\54\1\21\1\54\1\23\1\60\1\52\11\53\1\33\1\62\1\36\1\37\1\34\1\44\1\62\2\46\1\3\2\46\1\15\6\46\1\16\5\46\1\1\1\12\1\46\1\10\1\2\3\46\1\13\1\62\1\14\1\56\1\57\1\62\1\26\1\47\1\27\1\25\1\47\1\17\1\47\1\30\3\47\1\7\1\11\1\4\1\47\1\31\1\47\1\6\1\5\1\24\1\32\5\47\1\62\1\42\1\62\1\40\uff81\62", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\1\63\31\65", + "\12\65\7\uffff\1\66\31\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\16\65\1\67\13\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\71\11\73\1\70\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\74\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\75\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\77\3\73\1\76\21\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\10\65\1\100\21\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\101\25\73", + "\12\65\7\uffff\21\65\1\102\10\65\4\uffff\1\65\1\uffff\32\65", + "", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\10\65\1\105\5\65\1\106\13\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\16\65\1\107\13\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\111\5\73\1\110\13\73", + "", + "", + "", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\5\73\1\116\1\73\1\117\20\73\1\120\1\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\122\3\73\1\121\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\124\4\73\1\123\2\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\125\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\30\73\1\126\1\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\13\73\1\127\16\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\130\14\73", + "\1\131", + "", + "", + "\1\135\100\uffff\1\136", + "\1\137", + "\1\142\125\uffff\1\141", + "", + "", + "\1\146", + "", + "\1\154\74\uffff\5\155\1\152\5\155\1\153\7\155\1\151\6\155", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\42\157\1\160\71\157\1\156\uffa3\157", + "\47\162\1\163\64\162\1\161\uffa3\162", + "", + "\12\165", + "\1\166\1\uffff\1\166\2\uffff\12\166", + "", + "\32\170\4\uffff\1\170\1\uffff\32\170", + "", + "\1\171\4\uffff\1\172", + "", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\23\65\1\174\6\65", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\21\65\1\175\10\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\24\65\1\176\5\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\177\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\6\73\1\u0080\23\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0081\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u0082\7\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u0083\15\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u0084\15\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\21\65\1\u0085\10\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u0086\15\73", + "\12\65\7\uffff\30\65\1\u0087\1\65\4\uffff\1\65\1\uffff\32\65", + "", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\15\65\1\u0088\14\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\24\65\1\u0089\5\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\3\65\1\u008a\26\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\5\73\1\u008b\24\73", + "\12\73\7\uffff\32\73\4\uffff\1\u008d\1\uffff\15\73\1\u008c\14\73", + "", + "", + "", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\5\73\1\u008e\24\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u008f\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\17\73\1\u0090\12\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u0091\7\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u0092\2\73\1\u0093\24\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u0094\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u0095\7\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u0096\3\73\1\u0097\10\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\17\73\1\u0098\12\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u0099\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\12\73\1\u009a\17\73", + "", + "", + "", + "", + "\1\u009b", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\1\u009d", + "\1\u009e", + "\1\u009f", + "", + "", + "\42\163\1\u00a0\71\163\1\u00a0\uffa3\163", + "\42\157\1\160\71\157\1\156\uffa3\157", + "", + "\47\163\1\u00a2\64\163\1\u00a2\uffa3\163", + "\47\162\1\u00a3\64\162\1\161\uffa3\162", + "", + "", + "\12\165", + "", + "", + "", + "", + "", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\10\65\1\u00a4\21\65", + "\12\65\7\uffff\15\65\1\u00a5\14\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\13\65\1\u00a6\16\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u00a8\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00aa\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u00ab\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u00ac\15\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\23\65\1\u00ad\6\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00ae\13\73", + "\12\65\7\uffff\10\65\1\u00af\21\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\10\65\1\u00b0\21\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\15\65\1\u00b1\14\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\4\65\1\u00b2\25\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u00b4\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\3\73\1\u00b5\1\73\1\u00b6\11\73\1\u00b7\12\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00b9\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u00ba\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u00bb\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\13\73\1\u00bc\16\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u00bd\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00be\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\24\73\1\u00bf\5\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\11\73\1\u00c0\20\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00c1\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00c2\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u00c3\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u00c4\14\73", + "", + "", + "\1\u00c5", + "\1\u00c6", + "\1\u00c7", + "\42\157\1\160\71\157\1\156\uffa3\157", + "", + "\47\162\1\u00a3\64\162\1\161\uffa3\162", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\22\65\1\u00c9\7\65", + "\12\65\7\uffff\10\65\1\u00ca\21\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\3\65\1\u00cb\26\65", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u00cc\6\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\24\73\1\u00cd\5\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u00ce\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u00cf\31\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\24\65\1\u00d0\5\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u00d1\10\73", + "\12\65\7\uffff\15\65\1\u00d2\14\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\23\65\1\u00d3\6\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\3\65\1\u00d4\26\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\13\65\1\u00d5\16\65", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u00d6\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00d7\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\24\73\1\u00d8\5\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u00d9\10\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u00da\10\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u00dc\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u00dd\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u00de\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u00df\15\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u00e0\15\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u00e1\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\13\73\1\u00e2\16\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u00e3\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u00e4\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u00e5\13\73", + "\1\u00e6", + "\1\u00e7", + "\1\u00e8", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\5\65\1\u00e9\24\65", + "\12\65\7\uffff\15\65\1\u00ea\14\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u00ec\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u00ed\10\73", + "\12\73\1\u00ee\6\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\1\u00f0\31\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\30\73\1\u00f1\1\73", + "\12\65\7\uffff\6\65\1\u00f2\23\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\4\65\1\u00f3\25\65", + "\1\u00f4\16\uffff\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u00f6\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u00f7\15\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u00f8\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u00f9\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u00fa\25\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u00fb\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u00fc\10\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u00fd\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\17\73\1\u00ff\12\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u0100\27\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\13\73\1\u0101\16\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\7\73\1\u0102\22\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\26\73\1\u0104\3\73", + "\12\155\7\uffff\32\155\4\uffff\1\155\1\uffff\32\155", + "\1\u0106", + "\12\155\7\uffff\32\155\4\uffff\1\155\1\uffff\32\155", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\10\65\1\u0108\21\65", + "\12\65\7\uffff\6\65\1\u0109\23\65\4\uffff\1\65\1\uffff\32\65", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\3\73\1\u010a\26\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u010b\27\73", + "", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\13\65\1\u010c\16\65", + "\1\u010d\1\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "", + "", + "\12\73\7\uffff\32\73\4\uffff\1\u0110\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u0111\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u0112\27\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\3\73\1\u0113\26\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u0114\15\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u0115\27\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u0116\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0117\6\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0118\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0119\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u011a\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u011b\25\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u011c\14\73", + "", + "\12\155\7\uffff\32\155\4\uffff\1\155\1\uffff\32\155", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\1\u011e\31\65", + "\1\u011f\16\uffff\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\73\7\uffff\32\73\4\uffff\1\u0120\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u0121\25\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "", + "", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\3\73\1\u0123\26\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u0124\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0125\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u0126\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0128\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\u0129\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u012a\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u012b\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\24\73\1\u012c\5\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u012d\10\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u012e\7\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\1\65\1\u0130\30\65", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u0131\27\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u0133\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u0134\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u0135\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u0136\27\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\u0137\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u0139\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u013a\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u013b\10\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\30\73\1\u013c\1\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u013d\21\73", + "", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\13\65\1\u013e\16\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u013f\13\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u0140\15\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u0142\10\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u0143\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\3\73\1\u0144\26\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u0145\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u0146\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u0147\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u0149\7\73", + "\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\4\65\1\u014a\25\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u014b\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u014c\31\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u014d\7\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u014e\6\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\16\73\1\u014f\13\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\1\u0154\16\uffff\12\65\7\uffff\32\65\4\uffff\1\65\1\uffff\32\65", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\11\73\1\u0155\20\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u0156\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u0158\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\14\73\1\u0159\15\73", + "", + "", + "", + "", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u015a\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u015b\14\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u015c\7\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u015d\31\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\2\73\1\u015e\27\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u0161\21\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\23\73\1\u0162\6\73", + "", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\15\73\1\u0163\14\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\24\73\1\u0164\5\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\21\73\1\u0166\10\73", + "", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u0167\25\73", + "\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73", + "" + }; + + static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS); + static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS); + static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS); + static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS); + static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS); + static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS); + static final short[][] DFA22_transition; + + static { + int numStates = DFA22_transitionS.length; + DFA22_transition = new short[numStates][]; + for (int i=0; i') ) {s = 28;} + + else if ( (LA22_0=='*') ) {s = 29;} + + else if ( (LA22_0=='<') ) {s = 30;} + + else if ( (LA22_0=='=') ) {s = 31;} + + else if ( (LA22_0=='~') ) {s = 32;} + + else if ( (LA22_0=='&') ) {s = 33;} + + else if ( (LA22_0=='|') ) {s = 34;} + + else if ( (LA22_0=='!') ) {s = 35;} + + else if ( (LA22_0=='?') ) {s = 36;} + + else if ( (LA22_0=='$') ) {s = 37;} + + else if ( ((LA22_0>='A' && LA22_0<='B')||(LA22_0>='D' && LA22_0<='E')||(LA22_0>='G' && LA22_0<='L')||(LA22_0>='N' && LA22_0<='R')||LA22_0=='U'||(LA22_0>='X' && LA22_0<='Z')) ) {s = 38;} + + else if ( (LA22_0=='b'||LA22_0=='e'||LA22_0=='g'||(LA22_0>='i' && LA22_0<='k')||LA22_0=='o'||LA22_0=='q'||(LA22_0>='v' && LA22_0<='z')) ) {s = 39;} + + else if ( (LA22_0=='\"') ) {s = 40;} + + else if ( (LA22_0=='\'') ) {s = 41;} + + else if ( (LA22_0=='0') ) {s = 42;} + + else if ( ((LA22_0>='1' && LA22_0<='9')) ) {s = 43;} + + else if ( (LA22_0=='+'||LA22_0=='-') ) {s = 44;} + + else if ( (LA22_0=='%') ) {s = 45;} + + else if ( (LA22_0=='^') ) {s = 46;} + + else if ( (LA22_0=='_') ) {s = 47;} + + else if ( (LA22_0=='/') ) {s = 48;} + + else if ( ((LA22_0>='\t' && LA22_0<='\n')||LA22_0=='\r'||LA22_0==' ') ) {s = 49;} + + else if ( ((LA22_0>='\u0000' && LA22_0<='\b')||(LA22_0>='\u000B' && LA22_0<='\f')||(LA22_0>='\u000E' && LA22_0<='\u001F')||LA22_0=='#'||LA22_0==';'||LA22_0=='@'||LA22_0=='\\'||LA22_0=='`'||LA22_0=='{'||LA22_0=='}'||(LA22_0>='\u007F' && LA22_0<='\uFFFF')) ) {s = 50;} + + if ( s>=0 ) return s; + break; + case 1 : + int LA22_160 = input.LA(1); + + s = -1; + if ( (LA22_160=='\"') ) {s = 112;} + + else if ( (LA22_160=='\\') ) {s = 110;} + + else if ( ((LA22_160>='\u0000' && LA22_160<='!')||(LA22_160>='#' && LA22_160<='[')||(LA22_160>=']' && LA22_160<='\uFFFF')) ) {s = 111;} + + if ( s>=0 ) return s; + break; + case 2 : + int LA22_111 = input.LA(1); + + s = -1; + if ( (LA22_111=='\"') ) {s = 112;} + + else if ( (LA22_111=='\\') ) {s = 110;} + + else if ( ((LA22_111>='\u0000' && LA22_111<='!')||(LA22_111>='#' && LA22_111<='[')||(LA22_111>=']' && LA22_111<='\uFFFF')) ) {s = 111;} + + if ( s>=0 ) return s; + break; + case 3 : + int LA22_41 = input.LA(1); + + s = -1; + if ( (LA22_41=='\\') ) {s = 113;} + + else if ( ((LA22_41>='\u0000' && LA22_41<='&')||(LA22_41>='(' && LA22_41<='[')||(LA22_41>=']' && LA22_41<='\uFFFF')) ) {s = 114;} + + else if ( (LA22_41=='\'') ) {s = 115;} + + else s = 50; + + if ( s>=0 ) return s; + break; + case 4 : + int LA22_40 = input.LA(1); + + s = -1; + if ( (LA22_40=='\\') ) {s = 110;} + + else if ( ((LA22_40>='\u0000' && LA22_40<='!')||(LA22_40>='#' && LA22_40<='[')||(LA22_40>=']' && LA22_40<='\uFFFF')) ) {s = 111;} + + else if ( (LA22_40=='\"') ) {s = 112;} + + else s = 50; + + if ( s>=0 ) return s; + break; + case 5 : + int LA22_162 = input.LA(1); + + s = -1; + if ( (LA22_162=='\'') ) {s = 163;} + + else if ( (LA22_162=='\\') ) {s = 113;} + + else if ( ((LA22_162>='\u0000' && LA22_162<='&')||(LA22_162>='(' && LA22_162<='[')||(LA22_162>=']' && LA22_162<='\uFFFF')) ) {s = 114;} + + if ( s>=0 ) return s; + break; + case 6 : + int LA22_114 = input.LA(1); + + s = -1; + if ( (LA22_114=='\'') ) {s = 163;} + + else if ( (LA22_114=='\\') ) {s = 113;} + + else if ( ((LA22_114>='\u0000' && LA22_114<='&')||(LA22_114>='(' && LA22_114<='[')||(LA22_114>=']' && LA22_114<='\uFFFF')) ) {s = 114;} + + if ( s>=0 ) return s; + break; + case 7 : + int LA22_110 = input.LA(1); + + s = -1; + if ( (LA22_110=='\"'||LA22_110=='\\') ) {s = 160;} + + else if ( ((LA22_110>='\u0000' && LA22_110<='!')||(LA22_110>='#' && LA22_110<='[')||(LA22_110>=']' && LA22_110<='\uFFFF')) ) {s = 115;} + + if ( s>=0 ) return s; + break; + case 8 : + int LA22_113 = input.LA(1); + + s = -1; + if ( (LA22_113=='\''||LA22_113=='\\') ) {s = 162;} + + else if ( ((LA22_113>='\u0000' && LA22_113<='&')||(LA22_113>='(' && LA22_113<='[')||(LA22_113>=']' && LA22_113<='\uFFFF')) ) {s = 115;} + + if ( s>=0 ) return s; + break; + } + NoViableAltException nvae = + new NoViableAltException(getDescription(), 22, _s, input); + error(nvae); + throw nvae; + } + } + + +} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguageParser.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguageParser.java new file mode 100644 index 000000000..910e3422a --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/parser/antlr/internal/InternalVampireLanguageParser.java @@ -0,0 +1,7572 @@ +package ca.mcgill.ecse.dslreasoner.parser.antlr.internal; + +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken; +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; + + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalVampireLanguageParser extends AbstractInternalAntlrParser { + public static final String[] tokenNames = new String[] { + "", "", "", "", "RULE_SINGLE_COMMENT", "RULE_LITERAL", "RULE_LOWER_WORD_ID", "RULE_SIGNED_LITERAL", "RULE_SINGLE_QUOTE", "RULE_DOLLAR_ID", "RULE_DOUBLE_DOLLAR_ID", "RULE_UPPER_WORD_ID", "RULE_DOUBLE_QUOTE", "RULE_ALPHA_NUMERIC", "RULE_SIGN", "RULE_INT", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Satisfiable!'", "'WARNING!'", "'Could'", "'not'", "'set'", "'resource'", "'limit:'", "'Virtual'", "'memory.'", "'TRYING'", "'['", "']'", "'Finite'", "'Model'", "'Found!'", "'fof'", "'('", "','", "')'", "'.'", "'tff'", "'distinct_domain'", "'finite_domain'", "'declare_'", "'axiom'", "'conjecture'", "'hypothesis'", "'definition'", "'assumption'", "'lemma'", "'theorem'", "'corollary'", "'negated_conjecture'", "'plain'", "'type'", "'fi_domain'", "'fi_functors'", "'fi_predicates'", "'unknown'", "':'", "'>'", "'*'", "'<=>'", "'=>'", "'<='", "'<~>'", "'~|'", "'~&'", "'&'", "'|'", "'!'", "'?'", "'~'", "'!='", "'='", "':='", "'$true'", "'$false'", "'$less'" + }; + public static final int T__50=50; + public static final int RULE_SIGN=14; + public static final int T__59=59; + public static final int RULE_SIGNED_LITERAL=7; + public static final int T__55=55; + public static final int T__56=56; + public static final int T__57=57; + public static final int T__58=58; + public static final int T__51=51; + public static final int RULE_DOUBLE_QUOTE=12; + public static final int T__52=52; + public static final int RULE_LITERAL=5; + public static final int T__53=53; + public static final int T__54=54; + public static final int T__60=60; + public static final int T__61=61; + public static final int RULE_ID=16; + public static final int RULE_SINGLE_QUOTE=8; + public static final int RULE_SINGLE_COMMENT=4; + public static final int T__26=26; + public static final int T__27=27; + public static final int T__28=28; + public static final int RULE_INT=15; + public static final int T__29=29; + public static final int T__22=22; + public static final int T__66=66; + public static final int RULE_ML_COMMENT=18; + public static final int T__23=23; + public static final int T__67=67; + public static final int T__24=24; + public static final int T__68=68; + public static final int T__25=25; + public static final int T__69=69; + public static final int T__62=62; + public static final int T__63=63; + public static final int T__64=64; + public static final int T__65=65; + public static final int T__70=70; + public static final int T__71=71; + public static final int T__72=72; + public static final int RULE_LOWER_WORD_ID=6; + public static final int RULE_STRING=17; + public static final int RULE_SL_COMMENT=19; + public static final int T__37=37; + public static final int T__38=38; + public static final int T__39=39; + public static final int T__33=33; + public static final int T__77=77; + public static final int T__34=34; + public static final int T__78=78; + public static final int T__35=35; + public static final int T__79=79; + public static final int T__36=36; + public static final int T__73=73; + public static final int EOF=-1; + public static final int T__30=30; + public static final int T__74=74; + public static final int T__31=31; + public static final int T__75=75; + public static final int T__32=32; + public static final int T__76=76; + public static final int T__80=80; + public static final int RULE_UPPER_WORD_ID=11; + public static final int RULE_WS=20; + public static final int RULE_DOLLAR_ID=9; + public static final int RULE_ALPHA_NUMERIC=13; + public static final int RULE_ANY_OTHER=21; + public static final int RULE_DOUBLE_DOLLAR_ID=10; + public static final int T__48=48; + public static final int T__49=49; + public static final int T__44=44; + public static final int T__45=45; + public static final int T__46=46; + public static final int T__47=47; + public static final int T__40=40; + public static final int T__41=41; + public static final int T__42=42; + public static final int T__43=43; + + // delegates + // delegators + + + public InternalVampireLanguageParser(TokenStream input) { + this(input, new RecognizerSharedState()); + } + public InternalVampireLanguageParser(TokenStream input, RecognizerSharedState state) { + super(input, state); + + } + + + public String[] getTokenNames() { return InternalVampireLanguageParser.tokenNames; } + public String getGrammarFileName() { return "InternalVampireLanguage.g"; } + + + + private VampireLanguageGrammarAccess grammarAccess; + + public InternalVampireLanguageParser(TokenStream input, VampireLanguageGrammarAccess grammarAccess) { + this(input); + this.grammarAccess = grammarAccess; + registerRules(grammarAccess.getGrammar()); + } + + @Override + protected String getFirstRuleName() { + return "VampireModel"; + } + + @Override + protected VampireLanguageGrammarAccess getGrammarAccess() { + return grammarAccess; + } + + + + + // $ANTLR start "entryRuleVampireModel" + // InternalVampireLanguage.g:64:1: entryRuleVampireModel returns [EObject current=null] : iv_ruleVampireModel= ruleVampireModel EOF ; + public final EObject entryRuleVampireModel() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVampireModel = null; + + + try { + // InternalVampireLanguage.g:64:53: (iv_ruleVampireModel= ruleVampireModel EOF ) + // InternalVampireLanguage.g:65:2: iv_ruleVampireModel= ruleVampireModel EOF + { + newCompositeNode(grammarAccess.getVampireModelRule()); + pushFollow(FOLLOW_1); + iv_ruleVampireModel=ruleVampireModel(); + + state._fsp--; + + current =iv_ruleVampireModel; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVampireModel" + + + // $ANTLR start "ruleVampireModel" + // InternalVampireLanguage.g:71:1: ruleVampireModel returns [EObject current=null] : ( ( (lv_comments_0_0= ruleVLSComment ) ) | ( (lv_confirmations_1_0= ruleVLSConfirmations ) ) | ( (lv_formulas_2_0= ruleVLSFofFormula ) ) | ( (lv_tfformulas_3_0= ruleVLSTffFormula ) ) )* ; + public final EObject ruleVampireModel() throws RecognitionException { + EObject current = null; + + EObject lv_comments_0_0 = null; + + EObject lv_confirmations_1_0 = null; + + EObject lv_formulas_2_0 = null; + + EObject lv_tfformulas_3_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:77:2: ( ( ( (lv_comments_0_0= ruleVLSComment ) ) | ( (lv_confirmations_1_0= ruleVLSConfirmations ) ) | ( (lv_formulas_2_0= ruleVLSFofFormula ) ) | ( (lv_tfformulas_3_0= ruleVLSTffFormula ) ) )* ) + // InternalVampireLanguage.g:78:2: ( ( (lv_comments_0_0= ruleVLSComment ) ) | ( (lv_confirmations_1_0= ruleVLSConfirmations ) ) | ( (lv_formulas_2_0= ruleVLSFofFormula ) ) | ( (lv_tfformulas_3_0= ruleVLSTffFormula ) ) )* + { + // InternalVampireLanguage.g:78:2: ( ( (lv_comments_0_0= ruleVLSComment ) ) | ( (lv_confirmations_1_0= ruleVLSConfirmations ) ) | ( (lv_formulas_2_0= ruleVLSFofFormula ) ) | ( (lv_tfformulas_3_0= ruleVLSTffFormula ) ) )* + loop1: + do { + int alt1=5; + switch ( input.LA(1) ) { + case RULE_SINGLE_COMMENT: + { + alt1=1; + } + break; + case 22: + case 23: + case 31: + case 34: + { + alt1=2; + } + break; + case 37: + { + alt1=3; + } + break; + case 42: + { + alt1=4; + } + break; + + } + + switch (alt1) { + case 1 : + // InternalVampireLanguage.g:79:3: ( (lv_comments_0_0= ruleVLSComment ) ) + { + // InternalVampireLanguage.g:79:3: ( (lv_comments_0_0= ruleVLSComment ) ) + // InternalVampireLanguage.g:80:4: (lv_comments_0_0= ruleVLSComment ) + { + // InternalVampireLanguage.g:80:4: (lv_comments_0_0= ruleVLSComment ) + // InternalVampireLanguage.g:81:5: lv_comments_0_0= ruleVLSComment + { + + newCompositeNode(grammarAccess.getVampireModelAccess().getCommentsVLSCommentParserRuleCall_0_0()); + + pushFollow(FOLLOW_3); + lv_comments_0_0=ruleVLSComment(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + current, + "comments", + lv_comments_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSComment"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:99:3: ( (lv_confirmations_1_0= ruleVLSConfirmations ) ) + { + // InternalVampireLanguage.g:99:3: ( (lv_confirmations_1_0= ruleVLSConfirmations ) ) + // InternalVampireLanguage.g:100:4: (lv_confirmations_1_0= ruleVLSConfirmations ) + { + // InternalVampireLanguage.g:100:4: (lv_confirmations_1_0= ruleVLSConfirmations ) + // InternalVampireLanguage.g:101:5: lv_confirmations_1_0= ruleVLSConfirmations + { + + newCompositeNode(grammarAccess.getVampireModelAccess().getConfirmationsVLSConfirmationsParserRuleCall_1_0()); + + pushFollow(FOLLOW_3); + lv_confirmations_1_0=ruleVLSConfirmations(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + current, + "confirmations", + lv_confirmations_1_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSConfirmations"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:119:3: ( (lv_formulas_2_0= ruleVLSFofFormula ) ) + { + // InternalVampireLanguage.g:119:3: ( (lv_formulas_2_0= ruleVLSFofFormula ) ) + // InternalVampireLanguage.g:120:4: (lv_formulas_2_0= ruleVLSFofFormula ) + { + // InternalVampireLanguage.g:120:4: (lv_formulas_2_0= ruleVLSFofFormula ) + // InternalVampireLanguage.g:121:5: lv_formulas_2_0= ruleVLSFofFormula + { + + newCompositeNode(grammarAccess.getVampireModelAccess().getFormulasVLSFofFormulaParserRuleCall_2_0()); + + pushFollow(FOLLOW_3); + lv_formulas_2_0=ruleVLSFofFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + current, + "formulas", + lv_formulas_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:139:3: ( (lv_tfformulas_3_0= ruleVLSTffFormula ) ) + { + // InternalVampireLanguage.g:139:3: ( (lv_tfformulas_3_0= ruleVLSTffFormula ) ) + // InternalVampireLanguage.g:140:4: (lv_tfformulas_3_0= ruleVLSTffFormula ) + { + // InternalVampireLanguage.g:140:4: (lv_tfformulas_3_0= ruleVLSTffFormula ) + // InternalVampireLanguage.g:141:5: lv_tfformulas_3_0= ruleVLSTffFormula + { + + newCompositeNode(grammarAccess.getVampireModelAccess().getTfformulasVLSTffFormulaParserRuleCall_3_0()); + + pushFollow(FOLLOW_3); + lv_tfformulas_3_0=ruleVLSTffFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVampireModelRule()); + } + add( + current, + "tfformulas", + lv_tfformulas_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + break loop1; + } + } while (true); + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVampireModel" + + + // $ANTLR start "entryRuleVLSComment" + // InternalVampireLanguage.g:162:1: entryRuleVLSComment returns [EObject current=null] : iv_ruleVLSComment= ruleVLSComment EOF ; + public final EObject entryRuleVLSComment() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSComment = null; + + + try { + // InternalVampireLanguage.g:162:51: (iv_ruleVLSComment= ruleVLSComment EOF ) + // InternalVampireLanguage.g:163:2: iv_ruleVLSComment= ruleVLSComment EOF + { + newCompositeNode(grammarAccess.getVLSCommentRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSComment=ruleVLSComment(); + + state._fsp--; + + current =iv_ruleVLSComment; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSComment" + + + // $ANTLR start "ruleVLSComment" + // InternalVampireLanguage.g:169:1: ruleVLSComment returns [EObject current=null] : ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) ; + public final EObject ruleVLSComment() throws RecognitionException { + EObject current = null; + + Token lv_comment_0_0=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:175:2: ( ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) ) + // InternalVampireLanguage.g:176:2: ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) + { + // InternalVampireLanguage.g:176:2: ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) + // InternalVampireLanguage.g:177:3: (lv_comment_0_0= RULE_SINGLE_COMMENT ) + { + // InternalVampireLanguage.g:177:3: (lv_comment_0_0= RULE_SINGLE_COMMENT ) + // InternalVampireLanguage.g:178:4: lv_comment_0_0= RULE_SINGLE_COMMENT + { + lv_comment_0_0=(Token)match(input,RULE_SINGLE_COMMENT,FOLLOW_2); + + newLeafNode(lv_comment_0_0, grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSCommentRule()); + } + setWithLastConsumed( + current, + "comment", + lv_comment_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_COMMENT"); + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSComment" + + + // $ANTLR start "entryRuleVLSConfirmations" + // InternalVampireLanguage.g:197:1: entryRuleVLSConfirmations returns [EObject current=null] : iv_ruleVLSConfirmations= ruleVLSConfirmations EOF ; + public final EObject entryRuleVLSConfirmations() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSConfirmations = null; + + + try { + // InternalVampireLanguage.g:197:57: (iv_ruleVLSConfirmations= ruleVLSConfirmations EOF ) + // InternalVampireLanguage.g:198:2: iv_ruleVLSConfirmations= ruleVLSConfirmations EOF + { + newCompositeNode(grammarAccess.getVLSConfirmationsRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSConfirmations=ruleVLSConfirmations(); + + state._fsp--; + + current =iv_ruleVLSConfirmations; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSConfirmations" + + + // $ANTLR start "ruleVLSConfirmations" + // InternalVampireLanguage.g:204:1: ruleVLSConfirmations returns [EObject current=null] : ( ( () otherlv_1= 'Satisfiable!' ) | ( () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' ) | ( () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' ) | ( () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' ) ) ; + public final EObject ruleVLSConfirmations() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token otherlv_3=null; + Token otherlv_4=null; + Token otherlv_5=null; + Token otherlv_6=null; + Token otherlv_7=null; + Token otherlv_8=null; + Token otherlv_9=null; + Token otherlv_10=null; + Token otherlv_12=null; + Token otherlv_13=null; + Token lv_name_14_0=null; + Token otherlv_15=null; + Token otherlv_17=null; + Token otherlv_18=null; + Token otherlv_19=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:210:2: ( ( ( () otherlv_1= 'Satisfiable!' ) | ( () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' ) | ( () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' ) | ( () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' ) ) ) + // InternalVampireLanguage.g:211:2: ( ( () otherlv_1= 'Satisfiable!' ) | ( () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' ) | ( () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' ) | ( () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' ) ) + { + // InternalVampireLanguage.g:211:2: ( ( () otherlv_1= 'Satisfiable!' ) | ( () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' ) | ( () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' ) | ( () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' ) ) + int alt2=4; + switch ( input.LA(1) ) { + case 22: + { + alt2=1; + } + break; + case 23: + { + alt2=2; + } + break; + case 31: + { + alt2=3; + } + break; + case 34: + { + alt2=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 2, 0, input); + + throw nvae; + } + + switch (alt2) { + case 1 : + // InternalVampireLanguage.g:212:3: ( () otherlv_1= 'Satisfiable!' ) + { + // InternalVampireLanguage.g:212:3: ( () otherlv_1= 'Satisfiable!' ) + // InternalVampireLanguage.g:213:4: () otherlv_1= 'Satisfiable!' + { + // InternalVampireLanguage.g:213:4: () + // InternalVampireLanguage.g:214:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSSatisfiableAction_0_0(), + current); + + + } + + otherlv_1=(Token)match(input,22,FOLLOW_2); + + newLeafNode(otherlv_1, grammarAccess.getVLSConfirmationsAccess().getSatisfiableKeyword_0_1()); + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:226:3: ( () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' ) + { + // InternalVampireLanguage.g:226:3: ( () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' ) + // InternalVampireLanguage.g:227:4: () otherlv_3= 'WARNING!' otherlv_4= 'Could' otherlv_5= 'not' otherlv_6= 'set' otherlv_7= 'resource' otherlv_8= 'limit:' otherlv_9= 'Virtual' otherlv_10= 'memory.' + { + // InternalVampireLanguage.g:227:4: () + // InternalVampireLanguage.g:228:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSWarningAction_1_0(), + current); + + + } + + otherlv_3=(Token)match(input,23,FOLLOW_4); + + newLeafNode(otherlv_3, grammarAccess.getVLSConfirmationsAccess().getWARNINGKeyword_1_1()); + + otherlv_4=(Token)match(input,24,FOLLOW_5); + + newLeafNode(otherlv_4, grammarAccess.getVLSConfirmationsAccess().getCouldKeyword_1_2()); + + otherlv_5=(Token)match(input,25,FOLLOW_6); + + newLeafNode(otherlv_5, grammarAccess.getVLSConfirmationsAccess().getNotKeyword_1_3()); + + otherlv_6=(Token)match(input,26,FOLLOW_7); + + newLeafNode(otherlv_6, grammarAccess.getVLSConfirmationsAccess().getSetKeyword_1_4()); + + otherlv_7=(Token)match(input,27,FOLLOW_8); + + newLeafNode(otherlv_7, grammarAccess.getVLSConfirmationsAccess().getResourceKeyword_1_5()); + + otherlv_8=(Token)match(input,28,FOLLOW_9); + + newLeafNode(otherlv_8, grammarAccess.getVLSConfirmationsAccess().getLimitKeyword_1_6()); + + otherlv_9=(Token)match(input,29,FOLLOW_10); + + newLeafNode(otherlv_9, grammarAccess.getVLSConfirmationsAccess().getVirtualKeyword_1_7()); + + otherlv_10=(Token)match(input,30,FOLLOW_2); + + newLeafNode(otherlv_10, grammarAccess.getVLSConfirmationsAccess().getMemoryKeyword_1_8()); + + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:268:3: ( () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' ) + { + // InternalVampireLanguage.g:268:3: ( () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' ) + // InternalVampireLanguage.g:269:4: () otherlv_12= 'TRYING' otherlv_13= '[' ( (lv_name_14_0= RULE_LITERAL ) ) otherlv_15= ']' + { + // InternalVampireLanguage.g:269:4: () + // InternalVampireLanguage.g:270:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSTryingAction_2_0(), + current); + + + } + + otherlv_12=(Token)match(input,31,FOLLOW_11); + + newLeafNode(otherlv_12, grammarAccess.getVLSConfirmationsAccess().getTRYINGKeyword_2_1()); + + otherlv_13=(Token)match(input,32,FOLLOW_12); + + newLeafNode(otherlv_13, grammarAccess.getVLSConfirmationsAccess().getLeftSquareBracketKeyword_2_2()); + + // InternalVampireLanguage.g:284:4: ( (lv_name_14_0= RULE_LITERAL ) ) + // InternalVampireLanguage.g:285:5: (lv_name_14_0= RULE_LITERAL ) + { + // InternalVampireLanguage.g:285:5: (lv_name_14_0= RULE_LITERAL ) + // InternalVampireLanguage.g:286:6: lv_name_14_0= RULE_LITERAL + { + lv_name_14_0=(Token)match(input,RULE_LITERAL,FOLLOW_13); + + newLeafNode(lv_name_14_0, grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSConfirmationsRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_14_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LITERAL"); + + + } + + + } + + otherlv_15=(Token)match(input,33,FOLLOW_2); + + newLeafNode(otherlv_15, grammarAccess.getVLSConfirmationsAccess().getRightSquareBracketKeyword_2_4()); + + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:308:3: ( () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' ) + { + // InternalVampireLanguage.g:308:3: ( () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' ) + // InternalVampireLanguage.g:309:4: () otherlv_17= 'Finite' otherlv_18= 'Model' otherlv_19= 'Found!' + { + // InternalVampireLanguage.g:309:4: () + // InternalVampireLanguage.g:310:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSConfirmationsAccess().getVLSFiniteModelAction_3_0(), + current); + + + } + + otherlv_17=(Token)match(input,34,FOLLOW_14); + + newLeafNode(otherlv_17, grammarAccess.getVLSConfirmationsAccess().getFiniteKeyword_3_1()); + + otherlv_18=(Token)match(input,35,FOLLOW_15); + + newLeafNode(otherlv_18, grammarAccess.getVLSConfirmationsAccess().getModelKeyword_3_2()); + + otherlv_19=(Token)match(input,36,FOLLOW_2); + + newLeafNode(otherlv_19, grammarAccess.getVLSConfirmationsAccess().getFoundKeyword_3_3()); + + + } + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSConfirmations" + + + // $ANTLR start "entryRuleVLSFofFormula" + // InternalVampireLanguage.g:333:1: entryRuleVLSFofFormula returns [EObject current=null] : iv_ruleVLSFofFormula= ruleVLSFofFormula EOF ; + public final EObject entryRuleVLSFofFormula() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSFofFormula = null; + + + try { + // InternalVampireLanguage.g:333:54: (iv_ruleVLSFofFormula= ruleVLSFofFormula EOF ) + // InternalVampireLanguage.g:334:2: iv_ruleVLSFofFormula= ruleVLSFofFormula EOF + { + newCompositeNode(grammarAccess.getVLSFofFormulaRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSFofFormula=ruleVLSFofFormula(); + + state._fsp--; + + current =iv_ruleVLSFofFormula; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSFofFormula" + + + // $ANTLR start "ruleVLSFofFormula" + // InternalVampireLanguage.g:340:1: ruleVLSFofFormula returns [EObject current=null] : (otherlv_0= 'fof' otherlv_1= '(' ( ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) ) otherlv_3= ',' ( (lv_fofRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) ; + public final EObject ruleVLSFofFormula() throws RecognitionException { + EObject current = null; + + Token otherlv_0=null; + Token otherlv_1=null; + Token lv_name_2_1=null; + Token lv_name_2_2=null; + Token lv_name_2_3=null; + Token otherlv_3=null; + Token otherlv_5=null; + Token otherlv_7=null; + Token otherlv_9=null; + Token otherlv_10=null; + AntlrDatatypeRuleToken lv_fofRole_4_0 = null; + + EObject lv_fofFormula_6_0 = null; + + EObject lv_annotations_8_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:346:2: ( (otherlv_0= 'fof' otherlv_1= '(' ( ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) ) otherlv_3= ',' ( (lv_fofRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) ) + // InternalVampireLanguage.g:347:2: (otherlv_0= 'fof' otherlv_1= '(' ( ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) ) otherlv_3= ',' ( (lv_fofRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) + { + // InternalVampireLanguage.g:347:2: (otherlv_0= 'fof' otherlv_1= '(' ( ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) ) otherlv_3= ',' ( (lv_fofRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) + // InternalVampireLanguage.g:348:3: otherlv_0= 'fof' otherlv_1= '(' ( ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) ) otherlv_3= ',' ( (lv_fofRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' + { + otherlv_0=(Token)match(input,37,FOLLOW_16); + + newLeafNode(otherlv_0, grammarAccess.getVLSFofFormulaAccess().getFofKeyword_0()); + + otherlv_1=(Token)match(input,38,FOLLOW_17); + + newLeafNode(otherlv_1, grammarAccess.getVLSFofFormulaAccess().getLeftParenthesisKeyword_1()); + + // InternalVampireLanguage.g:356:3: ( ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) ) + // InternalVampireLanguage.g:357:4: ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) + { + // InternalVampireLanguage.g:357:4: ( (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) ) + // InternalVampireLanguage.g:358:5: (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) + { + // InternalVampireLanguage.g:358:5: (lv_name_2_1= RULE_LOWER_WORD_ID | lv_name_2_2= RULE_SIGNED_LITERAL | lv_name_2_3= RULE_SINGLE_QUOTE ) + int alt3=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt3=1; + } + break; + case RULE_SIGNED_LITERAL: + { + alt3=2; + } + break; + case RULE_SINGLE_QUOTE: + { + alt3=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 3, 0, input); + + throw nvae; + } + + switch (alt3) { + case 1 : + // InternalVampireLanguage.g:359:6: lv_name_2_1= RULE_LOWER_WORD_ID + { + lv_name_2_1=(Token)match(input,RULE_LOWER_WORD_ID,FOLLOW_18); + + newLeafNode(lv_name_2_1, grammarAccess.getVLSFofFormulaAccess().getNameLOWER_WORD_IDTerminalRuleCall_2_0_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFofFormulaRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_2_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + + + } + break; + case 2 : + // InternalVampireLanguage.g:374:6: lv_name_2_2= RULE_SIGNED_LITERAL + { + lv_name_2_2=(Token)match(input,RULE_SIGNED_LITERAL,FOLLOW_18); + + newLeafNode(lv_name_2_2, grammarAccess.getVLSFofFormulaAccess().getNameSIGNED_LITERALTerminalRuleCall_2_0_1()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFofFormulaRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_2_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SIGNED_LITERAL"); + + + } + break; + case 3 : + // InternalVampireLanguage.g:389:6: lv_name_2_3= RULE_SINGLE_QUOTE + { + lv_name_2_3=(Token)match(input,RULE_SINGLE_QUOTE,FOLLOW_18); + + newLeafNode(lv_name_2_3, grammarAccess.getVLSFofFormulaAccess().getNameSINGLE_QUOTETerminalRuleCall_2_0_2()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFofFormulaRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_2_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + + + } + break; + + } + + + } + + + } + + otherlv_3=(Token)match(input,39,FOLLOW_19); + + newLeafNode(otherlv_3, grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_3()); + + // InternalVampireLanguage.g:410:3: ( (lv_fofRole_4_0= ruleVLSRole ) ) + // InternalVampireLanguage.g:411:4: (lv_fofRole_4_0= ruleVLSRole ) + { + // InternalVampireLanguage.g:411:4: (lv_fofRole_4_0= ruleVLSRole ) + // InternalVampireLanguage.g:412:5: lv_fofRole_4_0= ruleVLSRole + { + + newCompositeNode(grammarAccess.getVLSFofFormulaAccess().getFofRoleVLSRoleParserRuleCall_4_0()); + + pushFollow(FOLLOW_18); + lv_fofRole_4_0=ruleVLSRole(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSFofFormulaRule()); + } + set( + current, + "fofRole", + lv_fofRole_4_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_5=(Token)match(input,39,FOLLOW_20); + + newLeafNode(otherlv_5, grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_5()); + + // InternalVampireLanguage.g:433:3: ( (lv_fofFormula_6_0= ruleVLSTerm ) ) + // InternalVampireLanguage.g:434:4: (lv_fofFormula_6_0= ruleVLSTerm ) + { + // InternalVampireLanguage.g:434:4: (lv_fofFormula_6_0= ruleVLSTerm ) + // InternalVampireLanguage.g:435:5: lv_fofFormula_6_0= ruleVLSTerm + { + + newCompositeNode(grammarAccess.getVLSFofFormulaAccess().getFofFormulaVLSTermParserRuleCall_6_0()); + + pushFollow(FOLLOW_21); + lv_fofFormula_6_0=ruleVLSTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSFofFormulaRule()); + } + set( + current, + "fofFormula", + lv_fofFormula_6_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:452:3: (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==39) ) { + alt4=1; + } + switch (alt4) { + case 1 : + // InternalVampireLanguage.g:453:4: otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) + { + otherlv_7=(Token)match(input,39,FOLLOW_22); + + newLeafNode(otherlv_7, grammarAccess.getVLSFofFormulaAccess().getCommaKeyword_7_0()); + + // InternalVampireLanguage.g:457:4: ( (lv_annotations_8_0= ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:458:5: (lv_annotations_8_0= ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:458:5: (lv_annotations_8_0= ruleVLSAnnotation ) + // InternalVampireLanguage.g:459:6: lv_annotations_8_0= ruleVLSAnnotation + { + + newCompositeNode(grammarAccess.getVLSFofFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + + pushFollow(FOLLOW_23); + lv_annotations_8_0=ruleVLSAnnotation(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSFofFormulaRule()); + } + set( + current, + "annotations", + lv_annotations_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + otherlv_9=(Token)match(input,40,FOLLOW_24); + + newLeafNode(otherlv_9, grammarAccess.getVLSFofFormulaAccess().getRightParenthesisKeyword_8()); + + otherlv_10=(Token)match(input,41,FOLLOW_2); + + newLeafNode(otherlv_10, grammarAccess.getVLSFofFormulaAccess().getFullStopKeyword_9()); + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSFofFormula" + + + // $ANTLR start "entryRuleVLSTffFormula" + // InternalVampireLanguage.g:489:1: entryRuleVLSTffFormula returns [EObject current=null] : iv_ruleVLSTffFormula= ruleVLSTffFormula EOF ; + public final EObject entryRuleVLSTffFormula() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSTffFormula = null; + + + try { + // InternalVampireLanguage.g:489:54: (iv_ruleVLSTffFormula= ruleVLSTffFormula EOF ) + // InternalVampireLanguage.g:490:2: iv_ruleVLSTffFormula= ruleVLSTffFormula EOF + { + newCompositeNode(grammarAccess.getVLSTffFormulaRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTffFormula=ruleVLSTffFormula(); + + state._fsp--; + + current =iv_ruleVLSTffFormula; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTffFormula" + + + // $ANTLR start "ruleVLSTffFormula" + // InternalVampireLanguage.g:496:1: ruleVLSTffFormula returns [EObject current=null] : (otherlv_0= 'tff' otherlv_1= '(' ( (lv_name_2_0= ruleVLSTffName ) ) otherlv_3= ',' ( (lv_tffRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTffTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) ; + public final EObject ruleVLSTffFormula() throws RecognitionException { + EObject current = null; + + Token otherlv_0=null; + Token otherlv_1=null; + Token otherlv_3=null; + Token otherlv_5=null; + Token otherlv_7=null; + Token otherlv_9=null; + Token otherlv_10=null; + AntlrDatatypeRuleToken lv_name_2_0 = null; + + AntlrDatatypeRuleToken lv_tffRole_4_0 = null; + + EObject lv_fofFormula_6_0 = null; + + EObject lv_annotations_8_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:502:2: ( (otherlv_0= 'tff' otherlv_1= '(' ( (lv_name_2_0= ruleVLSTffName ) ) otherlv_3= ',' ( (lv_tffRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTffTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) ) + // InternalVampireLanguage.g:503:2: (otherlv_0= 'tff' otherlv_1= '(' ( (lv_name_2_0= ruleVLSTffName ) ) otherlv_3= ',' ( (lv_tffRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTffTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) + { + // InternalVampireLanguage.g:503:2: (otherlv_0= 'tff' otherlv_1= '(' ( (lv_name_2_0= ruleVLSTffName ) ) otherlv_3= ',' ( (lv_tffRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTffTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' ) + // InternalVampireLanguage.g:504:3: otherlv_0= 'tff' otherlv_1= '(' ( (lv_name_2_0= ruleVLSTffName ) ) otherlv_3= ',' ( (lv_tffRole_4_0= ruleVLSRole ) ) otherlv_5= ',' ( (lv_fofFormula_6_0= ruleVLSTffTerm ) ) (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? otherlv_9= ')' otherlv_10= '.' + { + otherlv_0=(Token)match(input,42,FOLLOW_16); + + newLeafNode(otherlv_0, grammarAccess.getVLSTffFormulaAccess().getTffKeyword_0()); + + otherlv_1=(Token)match(input,38,FOLLOW_25); + + newLeafNode(otherlv_1, grammarAccess.getVLSTffFormulaAccess().getLeftParenthesisKeyword_1()); + + // InternalVampireLanguage.g:512:3: ( (lv_name_2_0= ruleVLSTffName ) ) + // InternalVampireLanguage.g:513:4: (lv_name_2_0= ruleVLSTffName ) + { + // InternalVampireLanguage.g:513:4: (lv_name_2_0= ruleVLSTffName ) + // InternalVampireLanguage.g:514:5: lv_name_2_0= ruleVLSTffName + { + + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getNameVLSTffNameParserRuleCall_2_0()); + + pushFollow(FOLLOW_18); + lv_name_2_0=ruleVLSTffName(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + current, + "name", + lv_name_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffName"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_3=(Token)match(input,39,FOLLOW_19); + + newLeafNode(otherlv_3, grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_3()); + + // InternalVampireLanguage.g:535:3: ( (lv_tffRole_4_0= ruleVLSRole ) ) + // InternalVampireLanguage.g:536:4: (lv_tffRole_4_0= ruleVLSRole ) + { + // InternalVampireLanguage.g:536:4: (lv_tffRole_4_0= ruleVLSRole ) + // InternalVampireLanguage.g:537:5: lv_tffRole_4_0= ruleVLSRole + { + + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getTffRoleVLSRoleParserRuleCall_4_0()); + + pushFollow(FOLLOW_18); + lv_tffRole_4_0=ruleVLSRole(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + current, + "tffRole", + lv_tffRole_4_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_5=(Token)match(input,39,FOLLOW_26); + + newLeafNode(otherlv_5, grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_5()); + + // InternalVampireLanguage.g:558:3: ( (lv_fofFormula_6_0= ruleVLSTffTerm ) ) + // InternalVampireLanguage.g:559:4: (lv_fofFormula_6_0= ruleVLSTffTerm ) + { + // InternalVampireLanguage.g:559:4: (lv_fofFormula_6_0= ruleVLSTffTerm ) + // InternalVampireLanguage.g:560:5: lv_fofFormula_6_0= ruleVLSTffTerm + { + + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getFofFormulaVLSTffTermParserRuleCall_6_0()); + + pushFollow(FOLLOW_21); + lv_fofFormula_6_0=ruleVLSTffTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + current, + "fofFormula", + lv_fofFormula_6_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:577:3: (otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) )? + int alt5=2; + int LA5_0 = input.LA(1); + + if ( (LA5_0==39) ) { + alt5=1; + } + switch (alt5) { + case 1 : + // InternalVampireLanguage.g:578:4: otherlv_7= ',' ( (lv_annotations_8_0= ruleVLSAnnotation ) ) + { + otherlv_7=(Token)match(input,39,FOLLOW_22); + + newLeafNode(otherlv_7, grammarAccess.getVLSTffFormulaAccess().getCommaKeyword_7_0()); + + // InternalVampireLanguage.g:582:4: ( (lv_annotations_8_0= ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:583:5: (lv_annotations_8_0= ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:583:5: (lv_annotations_8_0= ruleVLSAnnotation ) + // InternalVampireLanguage.g:584:6: lv_annotations_8_0= ruleVLSAnnotation + { + + newCompositeNode(grammarAccess.getVLSTffFormulaAccess().getAnnotationsVLSAnnotationParserRuleCall_7_1_0()); + + pushFollow(FOLLOW_23); + lv_annotations_8_0=ruleVLSAnnotation(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSTffFormulaRule()); + } + set( + current, + "annotations", + lv_annotations_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + otherlv_9=(Token)match(input,40,FOLLOW_24); + + newLeafNode(otherlv_9, grammarAccess.getVLSTffFormulaAccess().getRightParenthesisKeyword_8()); + + otherlv_10=(Token)match(input,41,FOLLOW_2); + + newLeafNode(otherlv_10, grammarAccess.getVLSTffFormulaAccess().getFullStopKeyword_9()); + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTffFormula" + + + // $ANTLR start "entryRuleVLSTffName" + // InternalVampireLanguage.g:614:1: entryRuleVLSTffName returns [String current=null] : iv_ruleVLSTffName= ruleVLSTffName EOF ; + public final String entryRuleVLSTffName() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleVLSTffName = null; + + + try { + // InternalVampireLanguage.g:614:50: (iv_ruleVLSTffName= ruleVLSTffName EOF ) + // InternalVampireLanguage.g:615:2: iv_ruleVLSTffName= ruleVLSTffName EOF + { + newCompositeNode(grammarAccess.getVLSTffNameRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTffName=ruleVLSTffName(); + + state._fsp--; + + current =iv_ruleVLSTffName.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTffName" + + + // $ANTLR start "ruleVLSTffName" + // InternalVampireLanguage.g:621:1: ruleVLSTffName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_VLSTffDeclPred_0= ruleVLSTffDeclPred | this_VLSTffFinite_1= ruleVLSTffFinite | this_VLSTffDistinct_2= ruleVLSTffDistinct ) ; + public final AntlrDatatypeRuleToken ruleVLSTffName() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + AntlrDatatypeRuleToken this_VLSTffDeclPred_0 = null; + + AntlrDatatypeRuleToken this_VLSTffFinite_1 = null; + + AntlrDatatypeRuleToken this_VLSTffDistinct_2 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:627:2: ( (this_VLSTffDeclPred_0= ruleVLSTffDeclPred | this_VLSTffFinite_1= ruleVLSTffFinite | this_VLSTffDistinct_2= ruleVLSTffDistinct ) ) + // InternalVampireLanguage.g:628:2: (this_VLSTffDeclPred_0= ruleVLSTffDeclPred | this_VLSTffFinite_1= ruleVLSTffFinite | this_VLSTffDistinct_2= ruleVLSTffDistinct ) + { + // InternalVampireLanguage.g:628:2: (this_VLSTffDeclPred_0= ruleVLSTffDeclPred | this_VLSTffFinite_1= ruleVLSTffFinite | this_VLSTffDistinct_2= ruleVLSTffDistinct ) + int alt6=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + case 45: + { + alt6=1; + } + break; + case 44: + { + alt6=2; + } + break; + case 43: + { + alt6=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 6, 0, input); + + throw nvae; + } + + switch (alt6) { + case 1 : + // InternalVampireLanguage.g:629:3: this_VLSTffDeclPred_0= ruleVLSTffDeclPred + { + + newCompositeNode(grammarAccess.getVLSTffNameAccess().getVLSTffDeclPredParserRuleCall_0()); + + pushFollow(FOLLOW_2); + this_VLSTffDeclPred_0=ruleVLSTffDeclPred(); + + state._fsp--; + + + current.merge(this_VLSTffDeclPred_0); + + + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:640:3: this_VLSTffFinite_1= ruleVLSTffFinite + { + + newCompositeNode(grammarAccess.getVLSTffNameAccess().getVLSTffFiniteParserRuleCall_1()); + + pushFollow(FOLLOW_2); + this_VLSTffFinite_1=ruleVLSTffFinite(); + + state._fsp--; + + + current.merge(this_VLSTffFinite_1); + + + afterParserOrEnumRuleCall(); + + + } + break; + case 3 : + // InternalVampireLanguage.g:651:3: this_VLSTffDistinct_2= ruleVLSTffDistinct + { + + newCompositeNode(grammarAccess.getVLSTffNameAccess().getVLSTffDistinctParserRuleCall_2()); + + pushFollow(FOLLOW_2); + this_VLSTffDistinct_2=ruleVLSTffDistinct(); + + state._fsp--; + + + current.merge(this_VLSTffDistinct_2); + + + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTffName" + + + // $ANTLR start "entryRuleVLSTffDistinct" + // InternalVampireLanguage.g:665:1: entryRuleVLSTffDistinct returns [String current=null] : iv_ruleVLSTffDistinct= ruleVLSTffDistinct EOF ; + public final String entryRuleVLSTffDistinct() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleVLSTffDistinct = null; + + + try { + // InternalVampireLanguage.g:665:54: (iv_ruleVLSTffDistinct= ruleVLSTffDistinct EOF ) + // InternalVampireLanguage.g:666:2: iv_ruleVLSTffDistinct= ruleVLSTffDistinct EOF + { + newCompositeNode(grammarAccess.getVLSTffDistinctRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTffDistinct=ruleVLSTffDistinct(); + + state._fsp--; + + current =iv_ruleVLSTffDistinct.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTffDistinct" + + + // $ANTLR start "ruleVLSTffDistinct" + // InternalVampireLanguage.g:672:1: ruleVLSTffDistinct returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'distinct_domain' ; + public final AntlrDatatypeRuleToken ruleVLSTffDistinct() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + Token kw=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:678:2: (kw= 'distinct_domain' ) + // InternalVampireLanguage.g:679:2: kw= 'distinct_domain' + { + kw=(Token)match(input,43,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSTffDistinctAccess().getDistinct_domainKeyword()); + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTffDistinct" + + + // $ANTLR start "entryRuleVLSTffFinite" + // InternalVampireLanguage.g:687:1: entryRuleVLSTffFinite returns [String current=null] : iv_ruleVLSTffFinite= ruleVLSTffFinite EOF ; + public final String entryRuleVLSTffFinite() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleVLSTffFinite = null; + + + try { + // InternalVampireLanguage.g:687:52: (iv_ruleVLSTffFinite= ruleVLSTffFinite EOF ) + // InternalVampireLanguage.g:688:2: iv_ruleVLSTffFinite= ruleVLSTffFinite EOF + { + newCompositeNode(grammarAccess.getVLSTffFiniteRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTffFinite=ruleVLSTffFinite(); + + state._fsp--; + + current =iv_ruleVLSTffFinite.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTffFinite" + + + // $ANTLR start "ruleVLSTffFinite" + // InternalVampireLanguage.g:694:1: ruleVLSTffFinite returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'finite_domain' ; + public final AntlrDatatypeRuleToken ruleVLSTffFinite() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + Token kw=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:700:2: (kw= 'finite_domain' ) + // InternalVampireLanguage.g:701:2: kw= 'finite_domain' + { + kw=(Token)match(input,44,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSTffFiniteAccess().getFinite_domainKeyword()); + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTffFinite" + + + // $ANTLR start "entryRuleVLSTffDeclPred" + // InternalVampireLanguage.g:709:1: entryRuleVLSTffDeclPred returns [String current=null] : iv_ruleVLSTffDeclPred= ruleVLSTffDeclPred EOF ; + public final String entryRuleVLSTffDeclPred() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleVLSTffDeclPred = null; + + + try { + // InternalVampireLanguage.g:709:54: (iv_ruleVLSTffDeclPred= ruleVLSTffDeclPred EOF ) + // InternalVampireLanguage.g:710:2: iv_ruleVLSTffDeclPred= ruleVLSTffDeclPred EOF + { + newCompositeNode(grammarAccess.getVLSTffDeclPredRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTffDeclPred=ruleVLSTffDeclPred(); + + state._fsp--; + + current =iv_ruleVLSTffDeclPred.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTffDeclPred" + + + // $ANTLR start "ruleVLSTffDeclPred" + // InternalVampireLanguage.g:716:1: ruleVLSTffDeclPred returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID ) | this_LOWER_WORD_ID_2= RULE_LOWER_WORD_ID ) ; + public final AntlrDatatypeRuleToken ruleVLSTffDeclPred() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + Token kw=null; + Token this_DOLLAR_ID_1=null; + Token this_LOWER_WORD_ID_2=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:722:2: ( ( (kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID ) | this_LOWER_WORD_ID_2= RULE_LOWER_WORD_ID ) ) + // InternalVampireLanguage.g:723:2: ( (kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID ) | this_LOWER_WORD_ID_2= RULE_LOWER_WORD_ID ) + { + // InternalVampireLanguage.g:723:2: ( (kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID ) | this_LOWER_WORD_ID_2= RULE_LOWER_WORD_ID ) + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0==45) ) { + alt7=1; + } + else if ( (LA7_0==RULE_LOWER_WORD_ID) ) { + alt7=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 7, 0, input); + + throw nvae; + } + switch (alt7) { + case 1 : + // InternalVampireLanguage.g:724:3: (kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:724:3: (kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID ) + // InternalVampireLanguage.g:725:4: kw= 'declare_' this_DOLLAR_ID_1= RULE_DOLLAR_ID + { + kw=(Token)match(input,45,FOLLOW_27); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSTffDeclPredAccess().getDeclare_Keyword_0_0()); + + this_DOLLAR_ID_1=(Token)match(input,RULE_DOLLAR_ID,FOLLOW_2); + + current.merge(this_DOLLAR_ID_1); + + + newLeafNode(this_DOLLAR_ID_1, grammarAccess.getVLSTffDeclPredAccess().getDOLLAR_IDTerminalRuleCall_0_1()); + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:739:3: this_LOWER_WORD_ID_2= RULE_LOWER_WORD_ID + { + this_LOWER_WORD_ID_2=(Token)match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + + current.merge(this_LOWER_WORD_ID_2); + + + newLeafNode(this_LOWER_WORD_ID_2, grammarAccess.getVLSTffDeclPredAccess().getLOWER_WORD_IDTerminalRuleCall_1()); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTffDeclPred" + + + // $ANTLR start "entryRuleVLSRole" + // InternalVampireLanguage.g:750:1: entryRuleVLSRole returns [String current=null] : iv_ruleVLSRole= ruleVLSRole EOF ; + public final String entryRuleVLSRole() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleVLSRole = null; + + + try { + // InternalVampireLanguage.g:750:47: (iv_ruleVLSRole= ruleVLSRole EOF ) + // InternalVampireLanguage.g:751:2: iv_ruleVLSRole= ruleVLSRole EOF + { + newCompositeNode(grammarAccess.getVLSRoleRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSRole=ruleVLSRole(); + + state._fsp--; + + current =iv_ruleVLSRole.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSRole" + + + // $ANTLR start "ruleVLSRole" + // InternalVampireLanguage.g:757:1: ruleVLSRole returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'axiom' | kw= 'conjecture' | kw= 'hypothesis' | kw= 'definition' | kw= 'assumption' | kw= 'lemma' | kw= 'theorem' | kw= 'corollary' | kw= 'negated_conjecture' | kw= 'plain' | kw= 'type' | kw= 'fi_domain' | kw= 'fi_functors' | kw= 'fi_predicates' | kw= 'unknown' ) ; + public final AntlrDatatypeRuleToken ruleVLSRole() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + Token kw=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:763:2: ( (kw= 'axiom' | kw= 'conjecture' | kw= 'hypothesis' | kw= 'definition' | kw= 'assumption' | kw= 'lemma' | kw= 'theorem' | kw= 'corollary' | kw= 'negated_conjecture' | kw= 'plain' | kw= 'type' | kw= 'fi_domain' | kw= 'fi_functors' | kw= 'fi_predicates' | kw= 'unknown' ) ) + // InternalVampireLanguage.g:764:2: (kw= 'axiom' | kw= 'conjecture' | kw= 'hypothesis' | kw= 'definition' | kw= 'assumption' | kw= 'lemma' | kw= 'theorem' | kw= 'corollary' | kw= 'negated_conjecture' | kw= 'plain' | kw= 'type' | kw= 'fi_domain' | kw= 'fi_functors' | kw= 'fi_predicates' | kw= 'unknown' ) + { + // InternalVampireLanguage.g:764:2: (kw= 'axiom' | kw= 'conjecture' | kw= 'hypothesis' | kw= 'definition' | kw= 'assumption' | kw= 'lemma' | kw= 'theorem' | kw= 'corollary' | kw= 'negated_conjecture' | kw= 'plain' | kw= 'type' | kw= 'fi_domain' | kw= 'fi_functors' | kw= 'fi_predicates' | kw= 'unknown' ) + int alt8=15; + switch ( input.LA(1) ) { + case 46: + { + alt8=1; + } + break; + case 47: + { + alt8=2; + } + break; + case 48: + { + alt8=3; + } + break; + case 49: + { + alt8=4; + } + break; + case 50: + { + alt8=5; + } + break; + case 51: + { + alt8=6; + } + break; + case 52: + { + alt8=7; + } + break; + case 53: + { + alt8=8; + } + break; + case 54: + { + alt8=9; + } + break; + case 55: + { + alt8=10; + } + break; + case 56: + { + alt8=11; + } + break; + case 57: + { + alt8=12; + } + break; + case 58: + { + alt8=13; + } + break; + case 59: + { + alt8=14; + } + break; + case 60: + { + alt8=15; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 8, 0, input); + + throw nvae; + } + + switch (alt8) { + case 1 : + // InternalVampireLanguage.g:765:3: kw= 'axiom' + { + kw=(Token)match(input,46,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getAxiomKeyword_0()); + + + } + break; + case 2 : + // InternalVampireLanguage.g:771:3: kw= 'conjecture' + { + kw=(Token)match(input,47,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getConjectureKeyword_1()); + + + } + break; + case 3 : + // InternalVampireLanguage.g:777:3: kw= 'hypothesis' + { + kw=(Token)match(input,48,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getHypothesisKeyword_2()); + + + } + break; + case 4 : + // InternalVampireLanguage.g:783:3: kw= 'definition' + { + kw=(Token)match(input,49,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getDefinitionKeyword_3()); + + + } + break; + case 5 : + // InternalVampireLanguage.g:789:3: kw= 'assumption' + { + kw=(Token)match(input,50,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getAssumptionKeyword_4()); + + + } + break; + case 6 : + // InternalVampireLanguage.g:795:3: kw= 'lemma' + { + kw=(Token)match(input,51,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getLemmaKeyword_5()); + + + } + break; + case 7 : + // InternalVampireLanguage.g:801:3: kw= 'theorem' + { + kw=(Token)match(input,52,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getTheoremKeyword_6()); + + + } + break; + case 8 : + // InternalVampireLanguage.g:807:3: kw= 'corollary' + { + kw=(Token)match(input,53,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getCorollaryKeyword_7()); + + + } + break; + case 9 : + // InternalVampireLanguage.g:813:3: kw= 'negated_conjecture' + { + kw=(Token)match(input,54,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getNegated_conjectureKeyword_8()); + + + } + break; + case 10 : + // InternalVampireLanguage.g:819:3: kw= 'plain' + { + kw=(Token)match(input,55,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getPlainKeyword_9()); + + + } + break; + case 11 : + // InternalVampireLanguage.g:825:3: kw= 'type' + { + kw=(Token)match(input,56,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getTypeKeyword_10()); + + + } + break; + case 12 : + // InternalVampireLanguage.g:831:3: kw= 'fi_domain' + { + kw=(Token)match(input,57,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getFi_domainKeyword_11()); + + + } + break; + case 13 : + // InternalVampireLanguage.g:837:3: kw= 'fi_functors' + { + kw=(Token)match(input,58,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getFi_functorsKeyword_12()); + + + } + break; + case 14 : + // InternalVampireLanguage.g:843:3: kw= 'fi_predicates' + { + kw=(Token)match(input,59,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getFi_predicatesKeyword_13()); + + + } + break; + case 15 : + // InternalVampireLanguage.g:849:3: kw= 'unknown' + { + kw=(Token)match(input,60,FOLLOW_2); + + current.merge(kw); + newLeafNode(kw, grammarAccess.getVLSRoleAccess().getUnknownKeyword_14()); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSRole" + + + // $ANTLR start "entryRuleVLSAnnotation" + // InternalVampireLanguage.g:858:1: entryRuleVLSAnnotation returns [EObject current=null] : iv_ruleVLSAnnotation= ruleVLSAnnotation EOF ; + public final EObject entryRuleVLSAnnotation() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSAnnotation = null; + + + try { + // InternalVampireLanguage.g:858:54: (iv_ruleVLSAnnotation= ruleVLSAnnotation EOF ) + // InternalVampireLanguage.g:859:2: iv_ruleVLSAnnotation= ruleVLSAnnotation EOF + { + newCompositeNode(grammarAccess.getVLSAnnotationRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSAnnotation=ruleVLSAnnotation(); + + state._fsp--; + + current =iv_ruleVLSAnnotation; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSAnnotation" + + + // $ANTLR start "ruleVLSAnnotation" + // InternalVampireLanguage.g:865:1: ruleVLSAnnotation returns [EObject current=null] : ( (otherlv_0= '[' )? ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) )? (otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' )? (otherlv_5= ']' )? ) ; + public final EObject ruleVLSAnnotation() throws RecognitionException { + EObject current = null; + + Token otherlv_0=null; + Token lv_name_1_1=null; + Token lv_name_1_2=null; + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_5=null; + AntlrDatatypeRuleToken lv_name_1_3 = null; + + EObject lv_followup_3_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:871:2: ( ( (otherlv_0= '[' )? ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) )? (otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' )? (otherlv_5= ']' )? ) ) + // InternalVampireLanguage.g:872:2: ( (otherlv_0= '[' )? ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) )? (otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' )? (otherlv_5= ']' )? ) + { + // InternalVampireLanguage.g:872:2: ( (otherlv_0= '[' )? ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) )? (otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' )? (otherlv_5= ']' )? ) + // InternalVampireLanguage.g:873:3: (otherlv_0= '[' )? ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) )? (otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' )? (otherlv_5= ']' )? + { + // InternalVampireLanguage.g:873:3: (otherlv_0= '[' )? + int alt9=2; + int LA9_0 = input.LA(1); + + if ( (LA9_0==32) ) { + alt9=1; + } + switch (alt9) { + case 1 : + // InternalVampireLanguage.g:874:4: otherlv_0= '[' + { + otherlv_0=(Token)match(input,32,FOLLOW_28); + + newLeafNode(otherlv_0, grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); + + + } + break; + + } + + // InternalVampireLanguage.g:879:3: ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0==RULE_LOWER_WORD_ID||LA11_0==RULE_SINGLE_QUOTE||(LA11_0>=46 && LA11_0<=60)) ) { + alt11=1; + } + switch (alt11) { + case 1 : + // InternalVampireLanguage.g:880:4: ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) + { + // InternalVampireLanguage.g:880:4: ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) ) + // InternalVampireLanguage.g:881:5: (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) + { + // InternalVampireLanguage.g:881:5: (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= ruleVLSRole ) + int alt10=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt10=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt10=2; + } + break; + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + { + alt10=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 10, 0, input); + + throw nvae; + } + + switch (alt10) { + case 1 : + // InternalVampireLanguage.g:882:6: lv_name_1_1= RULE_LOWER_WORD_ID + { + lv_name_1_1=(Token)match(input,RULE_LOWER_WORD_ID,FOLLOW_29); + + newLeafNode(lv_name_1_1, grammarAccess.getVLSAnnotationAccess().getNameLOWER_WORD_IDTerminalRuleCall_1_0_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAnnotationRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_1_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + + + } + break; + case 2 : + // InternalVampireLanguage.g:897:6: lv_name_1_2= RULE_SINGLE_QUOTE + { + lv_name_1_2=(Token)match(input,RULE_SINGLE_QUOTE,FOLLOW_29); + + newLeafNode(lv_name_1_2, grammarAccess.getVLSAnnotationAccess().getNameSINGLE_QUOTETerminalRuleCall_1_0_1()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAnnotationRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_1_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + + + } + break; + case 3 : + // InternalVampireLanguage.g:912:6: lv_name_1_3= ruleVLSRole + { + + newCompositeNode(grammarAccess.getVLSAnnotationAccess().getNameVLSRoleParserRuleCall_1_0_2()); + + pushFollow(FOLLOW_29); + lv_name_1_3=ruleVLSRole(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAnnotationRule()); + } + set( + current, + "name", + lv_name_1_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + break; + + } + + // InternalVampireLanguage.g:930:3: (otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' )? + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0==38) ) { + alt12=1; + } + switch (alt12) { + case 1 : + // InternalVampireLanguage.g:931:4: otherlv_2= '(' ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) otherlv_4= ')' + { + otherlv_2=(Token)match(input,38,FOLLOW_30); + + newLeafNode(otherlv_2, grammarAccess.getVLSAnnotationAccess().getLeftParenthesisKeyword_2_0()); + + // InternalVampireLanguage.g:935:4: ( (lv_followup_3_0= ruleVLSAnnotationTerms ) ) + // InternalVampireLanguage.g:936:5: (lv_followup_3_0= ruleVLSAnnotationTerms ) + { + // InternalVampireLanguage.g:936:5: (lv_followup_3_0= ruleVLSAnnotationTerms ) + // InternalVampireLanguage.g:937:6: lv_followup_3_0= ruleVLSAnnotationTerms + { + + newCompositeNode(grammarAccess.getVLSAnnotationAccess().getFollowupVLSAnnotationTermsParserRuleCall_2_1_0()); + + pushFollow(FOLLOW_23); + lv_followup_3_0=ruleVLSAnnotationTerms(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAnnotationRule()); + } + set( + current, + "followup", + lv_followup_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotationTerms"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_4=(Token)match(input,40,FOLLOW_31); + + newLeafNode(otherlv_4, grammarAccess.getVLSAnnotationAccess().getRightParenthesisKeyword_2_2()); + + + } + break; + + } + + // InternalVampireLanguage.g:959:3: (otherlv_5= ']' )? + int alt13=2; + int LA13_0 = input.LA(1); + + if ( (LA13_0==33) ) { + alt13=1; + } + switch (alt13) { + case 1 : + // InternalVampireLanguage.g:960:4: otherlv_5= ']' + { + otherlv_5=(Token)match(input,33,FOLLOW_2); + + newLeafNode(otherlv_5, grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); + + + } + break; + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSAnnotation" + + + // $ANTLR start "entryRuleVLSAnnotationTerms" + // InternalVampireLanguage.g:969:1: entryRuleVLSAnnotationTerms returns [EObject current=null] : iv_ruleVLSAnnotationTerms= ruleVLSAnnotationTerms EOF ; + public final EObject entryRuleVLSAnnotationTerms() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSAnnotationTerms = null; + + + try { + // InternalVampireLanguage.g:969:59: (iv_ruleVLSAnnotationTerms= ruleVLSAnnotationTerms EOF ) + // InternalVampireLanguage.g:970:2: iv_ruleVLSAnnotationTerms= ruleVLSAnnotationTerms EOF + { + newCompositeNode(grammarAccess.getVLSAnnotationTermsRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSAnnotationTerms=ruleVLSAnnotationTerms(); + + state._fsp--; + + current =iv_ruleVLSAnnotationTerms; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSAnnotationTerms" + + + // $ANTLR start "ruleVLSAnnotationTerms" + // InternalVampireLanguage.g:976:1: ruleVLSAnnotationTerms returns [EObject current=null] : ( ( (lv_terms_0_0= ruleVLSAnnotation ) ) (otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) )* ) ; + public final EObject ruleVLSAnnotationTerms() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + EObject lv_terms_0_0 = null; + + EObject lv_terms_2_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:982:2: ( ( ( (lv_terms_0_0= ruleVLSAnnotation ) ) (otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) )* ) ) + // InternalVampireLanguage.g:983:2: ( ( (lv_terms_0_0= ruleVLSAnnotation ) ) (otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) )* ) + { + // InternalVampireLanguage.g:983:2: ( ( (lv_terms_0_0= ruleVLSAnnotation ) ) (otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) )* ) + // InternalVampireLanguage.g:984:3: ( (lv_terms_0_0= ruleVLSAnnotation ) ) (otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) )* + { + // InternalVampireLanguage.g:984:3: ( (lv_terms_0_0= ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:985:4: (lv_terms_0_0= ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:985:4: (lv_terms_0_0= ruleVLSAnnotation ) + // InternalVampireLanguage.g:986:5: lv_terms_0_0= ruleVLSAnnotation + { + + newCompositeNode(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_0_0()); + + pushFollow(FOLLOW_32); + lv_terms_0_0=ruleVLSAnnotation(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAnnotationTermsRule()); + } + add( + current, + "terms", + lv_terms_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:1003:3: (otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) )* + loop14: + do { + int alt14=2; + int LA14_0 = input.LA(1); + + if ( (LA14_0==39) ) { + alt14=1; + } + + + switch (alt14) { + case 1 : + // InternalVampireLanguage.g:1004:4: otherlv_1= ',' ( (lv_terms_2_0= ruleVLSAnnotation ) ) + { + otherlv_1=(Token)match(input,39,FOLLOW_30); + + newLeafNode(otherlv_1, grammarAccess.getVLSAnnotationTermsAccess().getCommaKeyword_1_0()); + + // InternalVampireLanguage.g:1008:4: ( (lv_terms_2_0= ruleVLSAnnotation ) ) + // InternalVampireLanguage.g:1009:5: (lv_terms_2_0= ruleVLSAnnotation ) + { + // InternalVampireLanguage.g:1009:5: (lv_terms_2_0= ruleVLSAnnotation ) + // InternalVampireLanguage.g:1010:6: lv_terms_2_0= ruleVLSAnnotation + { + + newCompositeNode(grammarAccess.getVLSAnnotationTermsAccess().getTermsVLSAnnotationParserRuleCall_1_1_0()); + + pushFollow(FOLLOW_32); + lv_terms_2_0=ruleVLSAnnotation(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAnnotationTermsRule()); + } + add( + current, + "terms", + lv_terms_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + break loop14; + } + } while (true); + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSAnnotationTerms" + + + // $ANTLR start "entryRuleVLSTffTerm" + // InternalVampireLanguage.g:1032:1: entryRuleVLSTffTerm returns [EObject current=null] : iv_ruleVLSTffTerm= ruleVLSTffTerm EOF ; + public final EObject entryRuleVLSTffTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSTffTerm = null; + + + try { + // InternalVampireLanguage.g:1032:51: (iv_ruleVLSTffTerm= ruleVLSTffTerm EOF ) + // InternalVampireLanguage.g:1033:2: iv_ruleVLSTffTerm= ruleVLSTffTerm EOF + { + newCompositeNode(grammarAccess.getVLSTffTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTffTerm=ruleVLSTffTerm(); + + state._fsp--; + + current =iv_ruleVLSTffTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTffTerm" + + + // $ANTLR start "ruleVLSTffTerm" + // InternalVampireLanguage.g:1039:1: ruleVLSTffTerm returns [EObject current=null] : (this_VLSTerm_0= ruleVLSTerm | this_VLSDeclaration_1= ruleVLSDeclaration | this_VLSCommentTerm_2= ruleVLSCommentTerm ) ; + public final EObject ruleVLSTffTerm() throws RecognitionException { + EObject current = null; + + EObject this_VLSTerm_0 = null; + + EObject this_VLSDeclaration_1 = null; + + EObject this_VLSCommentTerm_2 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1045:2: ( (this_VLSTerm_0= ruleVLSTerm | this_VLSDeclaration_1= ruleVLSDeclaration | this_VLSCommentTerm_2= ruleVLSCommentTerm ) ) + // InternalVampireLanguage.g:1046:2: (this_VLSTerm_0= ruleVLSTerm | this_VLSDeclaration_1= ruleVLSDeclaration | this_VLSCommentTerm_2= ruleVLSCommentTerm ) + { + // InternalVampireLanguage.g:1046:2: (this_VLSTerm_0= ruleVLSTerm | this_VLSDeclaration_1= ruleVLSDeclaration | this_VLSCommentTerm_2= ruleVLSCommentTerm ) + int alt15=3; + alt15 = dfa15.predict(input); + switch (alt15) { + case 1 : + // InternalVampireLanguage.g:1047:3: this_VLSTerm_0= ruleVLSTerm + { + + newCompositeNode(grammarAccess.getVLSTffTermAccess().getVLSTermParserRuleCall_0()); + + pushFollow(FOLLOW_2); + this_VLSTerm_0=ruleVLSTerm(); + + state._fsp--; + + + current = this_VLSTerm_0; + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1056:3: this_VLSDeclaration_1= ruleVLSDeclaration + { + + newCompositeNode(grammarAccess.getVLSTffTermAccess().getVLSDeclarationParserRuleCall_1()); + + pushFollow(FOLLOW_2); + this_VLSDeclaration_1=ruleVLSDeclaration(); + + state._fsp--; + + + current = this_VLSDeclaration_1; + afterParserOrEnumRuleCall(); + + + } + break; + case 3 : + // InternalVampireLanguage.g:1065:3: this_VLSCommentTerm_2= ruleVLSCommentTerm + { + + newCompositeNode(grammarAccess.getVLSTffTermAccess().getVLSCommentTermParserRuleCall_2()); + + pushFollow(FOLLOW_2); + this_VLSCommentTerm_2=ruleVLSCommentTerm(); + + state._fsp--; + + + current = this_VLSCommentTerm_2; + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTffTerm" + + + // $ANTLR start "entryRuleVLSCommentTerm" + // InternalVampireLanguage.g:1077:1: entryRuleVLSCommentTerm returns [EObject current=null] : iv_ruleVLSCommentTerm= ruleVLSCommentTerm EOF ; + public final EObject entryRuleVLSCommentTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSCommentTerm = null; + + + try { + // InternalVampireLanguage.g:1077:55: (iv_ruleVLSCommentTerm= ruleVLSCommentTerm EOF ) + // InternalVampireLanguage.g:1078:2: iv_ruleVLSCommentTerm= ruleVLSCommentTerm EOF + { + newCompositeNode(grammarAccess.getVLSCommentTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSCommentTerm=ruleVLSCommentTerm(); + + state._fsp--; + + current =iv_ruleVLSCommentTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSCommentTerm" + + + // $ANTLR start "ruleVLSCommentTerm" + // InternalVampireLanguage.g:1084:1: ruleVLSCommentTerm returns [EObject current=null] : ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) ; + public final EObject ruleVLSCommentTerm() throws RecognitionException { + EObject current = null; + + Token lv_comment_0_0=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:1090:2: ( ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) ) + // InternalVampireLanguage.g:1091:2: ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) + { + // InternalVampireLanguage.g:1091:2: ( (lv_comment_0_0= RULE_SINGLE_COMMENT ) ) + // InternalVampireLanguage.g:1092:3: (lv_comment_0_0= RULE_SINGLE_COMMENT ) + { + // InternalVampireLanguage.g:1092:3: (lv_comment_0_0= RULE_SINGLE_COMMENT ) + // InternalVampireLanguage.g:1093:4: lv_comment_0_0= RULE_SINGLE_COMMENT + { + lv_comment_0_0=(Token)match(input,RULE_SINGLE_COMMENT,FOLLOW_2); + + newLeafNode(lv_comment_0_0, grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSCommentTermRule()); + } + setWithLastConsumed( + current, + "comment", + lv_comment_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_COMMENT"); + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSCommentTerm" + + + // $ANTLR start "entryRuleVLSDeclaration" + // InternalVampireLanguage.g:1112:1: entryRuleVLSDeclaration returns [EObject current=null] : iv_ruleVLSDeclaration= ruleVLSDeclaration EOF ; + public final EObject entryRuleVLSDeclaration() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSDeclaration = null; + + + try { + // InternalVampireLanguage.g:1112:55: (iv_ruleVLSDeclaration= ruleVLSDeclaration EOF ) + // InternalVampireLanguage.g:1113:2: iv_ruleVLSDeclaration= ruleVLSDeclaration EOF + { + newCompositeNode(grammarAccess.getVLSDeclarationRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSDeclaration=ruleVLSDeclaration(); + + state._fsp--; + + current =iv_ruleVLSDeclaration; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSDeclaration" + + + // $ANTLR start "ruleVLSDeclaration" + // InternalVampireLanguage.g:1119:1: ruleVLSDeclaration returns [EObject current=null] : (this_VLSVariableDeclaration_0= ruleVLSVariableDeclaration | this_VLSOtherDeclaration_1= ruleVLSOtherDeclaration ) ; + public final EObject ruleVLSDeclaration() throws RecognitionException { + EObject current = null; + + EObject this_VLSVariableDeclaration_0 = null; + + EObject this_VLSOtherDeclaration_1 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1125:2: ( (this_VLSVariableDeclaration_0= ruleVLSVariableDeclaration | this_VLSOtherDeclaration_1= ruleVLSOtherDeclaration ) ) + // InternalVampireLanguage.g:1126:2: (this_VLSVariableDeclaration_0= ruleVLSVariableDeclaration | this_VLSOtherDeclaration_1= ruleVLSOtherDeclaration ) + { + // InternalVampireLanguage.g:1126:2: (this_VLSVariableDeclaration_0= ruleVLSVariableDeclaration | this_VLSOtherDeclaration_1= ruleVLSOtherDeclaration ) + int alt16=2; + int LA16_0 = input.LA(1); + + if ( (LA16_0==RULE_UPPER_WORD_ID) ) { + alt16=1; + } + else if ( (LA16_0==RULE_LOWER_WORD_ID||(LA16_0>=RULE_SINGLE_QUOTE && LA16_0<=RULE_DOUBLE_DOLLAR_ID)||(LA16_0>=46 && LA16_0<=60)||(LA16_0>=78 && LA16_0<=79)) ) { + alt16=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 16, 0, input); + + throw nvae; + } + switch (alt16) { + case 1 : + // InternalVampireLanguage.g:1127:3: this_VLSVariableDeclaration_0= ruleVLSVariableDeclaration + { + + newCompositeNode(grammarAccess.getVLSDeclarationAccess().getVLSVariableDeclarationParserRuleCall_0()); + + pushFollow(FOLLOW_2); + this_VLSVariableDeclaration_0=ruleVLSVariableDeclaration(); + + state._fsp--; + + + current = this_VLSVariableDeclaration_0; + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1136:3: this_VLSOtherDeclaration_1= ruleVLSOtherDeclaration + { + + newCompositeNode(grammarAccess.getVLSDeclarationAccess().getVLSOtherDeclarationParserRuleCall_1()); + + pushFollow(FOLLOW_2); + this_VLSOtherDeclaration_1=ruleVLSOtherDeclaration(); + + state._fsp--; + + + current = this_VLSOtherDeclaration_1; + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSDeclaration" + + + // $ANTLR start "entryRuleVLSOtherDeclaration" + // InternalVampireLanguage.g:1148:1: entryRuleVLSOtherDeclaration returns [EObject current=null] : iv_ruleVLSOtherDeclaration= ruleVLSOtherDeclaration EOF ; + public final EObject entryRuleVLSOtherDeclaration() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSOtherDeclaration = null; + + + try { + // InternalVampireLanguage.g:1148:60: (iv_ruleVLSOtherDeclaration= ruleVLSOtherDeclaration EOF ) + // InternalVampireLanguage.g:1149:2: iv_ruleVLSOtherDeclaration= ruleVLSOtherDeclaration EOF + { + newCompositeNode(grammarAccess.getVLSOtherDeclarationRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSOtherDeclaration=ruleVLSOtherDeclaration(); + + state._fsp--; + + current =iv_ruleVLSOtherDeclaration; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSOtherDeclaration" + + + // $ANTLR start "ruleVLSOtherDeclaration" + // InternalVampireLanguage.g:1155:1: ruleVLSOtherDeclaration returns [EObject current=null] : ( ( (lv_name_0_0= ruleVLSAtomicConstant ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) ; + public final EObject ruleVLSOtherDeclaration() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + EObject lv_name_0_0 = null; + + EObject lv_type_2_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1161:2: ( ( ( (lv_name_0_0= ruleVLSAtomicConstant ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) ) + // InternalVampireLanguage.g:1162:2: ( ( (lv_name_0_0= ruleVLSAtomicConstant ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) + { + // InternalVampireLanguage.g:1162:2: ( ( (lv_name_0_0= ruleVLSAtomicConstant ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) + // InternalVampireLanguage.g:1163:3: ( (lv_name_0_0= ruleVLSAtomicConstant ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) + { + // InternalVampireLanguage.g:1163:3: ( (lv_name_0_0= ruleVLSAtomicConstant ) ) + // InternalVampireLanguage.g:1164:4: (lv_name_0_0= ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:1164:4: (lv_name_0_0= ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:1165:5: lv_name_0_0= ruleVLSAtomicConstant + { + + newCompositeNode(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0()); + + pushFollow(FOLLOW_33); + lv_name_0_0=ruleVLSAtomicConstant(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSOtherDeclarationRule()); + } + set( + current, + "name", + lv_name_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_1=(Token)match(input,61,FOLLOW_34); + + newLeafNode(otherlv_1, grammarAccess.getVLSOtherDeclarationAccess().getColonKeyword_1()); + + // InternalVampireLanguage.g:1186:3: ( (lv_type_2_0= ruleVLSTypeDef ) ) + // InternalVampireLanguage.g:1187:4: (lv_type_2_0= ruleVLSTypeDef ) + { + // InternalVampireLanguage.g:1187:4: (lv_type_2_0= ruleVLSTypeDef ) + // InternalVampireLanguage.g:1188:5: lv_type_2_0= ruleVLSTypeDef + { + + newCompositeNode(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + + pushFollow(FOLLOW_2); + lv_type_2_0=ruleVLSTypeDef(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSOtherDeclarationRule()); + } + set( + current, + "type", + lv_type_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTypeDef"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSOtherDeclaration" + + + // $ANTLR start "entryRuleVLSVariableDeclaration" + // InternalVampireLanguage.g:1209:1: entryRuleVLSVariableDeclaration returns [EObject current=null] : iv_ruleVLSVariableDeclaration= ruleVLSVariableDeclaration EOF ; + public final EObject entryRuleVLSVariableDeclaration() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSVariableDeclaration = null; + + + try { + // InternalVampireLanguage.g:1209:63: (iv_ruleVLSVariableDeclaration= ruleVLSVariableDeclaration EOF ) + // InternalVampireLanguage.g:1210:2: iv_ruleVLSVariableDeclaration= ruleVLSVariableDeclaration EOF + { + newCompositeNode(grammarAccess.getVLSVariableDeclarationRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSVariableDeclaration=ruleVLSVariableDeclaration(); + + state._fsp--; + + current =iv_ruleVLSVariableDeclaration; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSVariableDeclaration" + + + // $ANTLR start "ruleVLSVariableDeclaration" + // InternalVampireLanguage.g:1216:1: ruleVLSVariableDeclaration returns [EObject current=null] : ( ( (lv_name_0_0= ruleVLSVariable ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) ; + public final EObject ruleVLSVariableDeclaration() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + EObject lv_name_0_0 = null; + + EObject lv_type_2_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1222:2: ( ( ( (lv_name_0_0= ruleVLSVariable ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) ) + // InternalVampireLanguage.g:1223:2: ( ( (lv_name_0_0= ruleVLSVariable ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) + { + // InternalVampireLanguage.g:1223:2: ( ( (lv_name_0_0= ruleVLSVariable ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) ) + // InternalVampireLanguage.g:1224:3: ( (lv_name_0_0= ruleVLSVariable ) ) otherlv_1= ':' ( (lv_type_2_0= ruleVLSTypeDef ) ) + { + // InternalVampireLanguage.g:1224:3: ( (lv_name_0_0= ruleVLSVariable ) ) + // InternalVampireLanguage.g:1225:4: (lv_name_0_0= ruleVLSVariable ) + { + // InternalVampireLanguage.g:1225:4: (lv_name_0_0= ruleVLSVariable ) + // InternalVampireLanguage.g:1226:5: lv_name_0_0= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0()); + + pushFollow(FOLLOW_33); + lv_name_0_0=ruleVLSVariable(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSVariableDeclarationRule()); + } + set( + current, + "name", + lv_name_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_1=(Token)match(input,61,FOLLOW_34); + + newLeafNode(otherlv_1, grammarAccess.getVLSVariableDeclarationAccess().getColonKeyword_1()); + + // InternalVampireLanguage.g:1247:3: ( (lv_type_2_0= ruleVLSTypeDef ) ) + // InternalVampireLanguage.g:1248:4: (lv_type_2_0= ruleVLSTypeDef ) + { + // InternalVampireLanguage.g:1248:4: (lv_type_2_0= ruleVLSTypeDef ) + // InternalVampireLanguage.g:1249:5: lv_type_2_0= ruleVLSTypeDef + { + + newCompositeNode(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0()); + + pushFollow(FOLLOW_2); + lv_type_2_0=ruleVLSTypeDef(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSVariableDeclarationRule()); + } + set( + current, + "type", + lv_type_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTypeDef"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSVariableDeclaration" + + + // $ANTLR start "entryRuleVLSTypeDef" + // InternalVampireLanguage.g:1270:1: entryRuleVLSTypeDef returns [EObject current=null] : iv_ruleVLSTypeDef= ruleVLSTypeDef EOF ; + public final EObject entryRuleVLSTypeDef() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSTypeDef = null; + + + try { + // InternalVampireLanguage.g:1270:51: (iv_ruleVLSTypeDef= ruleVLSTypeDef EOF ) + // InternalVampireLanguage.g:1271:2: iv_ruleVLSTypeDef= ruleVLSTypeDef EOF + { + newCompositeNode(grammarAccess.getVLSTypeDefRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTypeDef=ruleVLSTypeDef(); + + state._fsp--; + + current =iv_ruleVLSTypeDef; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTypeDef" + + + // $ANTLR start "ruleVLSTypeDef" + // InternalVampireLanguage.g:1277:1: ruleVLSTypeDef returns [EObject current=null] : ( ( (lv_typeSig_0_0= ruleVLSUnitaryTerm ) ) (otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) )? ) ; + public final EObject ruleVLSTypeDef() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + EObject lv_typeSig_0_0 = null; + + EObject lv_mapsTo_2_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1283:2: ( ( ( (lv_typeSig_0_0= ruleVLSUnitaryTerm ) ) (otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) )? ) ) + // InternalVampireLanguage.g:1284:2: ( ( (lv_typeSig_0_0= ruleVLSUnitaryTerm ) ) (otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) )? ) + { + // InternalVampireLanguage.g:1284:2: ( ( (lv_typeSig_0_0= ruleVLSUnitaryTerm ) ) (otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) )? ) + // InternalVampireLanguage.g:1285:3: ( (lv_typeSig_0_0= ruleVLSUnitaryTerm ) ) (otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) )? + { + // InternalVampireLanguage.g:1285:3: ( (lv_typeSig_0_0= ruleVLSUnitaryTerm ) ) + // InternalVampireLanguage.g:1286:4: (lv_typeSig_0_0= ruleVLSUnitaryTerm ) + { + // InternalVampireLanguage.g:1286:4: (lv_typeSig_0_0= ruleVLSUnitaryTerm ) + // InternalVampireLanguage.g:1287:5: lv_typeSig_0_0= ruleVLSUnitaryTerm + { + + newCompositeNode(grammarAccess.getVLSTypeDefAccess().getTypeSigVLSUnitaryTermParserRuleCall_0_0()); + + pushFollow(FOLLOW_35); + lv_typeSig_0_0=ruleVLSUnitaryTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSTypeDefRule()); + } + set( + current, + "typeSig", + lv_typeSig_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:1304:3: (otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) )? + int alt17=2; + int LA17_0 = input.LA(1); + + if ( (LA17_0==62) ) { + alt17=1; + } + switch (alt17) { + case 1 : + // InternalVampireLanguage.g:1305:4: otherlv_1= '>' ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) + { + otherlv_1=(Token)match(input,62,FOLLOW_36); + + newLeafNode(otherlv_1, grammarAccess.getVLSTypeDefAccess().getGreaterThanSignKeyword_1_0()); + + // InternalVampireLanguage.g:1309:4: ( (lv_mapsTo_2_0= ruleVLSAtomicConstant ) ) + // InternalVampireLanguage.g:1310:5: (lv_mapsTo_2_0= ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:1310:5: (lv_mapsTo_2_0= ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:1311:6: lv_mapsTo_2_0= ruleVLSAtomicConstant + { + + newCompositeNode(grammarAccess.getVLSTypeDefAccess().getMapsToVLSAtomicConstantParserRuleCall_1_1_0()); + + pushFollow(FOLLOW_2); + lv_mapsTo_2_0=ruleVLSAtomicConstant(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSTypeDefRule()); + } + set( + current, + "mapsTo", + lv_mapsTo_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTypeDef" + + + // $ANTLR start "entryRuleVLSUnitaryTerm" + // InternalVampireLanguage.g:1333:1: entryRuleVLSUnitaryTerm returns [EObject current=null] : iv_ruleVLSUnitaryTerm= ruleVLSUnitaryTerm EOF ; + public final EObject entryRuleVLSUnitaryTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSUnitaryTerm = null; + + + try { + // InternalVampireLanguage.g:1333:55: (iv_ruleVLSUnitaryTerm= ruleVLSUnitaryTerm EOF ) + // InternalVampireLanguage.g:1334:2: iv_ruleVLSUnitaryTerm= ruleVLSUnitaryTerm EOF + { + newCompositeNode(grammarAccess.getVLSUnitaryTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSUnitaryTerm=ruleVLSUnitaryTerm(); + + state._fsp--; + + current =iv_ruleVLSUnitaryTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSUnitaryTerm" + + + // $ANTLR start "ruleVLSUnitaryTerm" + // InternalVampireLanguage.g:1340:1: ruleVLSUnitaryTerm returns [EObject current=null] : ( ( (lv_initType_0_0= ruleVLSAtomic ) ) (otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) )* ) ; + public final EObject ruleVLSUnitaryTerm() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + EObject lv_initType_0_0 = null; + + EObject lv_nextType_2_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1346:2: ( ( ( (lv_initType_0_0= ruleVLSAtomic ) ) (otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) )* ) ) + // InternalVampireLanguage.g:1347:2: ( ( (lv_initType_0_0= ruleVLSAtomic ) ) (otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) )* ) + { + // InternalVampireLanguage.g:1347:2: ( ( (lv_initType_0_0= ruleVLSAtomic ) ) (otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) )* ) + // InternalVampireLanguage.g:1348:3: ( (lv_initType_0_0= ruleVLSAtomic ) ) (otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) )* + { + // InternalVampireLanguage.g:1348:3: ( (lv_initType_0_0= ruleVLSAtomic ) ) + // InternalVampireLanguage.g:1349:4: (lv_initType_0_0= ruleVLSAtomic ) + { + // InternalVampireLanguage.g:1349:4: (lv_initType_0_0= ruleVLSAtomic ) + // InternalVampireLanguage.g:1350:5: lv_initType_0_0= ruleVLSAtomic + { + + newCompositeNode(grammarAccess.getVLSUnitaryTermAccess().getInitTypeVLSAtomicParserRuleCall_0_0()); + + pushFollow(FOLLOW_37); + lv_initType_0_0=ruleVLSAtomic(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUnitaryTermRule()); + } + set( + current, + "initType", + lv_initType_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomic"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:1367:3: (otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) )* + loop18: + do { + int alt18=2; + int LA18_0 = input.LA(1); + + if ( (LA18_0==63) ) { + alt18=1; + } + + + switch (alt18) { + case 1 : + // InternalVampireLanguage.g:1368:4: otherlv_1= '*' ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) + { + otherlv_1=(Token)match(input,63,FOLLOW_36); + + newLeafNode(otherlv_1, grammarAccess.getVLSUnitaryTermAccess().getAsteriskKeyword_1_0()); + + // InternalVampireLanguage.g:1372:4: ( (lv_nextType_2_0= ruleVLSAtomicConstant ) ) + // InternalVampireLanguage.g:1373:5: (lv_nextType_2_0= ruleVLSAtomicConstant ) + { + // InternalVampireLanguage.g:1373:5: (lv_nextType_2_0= ruleVLSAtomicConstant ) + // InternalVampireLanguage.g:1374:6: lv_nextType_2_0= ruleVLSAtomicConstant + { + + newCompositeNode(grammarAccess.getVLSUnitaryTermAccess().getNextTypeVLSAtomicConstantParserRuleCall_1_1_0()); + + pushFollow(FOLLOW_37); + lv_nextType_2_0=ruleVLSAtomicConstant(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUnitaryTermRule()); + } + set( + current, + "nextType", + lv_nextType_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + break loop18; + } + } while (true); + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSUnitaryTerm" + + + // $ANTLR start "entryRuleVLSTerm" + // InternalVampireLanguage.g:1396:1: entryRuleVLSTerm returns [EObject current=null] : iv_ruleVLSTerm= ruleVLSTerm EOF ; + public final EObject entryRuleVLSTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSTerm = null; + + + try { + // InternalVampireLanguage.g:1396:48: (iv_ruleVLSTerm= ruleVLSTerm EOF ) + // InternalVampireLanguage.g:1397:2: iv_ruleVLSTerm= ruleVLSTerm EOF + { + newCompositeNode(grammarAccess.getVLSTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSTerm=ruleVLSTerm(); + + state._fsp--; + + current =iv_ruleVLSTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSTerm" + + + // $ANTLR start "ruleVLSTerm" + // InternalVampireLanguage.g:1403:1: ruleVLSTerm returns [EObject current=null] : this_VLSBinary_0= ruleVLSBinary ; + public final EObject ruleVLSTerm() throws RecognitionException { + EObject current = null; + + EObject this_VLSBinary_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1409:2: (this_VLSBinary_0= ruleVLSBinary ) + // InternalVampireLanguage.g:1410:2: this_VLSBinary_0= ruleVLSBinary + { + + newCompositeNode(grammarAccess.getVLSTermAccess().getVLSBinaryParserRuleCall()); + + pushFollow(FOLLOW_2); + this_VLSBinary_0=ruleVLSBinary(); + + state._fsp--; + + + current = this_VLSBinary_0; + afterParserOrEnumRuleCall(); + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSTerm" + + + // $ANTLR start "entryRuleVLSBinary" + // InternalVampireLanguage.g:1421:1: entryRuleVLSBinary returns [EObject current=null] : iv_ruleVLSBinary= ruleVLSBinary EOF ; + public final EObject entryRuleVLSBinary() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSBinary = null; + + + try { + // InternalVampireLanguage.g:1421:50: (iv_ruleVLSBinary= ruleVLSBinary EOF ) + // InternalVampireLanguage.g:1422:2: iv_ruleVLSBinary= ruleVLSBinary EOF + { + newCompositeNode(grammarAccess.getVLSBinaryRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSBinary=ruleVLSBinary(); + + state._fsp--; + + current =iv_ruleVLSBinary; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSBinary" + + + // $ANTLR start "ruleVLSBinary" + // InternalVampireLanguage.g:1428:1: ruleVLSBinary returns [EObject current=null] : (this_VLSUnitaryFormula_0= ruleVLSUnitaryFormula ( ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) | ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ | ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ )? ) ; + public final EObject ruleVLSBinary() throws RecognitionException { + EObject current = null; + + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_6=null; + Token otherlv_8=null; + Token otherlv_10=null; + Token otherlv_12=null; + Token otherlv_15=null; + Token otherlv_18=null; + EObject this_VLSUnitaryFormula_0 = null; + + EObject lv_right_13_0 = null; + + EObject lv_right_16_0 = null; + + EObject lv_right_19_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1434:2: ( (this_VLSUnitaryFormula_0= ruleVLSUnitaryFormula ( ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) | ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ | ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ )? ) ) + // InternalVampireLanguage.g:1435:2: (this_VLSUnitaryFormula_0= ruleVLSUnitaryFormula ( ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) | ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ | ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ )? ) + { + // InternalVampireLanguage.g:1435:2: (this_VLSUnitaryFormula_0= ruleVLSUnitaryFormula ( ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) | ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ | ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ )? ) + // InternalVampireLanguage.g:1436:3: this_VLSUnitaryFormula_0= ruleVLSUnitaryFormula ( ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) | ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ | ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ )? + { + + newCompositeNode(grammarAccess.getVLSBinaryAccess().getVLSUnitaryFormulaParserRuleCall_0()); + + pushFollow(FOLLOW_38); + this_VLSUnitaryFormula_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + current = this_VLSUnitaryFormula_0; + afterParserOrEnumRuleCall(); + + // InternalVampireLanguage.g:1444:3: ( ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) | ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ | ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ )? + int alt22=4; + switch ( input.LA(1) ) { + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + { + alt22=1; + } + break; + case 70: + { + alt22=2; + } + break; + case 71: + { + alt22=3; + } + break; + } + + switch (alt22) { + case 1 : + // InternalVampireLanguage.g:1445:4: ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) + { + // InternalVampireLanguage.g:1445:4: ( ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) ) + // InternalVampireLanguage.g:1446:5: ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) + { + // InternalVampireLanguage.g:1446:5: ( ( () otherlv_2= '<=>' ) | ( () otherlv_4= '=>' ) | ( () otherlv_6= '<=' ) | ( () otherlv_8= '<~>' ) | ( () otherlv_10= '~|' ) | ( () otherlv_12= '~&' ) ) + int alt19=6; + switch ( input.LA(1) ) { + case 64: + { + alt19=1; + } + break; + case 65: + { + alt19=2; + } + break; + case 66: + { + alt19=3; + } + break; + case 67: + { + alt19=4; + } + break; + case 68: + { + alt19=5; + } + break; + case 69: + { + alt19=6; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 19, 0, input); + + throw nvae; + } + + switch (alt19) { + case 1 : + // InternalVampireLanguage.g:1447:6: ( () otherlv_2= '<=>' ) + { + // InternalVampireLanguage.g:1447:6: ( () otherlv_2= '<=>' ) + // InternalVampireLanguage.g:1448:7: () otherlv_2= '<=>' + { + // InternalVampireLanguage.g:1448:7: () + // InternalVampireLanguage.g:1449:8: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0(), + current); + + + } + + otherlv_2=(Token)match(input,64,FOLLOW_20); + + newLeafNode(otherlv_2, grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1()); + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1461:6: ( () otherlv_4= '=>' ) + { + // InternalVampireLanguage.g:1461:6: ( () otherlv_4= '=>' ) + // InternalVampireLanguage.g:1462:7: () otherlv_4= '=>' + { + // InternalVampireLanguage.g:1462:7: () + // InternalVampireLanguage.g:1463:8: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0(), + current); + + + } + + otherlv_4=(Token)match(input,65,FOLLOW_20); + + newLeafNode(otherlv_4, grammarAccess.getVLSBinaryAccess().getEqualsSignGreaterThanSignKeyword_1_0_0_1_1()); + + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:1475:6: ( () otherlv_6= '<=' ) + { + // InternalVampireLanguage.g:1475:6: ( () otherlv_6= '<=' ) + // InternalVampireLanguage.g:1476:7: () otherlv_6= '<=' + { + // InternalVampireLanguage.g:1476:7: () + // InternalVampireLanguage.g:1477:8: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0(), + current); + + + } + + otherlv_6=(Token)match(input,66,FOLLOW_20); + + newLeafNode(otherlv_6, grammarAccess.getVLSBinaryAccess().getLessThanSignEqualsSignKeyword_1_0_0_2_1()); + + + } + + + } + break; + case 4 : + // InternalVampireLanguage.g:1489:6: ( () otherlv_8= '<~>' ) + { + // InternalVampireLanguage.g:1489:6: ( () otherlv_8= '<~>' ) + // InternalVampireLanguage.g:1490:7: () otherlv_8= '<~>' + { + // InternalVampireLanguage.g:1490:7: () + // InternalVampireLanguage.g:1491:8: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0(), + current); + + + } + + otherlv_8=(Token)match(input,67,FOLLOW_20); + + newLeafNode(otherlv_8, grammarAccess.getVLSBinaryAccess().getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1()); + + + } + + + } + break; + case 5 : + // InternalVampireLanguage.g:1503:6: ( () otherlv_10= '~|' ) + { + // InternalVampireLanguage.g:1503:6: ( () otherlv_10= '~|' ) + // InternalVampireLanguage.g:1504:7: () otherlv_10= '~|' + { + // InternalVampireLanguage.g:1504:7: () + // InternalVampireLanguage.g:1505:8: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0(), + current); + + + } + + otherlv_10=(Token)match(input,68,FOLLOW_20); + + newLeafNode(otherlv_10, grammarAccess.getVLSBinaryAccess().getTildeVerticalLineKeyword_1_0_0_4_1()); + + + } + + + } + break; + case 6 : + // InternalVampireLanguage.g:1517:6: ( () otherlv_12= '~&' ) + { + // InternalVampireLanguage.g:1517:6: ( () otherlv_12= '~&' ) + // InternalVampireLanguage.g:1518:7: () otherlv_12= '~&' + { + // InternalVampireLanguage.g:1518:7: () + // InternalVampireLanguage.g:1519:8: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0(), + current); + + + } + + otherlv_12=(Token)match(input,69,FOLLOW_20); + + newLeafNode(otherlv_12, grammarAccess.getVLSBinaryAccess().getTildeAmpersandKeyword_1_0_0_5_1()); + + + } + + + } + break; + + } + + // InternalVampireLanguage.g:1531:5: ( (lv_right_13_0= ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:1532:6: (lv_right_13_0= ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:1532:6: (lv_right_13_0= ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:1533:7: lv_right_13_0= ruleVLSUnitaryFormula + { + + newCompositeNode(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0()); + + pushFollow(FOLLOW_2); + lv_right_13_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSBinaryRule()); + } + set( + current, + "right", + lv_right_13_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:1552:4: ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ + { + // InternalVampireLanguage.g:1552:4: ( () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) )+ + int cnt20=0; + loop20: + do { + int alt20=2; + int LA20_0 = input.LA(1); + + if ( (LA20_0==70) ) { + alt20=1; + } + + + switch (alt20) { + case 1 : + // InternalVampireLanguage.g:1553:5: () otherlv_15= '&' ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) + { + // InternalVampireLanguage.g:1553:5: () + // InternalVampireLanguage.g:1554:6: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0(), + current); + + + } + + otherlv_15=(Token)match(input,70,FOLLOW_20); + + newLeafNode(otherlv_15, grammarAccess.getVLSBinaryAccess().getAmpersandKeyword_1_1_1()); + + // InternalVampireLanguage.g:1564:5: ( (lv_right_16_0= ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:1565:6: (lv_right_16_0= ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:1565:6: (lv_right_16_0= ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:1566:7: lv_right_16_0= ruleVLSUnitaryFormula + { + + newCompositeNode(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0()); + + pushFollow(FOLLOW_39); + lv_right_16_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSBinaryRule()); + } + set( + current, + "right", + lv_right_16_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + if ( cnt20 >= 1 ) break loop20; + EarlyExitException eee = + new EarlyExitException(20, input); + throw eee; + } + cnt20++; + } while (true); + + + } + break; + case 3 : + // InternalVampireLanguage.g:1585:4: ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ + { + // InternalVampireLanguage.g:1585:4: ( () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) )+ + int cnt21=0; + loop21: + do { + int alt21=2; + int LA21_0 = input.LA(1); + + if ( (LA21_0==71) ) { + alt21=1; + } + + + switch (alt21) { + case 1 : + // InternalVampireLanguage.g:1586:5: () otherlv_18= '|' ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) + { + // InternalVampireLanguage.g:1586:5: () + // InternalVampireLanguage.g:1587:6: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0(), + current); + + + } + + otherlv_18=(Token)match(input,71,FOLLOW_20); + + newLeafNode(otherlv_18, grammarAccess.getVLSBinaryAccess().getVerticalLineKeyword_1_2_1()); + + // InternalVampireLanguage.g:1597:5: ( (lv_right_19_0= ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:1598:6: (lv_right_19_0= ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:1598:6: (lv_right_19_0= ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:1599:7: lv_right_19_0= ruleVLSUnitaryFormula + { + + newCompositeNode(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0()); + + pushFollow(FOLLOW_40); + lv_right_19_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSBinaryRule()); + } + set( + current, + "right", + lv_right_19_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + if ( cnt21 >= 1 ) break loop21; + EarlyExitException eee = + new EarlyExitException(21, input); + throw eee; + } + cnt21++; + } while (true); + + + } + break; + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSBinary" + + + // $ANTLR start "entryRuleVLSUnitaryFormula" + // InternalVampireLanguage.g:1622:1: entryRuleVLSUnitaryFormula returns [EObject current=null] : iv_ruleVLSUnitaryFormula= ruleVLSUnitaryFormula EOF ; + public final EObject entryRuleVLSUnitaryFormula() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSUnitaryFormula = null; + + + try { + // InternalVampireLanguage.g:1622:58: (iv_ruleVLSUnitaryFormula= ruleVLSUnitaryFormula EOF ) + // InternalVampireLanguage.g:1623:2: iv_ruleVLSUnitaryFormula= ruleVLSUnitaryFormula EOF + { + newCompositeNode(grammarAccess.getVLSUnitaryFormulaRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSUnitaryFormula=ruleVLSUnitaryFormula(); + + state._fsp--; + + current =iv_ruleVLSUnitaryFormula; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSUnitaryFormula" + + + // $ANTLR start "ruleVLSUnitaryFormula" + // InternalVampireLanguage.g:1629:1: ruleVLSUnitaryFormula returns [EObject current=null] : (this_VLSUniversalQuantifier_0= ruleVLSUniversalQuantifier | this_VLSExistentialQuantifier_1= ruleVLSExistentialQuantifier | this_VLSUnaryNegation_2= ruleVLSUnaryNegation | this_VLSUnaryInfix_3= ruleVLSUnaryInfix | (otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' ) ) ; + public final EObject ruleVLSUnitaryFormula() throws RecognitionException { + EObject current = null; + + Token otherlv_4=null; + Token otherlv_6=null; + EObject this_VLSUniversalQuantifier_0 = null; + + EObject this_VLSExistentialQuantifier_1 = null; + + EObject this_VLSUnaryNegation_2 = null; + + EObject this_VLSUnaryInfix_3 = null; + + EObject this_VLSTerm_5 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1635:2: ( (this_VLSUniversalQuantifier_0= ruleVLSUniversalQuantifier | this_VLSExistentialQuantifier_1= ruleVLSExistentialQuantifier | this_VLSUnaryNegation_2= ruleVLSUnaryNegation | this_VLSUnaryInfix_3= ruleVLSUnaryInfix | (otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' ) ) ) + // InternalVampireLanguage.g:1636:2: (this_VLSUniversalQuantifier_0= ruleVLSUniversalQuantifier | this_VLSExistentialQuantifier_1= ruleVLSExistentialQuantifier | this_VLSUnaryNegation_2= ruleVLSUnaryNegation | this_VLSUnaryInfix_3= ruleVLSUnaryInfix | (otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' ) ) + { + // InternalVampireLanguage.g:1636:2: (this_VLSUniversalQuantifier_0= ruleVLSUniversalQuantifier | this_VLSExistentialQuantifier_1= ruleVLSExistentialQuantifier | this_VLSUnaryNegation_2= ruleVLSUnaryNegation | this_VLSUnaryInfix_3= ruleVLSUnaryInfix | (otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' ) ) + int alt23=5; + switch ( input.LA(1) ) { + case 72: + { + alt23=1; + } + break; + case 73: + { + alt23=2; + } + break; + case 74: + { + alt23=3; + } + break; + case RULE_LOWER_WORD_ID: + case RULE_SIGNED_LITERAL: + case RULE_SINGLE_QUOTE: + case RULE_DOLLAR_ID: + case RULE_DOUBLE_DOLLAR_ID: + case RULE_UPPER_WORD_ID: + case RULE_DOUBLE_QUOTE: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 78: + case 79: + case 80: + { + alt23=4; + } + break; + case 38: + { + alt23=5; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 23, 0, input); + + throw nvae; + } + + switch (alt23) { + case 1 : + // InternalVampireLanguage.g:1637:3: this_VLSUniversalQuantifier_0= ruleVLSUniversalQuantifier + { + + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUniversalQuantifierParserRuleCall_0()); + + pushFollow(FOLLOW_2); + this_VLSUniversalQuantifier_0=ruleVLSUniversalQuantifier(); + + state._fsp--; + + + current = this_VLSUniversalQuantifier_0; + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1646:3: this_VLSExistentialQuantifier_1= ruleVLSExistentialQuantifier + { + + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSExistentialQuantifierParserRuleCall_1()); + + pushFollow(FOLLOW_2); + this_VLSExistentialQuantifier_1=ruleVLSExistentialQuantifier(); + + state._fsp--; + + + current = this_VLSExistentialQuantifier_1; + afterParserOrEnumRuleCall(); + + + } + break; + case 3 : + // InternalVampireLanguage.g:1655:3: this_VLSUnaryNegation_2= ruleVLSUnaryNegation + { + + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryNegationParserRuleCall_2()); + + pushFollow(FOLLOW_2); + this_VLSUnaryNegation_2=ruleVLSUnaryNegation(); + + state._fsp--; + + + current = this_VLSUnaryNegation_2; + afterParserOrEnumRuleCall(); + + + } + break; + case 4 : + // InternalVampireLanguage.g:1664:3: this_VLSUnaryInfix_3= ruleVLSUnaryInfix + { + + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSUnaryInfixParserRuleCall_3()); + + pushFollow(FOLLOW_2); + this_VLSUnaryInfix_3=ruleVLSUnaryInfix(); + + state._fsp--; + + + current = this_VLSUnaryInfix_3; + afterParserOrEnumRuleCall(); + + + } + break; + case 5 : + // InternalVampireLanguage.g:1673:3: (otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' ) + { + // InternalVampireLanguage.g:1673:3: (otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' ) + // InternalVampireLanguage.g:1674:4: otherlv_4= '(' this_VLSTerm_5= ruleVLSTerm otherlv_6= ')' + { + otherlv_4=(Token)match(input,38,FOLLOW_20); + + newLeafNode(otherlv_4, grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); + + + newCompositeNode(grammarAccess.getVLSUnitaryFormulaAccess().getVLSTermParserRuleCall_4_1()); + + pushFollow(FOLLOW_23); + this_VLSTerm_5=ruleVLSTerm(); + + state._fsp--; + + + current = this_VLSTerm_5; + afterParserOrEnumRuleCall(); + + otherlv_6=(Token)match(input,40,FOLLOW_2); + + newLeafNode(otherlv_6, grammarAccess.getVLSUnitaryFormulaAccess().getRightParenthesisKeyword_4_2()); + + + } + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSUnitaryFormula" + + + // $ANTLR start "entryRuleVLSUniversalQuantifier" + // InternalVampireLanguage.g:1695:1: entryRuleVLSUniversalQuantifier returns [EObject current=null] : iv_ruleVLSUniversalQuantifier= ruleVLSUniversalQuantifier EOF ; + public final EObject entryRuleVLSUniversalQuantifier() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSUniversalQuantifier = null; + + + try { + // InternalVampireLanguage.g:1695:63: (iv_ruleVLSUniversalQuantifier= ruleVLSUniversalQuantifier EOF ) + // InternalVampireLanguage.g:1696:2: iv_ruleVLSUniversalQuantifier= ruleVLSUniversalQuantifier EOF + { + newCompositeNode(grammarAccess.getVLSUniversalQuantifierRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSUniversalQuantifier=ruleVLSUniversalQuantifier(); + + state._fsp--; + + current =iv_ruleVLSUniversalQuantifier; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSUniversalQuantifier" + + + // $ANTLR start "ruleVLSUniversalQuantifier" + // InternalVampireLanguage.g:1702:1: ruleVLSUniversalQuantifier returns [EObject current=null] : ( () (otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) ; + public final EObject ruleVLSUniversalQuantifier() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_6=null; + Token otherlv_7=null; + EObject lv_variables_3_1 = null; + + EObject lv_variables_3_2 = null; + + EObject lv_variables_5_1 = null; + + EObject lv_variables_5_2 = null; + + EObject lv_operand_8_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1708:2: ( ( () (otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) ) + // InternalVampireLanguage.g:1709:2: ( () (otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) + { + // InternalVampireLanguage.g:1709:2: ( () (otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) + // InternalVampireLanguage.g:1710:3: () (otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) + { + // InternalVampireLanguage.g:1710:3: () + // InternalVampireLanguage.g:1711:4: + { + + current = forceCreateModelElement( + grammarAccess.getVLSUniversalQuantifierAccess().getVLSUniversalQuantifierAction_0(), + current); + + + } + + // InternalVampireLanguage.g:1717:3: (otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) + // InternalVampireLanguage.g:1718:4: otherlv_1= '!' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' + { + otherlv_1=(Token)match(input,72,FOLLOW_11); + + newLeafNode(otherlv_1, grammarAccess.getVLSUniversalQuantifierAccess().getExclamationMarkKeyword_1_0()); + + otherlv_2=(Token)match(input,32,FOLLOW_41); + + newLeafNode(otherlv_2, grammarAccess.getVLSUniversalQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + + // InternalVampireLanguage.g:1726:4: ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) + // InternalVampireLanguage.g:1727:5: ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) + { + // InternalVampireLanguage.g:1727:5: ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) + // InternalVampireLanguage.g:1728:6: (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1728:6: (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) + int alt24=2; + int LA24_0 = input.LA(1); + + if ( (LA24_0==RULE_UPPER_WORD_ID) ) { + int LA24_1 = input.LA(2); + + if ( (LA24_1==33||LA24_1==39) ) { + alt24=1; + } + else if ( (LA24_1==61) ) { + alt24=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 24, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 24, 0, input); + + throw nvae; + } + switch (alt24) { + case 1 : + // InternalVampireLanguage.g:1729:7: lv_variables_3_1= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + + pushFollow(FOLLOW_42); + lv_variables_3_1=ruleVLSVariable(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + current, + "variables", + lv_variables_3_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1745:7: lv_variables_3_2= ruleVLSVariableDeclaration + { + + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + + pushFollow(FOLLOW_42); + lv_variables_3_2=ruleVLSVariableDeclaration(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + current, + "variables", + lv_variables_3_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + + // InternalVampireLanguage.g:1763:4: (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* + loop26: + do { + int alt26=2; + int LA26_0 = input.LA(1); + + if ( (LA26_0==39) ) { + alt26=1; + } + + + switch (alt26) { + case 1 : + // InternalVampireLanguage.g:1764:5: otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) + { + otherlv_4=(Token)match(input,39,FOLLOW_41); + + newLeafNode(otherlv_4, grammarAccess.getVLSUniversalQuantifierAccess().getCommaKeyword_1_3_0()); + + // InternalVampireLanguage.g:1768:5: ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) + // InternalVampireLanguage.g:1769:6: ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) + { + // InternalVampireLanguage.g:1769:6: ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) + // InternalVampireLanguage.g:1770:7: (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1770:7: (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) + int alt25=2; + int LA25_0 = input.LA(1); + + if ( (LA25_0==RULE_UPPER_WORD_ID) ) { + int LA25_1 = input.LA(2); + + if ( (LA25_1==33||LA25_1==39) ) { + alt25=1; + } + else if ( (LA25_1==61) ) { + alt25=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 25, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 25, 0, input); + + throw nvae; + } + switch (alt25) { + case 1 : + // InternalVampireLanguage.g:1771:8: lv_variables_5_1= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + + pushFollow(FOLLOW_42); + lv_variables_5_1=ruleVLSVariable(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + current, + "variables", + lv_variables_5_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1787:8: lv_variables_5_2= ruleVLSVariableDeclaration + { + + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + + pushFollow(FOLLOW_42); + lv_variables_5_2=ruleVLSVariableDeclaration(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + add( + current, + "variables", + lv_variables_5_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + + + } + break; + + default : + break loop26; + } + } while (true); + + otherlv_6=(Token)match(input,33,FOLLOW_33); + + newLeafNode(otherlv_6, grammarAccess.getVLSUniversalQuantifierAccess().getRightSquareBracketKeyword_1_4()); + + otherlv_7=(Token)match(input,61,FOLLOW_20); + + newLeafNode(otherlv_7, grammarAccess.getVLSUniversalQuantifierAccess().getColonKeyword_1_5()); + + + } + + // InternalVampireLanguage.g:1815:3: ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:1816:4: (lv_operand_8_0= ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:1816:4: (lv_operand_8_0= ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:1817:5: lv_operand_8_0= ruleVLSUnitaryFormula + { + + newCompositeNode(grammarAccess.getVLSUniversalQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + + pushFollow(FOLLOW_2); + lv_operand_8_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUniversalQuantifierRule()); + } + set( + current, + "operand", + lv_operand_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSUniversalQuantifier" + + + // $ANTLR start "entryRuleVLSExistentialQuantifier" + // InternalVampireLanguage.g:1838:1: entryRuleVLSExistentialQuantifier returns [EObject current=null] : iv_ruleVLSExistentialQuantifier= ruleVLSExistentialQuantifier EOF ; + public final EObject entryRuleVLSExistentialQuantifier() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSExistentialQuantifier = null; + + + try { + // InternalVampireLanguage.g:1838:65: (iv_ruleVLSExistentialQuantifier= ruleVLSExistentialQuantifier EOF ) + // InternalVampireLanguage.g:1839:2: iv_ruleVLSExistentialQuantifier= ruleVLSExistentialQuantifier EOF + { + newCompositeNode(grammarAccess.getVLSExistentialQuantifierRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSExistentialQuantifier=ruleVLSExistentialQuantifier(); + + state._fsp--; + + current =iv_ruleVLSExistentialQuantifier; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSExistentialQuantifier" + + + // $ANTLR start "ruleVLSExistentialQuantifier" + // InternalVampireLanguage.g:1845:1: ruleVLSExistentialQuantifier returns [EObject current=null] : ( () (otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) ; + public final EObject ruleVLSExistentialQuantifier() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_6=null; + Token otherlv_7=null; + EObject lv_variables_3_1 = null; + + EObject lv_variables_3_2 = null; + + EObject lv_variables_5_1 = null; + + EObject lv_variables_5_2 = null; + + EObject lv_operand_8_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1851:2: ( ( () (otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) ) + // InternalVampireLanguage.g:1852:2: ( () (otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) + { + // InternalVampireLanguage.g:1852:2: ( () (otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) ) + // InternalVampireLanguage.g:1853:3: () (otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) + { + // InternalVampireLanguage.g:1853:3: () + // InternalVampireLanguage.g:1854:4: + { + + current = forceCreateModelElement( + grammarAccess.getVLSExistentialQuantifierAccess().getVLSExistentialQuantifierAction_0(), + current); + + + } + + // InternalVampireLanguage.g:1860:3: (otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' ) + // InternalVampireLanguage.g:1861:4: otherlv_1= '?' otherlv_2= '[' ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* otherlv_6= ']' otherlv_7= ':' + { + otherlv_1=(Token)match(input,73,FOLLOW_11); + + newLeafNode(otherlv_1, grammarAccess.getVLSExistentialQuantifierAccess().getQuestionMarkKeyword_1_0()); + + otherlv_2=(Token)match(input,32,FOLLOW_41); + + newLeafNode(otherlv_2, grammarAccess.getVLSExistentialQuantifierAccess().getLeftSquareBracketKeyword_1_1()); + + // InternalVampireLanguage.g:1869:4: ( ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) ) + // InternalVampireLanguage.g:1870:5: ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) + { + // InternalVampireLanguage.g:1870:5: ( (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) ) + // InternalVampireLanguage.g:1871:6: (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1871:6: (lv_variables_3_1= ruleVLSVariable | lv_variables_3_2= ruleVLSVariableDeclaration ) + int alt27=2; + int LA27_0 = input.LA(1); + + if ( (LA27_0==RULE_UPPER_WORD_ID) ) { + int LA27_1 = input.LA(2); + + if ( (LA27_1==33||LA27_1==39) ) { + alt27=1; + } + else if ( (LA27_1==61) ) { + alt27=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 27, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 27, 0, input); + + throw nvae; + } + switch (alt27) { + case 1 : + // InternalVampireLanguage.g:1872:7: lv_variables_3_1= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_2_0_0()); + + pushFollow(FOLLOW_42); + lv_variables_3_1=ruleVLSVariable(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + current, + "variables", + lv_variables_3_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1888:7: lv_variables_3_2= ruleVLSVariableDeclaration + { + + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1()); + + pushFollow(FOLLOW_42); + lv_variables_3_2=ruleVLSVariableDeclaration(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + current, + "variables", + lv_variables_3_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + + // InternalVampireLanguage.g:1906:4: (otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) )* + loop29: + do { + int alt29=2; + int LA29_0 = input.LA(1); + + if ( (LA29_0==39) ) { + alt29=1; + } + + + switch (alt29) { + case 1 : + // InternalVampireLanguage.g:1907:5: otherlv_4= ',' ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) + { + otherlv_4=(Token)match(input,39,FOLLOW_41); + + newLeafNode(otherlv_4, grammarAccess.getVLSExistentialQuantifierAccess().getCommaKeyword_1_3_0()); + + // InternalVampireLanguage.g:1911:5: ( ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) ) + // InternalVampireLanguage.g:1912:6: ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) + { + // InternalVampireLanguage.g:1912:6: ( (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) ) + // InternalVampireLanguage.g:1913:7: (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) + { + // InternalVampireLanguage.g:1913:7: (lv_variables_5_1= ruleVLSVariable | lv_variables_5_2= ruleVLSVariableDeclaration ) + int alt28=2; + int LA28_0 = input.LA(1); + + if ( (LA28_0==RULE_UPPER_WORD_ID) ) { + int LA28_1 = input.LA(2); + + if ( (LA28_1==33||LA28_1==39) ) { + alt28=1; + } + else if ( (LA28_1==61) ) { + alt28=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 28, 1, input); + + throw nvae; + } + } + else { + NoViableAltException nvae = + new NoViableAltException("", 28, 0, input); + + throw nvae; + } + switch (alt28) { + case 1 : + // InternalVampireLanguage.g:1914:8: lv_variables_5_1= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableParserRuleCall_1_3_1_0_0()); + + pushFollow(FOLLOW_42); + lv_variables_5_1=ruleVLSVariable(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + current, + "variables", + lv_variables_5_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:1930:8: lv_variables_5_2= ruleVLSVariableDeclaration + { + + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1()); + + pushFollow(FOLLOW_42); + lv_variables_5_2=ruleVLSVariableDeclaration(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + add( + current, + "variables", + lv_variables_5_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + + + } + break; + + default : + break loop29; + } + } while (true); + + otherlv_6=(Token)match(input,33,FOLLOW_33); + + newLeafNode(otherlv_6, grammarAccess.getVLSExistentialQuantifierAccess().getRightSquareBracketKeyword_1_4()); + + otherlv_7=(Token)match(input,61,FOLLOW_20); + + newLeafNode(otherlv_7, grammarAccess.getVLSExistentialQuantifierAccess().getColonKeyword_1_5()); + + + } + + // InternalVampireLanguage.g:1958:3: ( (lv_operand_8_0= ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:1959:4: (lv_operand_8_0= ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:1959:4: (lv_operand_8_0= ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:1960:5: lv_operand_8_0= ruleVLSUnitaryFormula + { + + newCompositeNode(grammarAccess.getVLSExistentialQuantifierAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + + pushFollow(FOLLOW_2); + lv_operand_8_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSExistentialQuantifierRule()); + } + set( + current, + "operand", + lv_operand_8_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSExistentialQuantifier" + + + // $ANTLR start "entryRuleVLSUnaryNegation" + // InternalVampireLanguage.g:1981:1: entryRuleVLSUnaryNegation returns [EObject current=null] : iv_ruleVLSUnaryNegation= ruleVLSUnaryNegation EOF ; + public final EObject entryRuleVLSUnaryNegation() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSUnaryNegation = null; + + + try { + // InternalVampireLanguage.g:1981:57: (iv_ruleVLSUnaryNegation= ruleVLSUnaryNegation EOF ) + // InternalVampireLanguage.g:1982:2: iv_ruleVLSUnaryNegation= ruleVLSUnaryNegation EOF + { + newCompositeNode(grammarAccess.getVLSUnaryNegationRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSUnaryNegation=ruleVLSUnaryNegation(); + + state._fsp--; + + current =iv_ruleVLSUnaryNegation; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSUnaryNegation" + + + // $ANTLR start "ruleVLSUnaryNegation" + // InternalVampireLanguage.g:1988:1: ruleVLSUnaryNegation returns [EObject current=null] : ( () otherlv_1= '~' ( (lv_operand_2_0= ruleVLSUnitaryFormula ) ) ) ; + public final EObject ruleVLSUnaryNegation() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + EObject lv_operand_2_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:1994:2: ( ( () otherlv_1= '~' ( (lv_operand_2_0= ruleVLSUnitaryFormula ) ) ) ) + // InternalVampireLanguage.g:1995:2: ( () otherlv_1= '~' ( (lv_operand_2_0= ruleVLSUnitaryFormula ) ) ) + { + // InternalVampireLanguage.g:1995:2: ( () otherlv_1= '~' ( (lv_operand_2_0= ruleVLSUnitaryFormula ) ) ) + // InternalVampireLanguage.g:1996:3: () otherlv_1= '~' ( (lv_operand_2_0= ruleVLSUnitaryFormula ) ) + { + // InternalVampireLanguage.g:1996:3: () + // InternalVampireLanguage.g:1997:4: + { + + current = forceCreateModelElement( + grammarAccess.getVLSUnaryNegationAccess().getVLSUnaryNegationAction_0(), + current); + + + } + + otherlv_1=(Token)match(input,74,FOLLOW_20); + + newLeafNode(otherlv_1, grammarAccess.getVLSUnaryNegationAccess().getTildeKeyword_1()); + + // InternalVampireLanguage.g:2007:3: ( (lv_operand_2_0= ruleVLSUnitaryFormula ) ) + // InternalVampireLanguage.g:2008:4: (lv_operand_2_0= ruleVLSUnitaryFormula ) + { + // InternalVampireLanguage.g:2008:4: (lv_operand_2_0= ruleVLSUnitaryFormula ) + // InternalVampireLanguage.g:2009:5: lv_operand_2_0= ruleVLSUnitaryFormula + { + + newCompositeNode(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0()); + + pushFollow(FOLLOW_2); + lv_operand_2_0=ruleVLSUnitaryFormula(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUnaryNegationRule()); + } + set( + current, + "operand", + lv_operand_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSUnaryNegation" + + + // $ANTLR start "entryRuleVLSUnaryInfix" + // InternalVampireLanguage.g:2030:1: entryRuleVLSUnaryInfix returns [EObject current=null] : iv_ruleVLSUnaryInfix= ruleVLSUnaryInfix EOF ; + public final EObject entryRuleVLSUnaryInfix() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSUnaryInfix = null; + + + try { + // InternalVampireLanguage.g:2030:54: (iv_ruleVLSUnaryInfix= ruleVLSUnaryInfix EOF ) + // InternalVampireLanguage.g:2031:2: iv_ruleVLSUnaryInfix= ruleVLSUnaryInfix EOF + { + newCompositeNode(grammarAccess.getVLSUnaryInfixRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSUnaryInfix=ruleVLSUnaryInfix(); + + state._fsp--; + + current =iv_ruleVLSUnaryInfix; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSUnaryInfix" + + + // $ANTLR start "ruleVLSUnaryInfix" + // InternalVampireLanguage.g:2037:1: ruleVLSUnaryInfix returns [EObject current=null] : (this_VLSAtomic_0= ruleVLSAtomic ( ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) )? ) ; + public final EObject ruleVLSUnaryInfix() throws RecognitionException { + EObject current = null; + + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_6=null; + EObject this_VLSAtomic_0 = null; + + EObject lv_right_7_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:2043:2: ( (this_VLSAtomic_0= ruleVLSAtomic ( ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) )? ) ) + // InternalVampireLanguage.g:2044:2: (this_VLSAtomic_0= ruleVLSAtomic ( ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) )? ) + { + // InternalVampireLanguage.g:2044:2: (this_VLSAtomic_0= ruleVLSAtomic ( ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) )? ) + // InternalVampireLanguage.g:2045:3: this_VLSAtomic_0= ruleVLSAtomic ( ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) )? + { + + newCompositeNode(grammarAccess.getVLSUnaryInfixAccess().getVLSAtomicParserRuleCall_0()); + + pushFollow(FOLLOW_43); + this_VLSAtomic_0=ruleVLSAtomic(); + + state._fsp--; + + + current = this_VLSAtomic_0; + afterParserOrEnumRuleCall(); + + // InternalVampireLanguage.g:2053:3: ( ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) )? + int alt31=2; + int LA31_0 = input.LA(1); + + if ( ((LA31_0>=75 && LA31_0<=77)) ) { + alt31=1; + } + switch (alt31) { + case 1 : + // InternalVampireLanguage.g:2054:4: ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) ( (lv_right_7_0= ruleVLSAtomic ) ) + { + // InternalVampireLanguage.g:2054:4: ( ( () otherlv_2= '!=' ) | ( () otherlv_4= '=' ) | ( () otherlv_6= ':=' ) ) + int alt30=3; + switch ( input.LA(1) ) { + case 75: + { + alt30=1; + } + break; + case 76: + { + alt30=2; + } + break; + case 77: + { + alt30=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 30, 0, input); + + throw nvae; + } + + switch (alt30) { + case 1 : + // InternalVampireLanguage.g:2055:5: ( () otherlv_2= '!=' ) + { + // InternalVampireLanguage.g:2055:5: ( () otherlv_2= '!=' ) + // InternalVampireLanguage.g:2056:6: () otherlv_2= '!=' + { + // InternalVampireLanguage.g:2056:6: () + // InternalVampireLanguage.g:2057:7: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0(), + current); + + + } + + otherlv_2=(Token)match(input,75,FOLLOW_34); + + newLeafNode(otherlv_2, grammarAccess.getVLSUnaryInfixAccess().getExclamationMarkEqualsSignKeyword_1_0_0_1()); + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:2069:5: ( () otherlv_4= '=' ) + { + // InternalVampireLanguage.g:2069:5: ( () otherlv_4= '=' ) + // InternalVampireLanguage.g:2070:6: () otherlv_4= '=' + { + // InternalVampireLanguage.g:2070:6: () + // InternalVampireLanguage.g:2071:7: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0(), + current); + + + } + + otherlv_4=(Token)match(input,76,FOLLOW_34); + + newLeafNode(otherlv_4, grammarAccess.getVLSUnaryInfixAccess().getEqualsSignKeyword_1_0_1_1()); + + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:2083:5: ( () otherlv_6= ':=' ) + { + // InternalVampireLanguage.g:2083:5: ( () otherlv_6= ':=' ) + // InternalVampireLanguage.g:2084:6: () otherlv_6= ':=' + { + // InternalVampireLanguage.g:2084:6: () + // InternalVampireLanguage.g:2085:7: + { + + current = forceCreateModelElementAndSet( + grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0(), + current); + + + } + + otherlv_6=(Token)match(input,77,FOLLOW_34); + + newLeafNode(otherlv_6, grammarAccess.getVLSUnaryInfixAccess().getColonEqualsSignKeyword_1_0_2_1()); + + + } + + + } + break; + + } + + // InternalVampireLanguage.g:2097:4: ( (lv_right_7_0= ruleVLSAtomic ) ) + // InternalVampireLanguage.g:2098:5: (lv_right_7_0= ruleVLSAtomic ) + { + // InternalVampireLanguage.g:2098:5: (lv_right_7_0= ruleVLSAtomic ) + // InternalVampireLanguage.g:2099:6: lv_right_7_0= ruleVLSAtomic + { + + newCompositeNode(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0()); + + pushFollow(FOLLOW_2); + lv_right_7_0=ruleVLSAtomic(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSUnaryInfixRule()); + } + set( + current, + "right", + lv_right_7_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomic"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSUnaryInfix" + + + // $ANTLR start "entryRuleVLSAtomic" + // InternalVampireLanguage.g:2121:1: entryRuleVLSAtomic returns [EObject current=null] : iv_ruleVLSAtomic= ruleVLSAtomic EOF ; + public final EObject entryRuleVLSAtomic() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSAtomic = null; + + + try { + // InternalVampireLanguage.g:2121:50: (iv_ruleVLSAtomic= ruleVLSAtomic EOF ) + // InternalVampireLanguage.g:2122:2: iv_ruleVLSAtomic= ruleVLSAtomic EOF + { + newCompositeNode(grammarAccess.getVLSAtomicRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSAtomic=ruleVLSAtomic(); + + state._fsp--; + + current =iv_ruleVLSAtomic; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSAtomic" + + + // $ANTLR start "ruleVLSAtomic" + // InternalVampireLanguage.g:2128:1: ruleVLSAtomic returns [EObject current=null] : (this_VLSAtomicConstant_0= ruleVLSAtomicConstant | this_VLSAtomicFunction_1= ruleVLSAtomicFunction | this_VLSVariable_2= ruleVLSVariable | this_VLSDefinedTerm_3= ruleVLSDefinedTerm ) ; + public final EObject ruleVLSAtomic() throws RecognitionException { + EObject current = null; + + EObject this_VLSAtomicConstant_0 = null; + + EObject this_VLSAtomicFunction_1 = null; + + EObject this_VLSVariable_2 = null; + + EObject this_VLSDefinedTerm_3 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:2134:2: ( (this_VLSAtomicConstant_0= ruleVLSAtomicConstant | this_VLSAtomicFunction_1= ruleVLSAtomicFunction | this_VLSVariable_2= ruleVLSVariable | this_VLSDefinedTerm_3= ruleVLSDefinedTerm ) ) + // InternalVampireLanguage.g:2135:2: (this_VLSAtomicConstant_0= ruleVLSAtomicConstant | this_VLSAtomicFunction_1= ruleVLSAtomicFunction | this_VLSVariable_2= ruleVLSVariable | this_VLSDefinedTerm_3= ruleVLSDefinedTerm ) + { + // InternalVampireLanguage.g:2135:2: (this_VLSAtomicConstant_0= ruleVLSAtomicConstant | this_VLSAtomicFunction_1= ruleVLSAtomicFunction | this_VLSVariable_2= ruleVLSVariable | this_VLSDefinedTerm_3= ruleVLSDefinedTerm ) + int alt32=4; + alt32 = dfa32.predict(input); + switch (alt32) { + case 1 : + // InternalVampireLanguage.g:2136:3: this_VLSAtomicConstant_0= ruleVLSAtomicConstant + { + + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSAtomicConstantParserRuleCall_0()); + + pushFollow(FOLLOW_2); + this_VLSAtomicConstant_0=ruleVLSAtomicConstant(); + + state._fsp--; + + + current = this_VLSAtomicConstant_0; + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:2145:3: this_VLSAtomicFunction_1= ruleVLSAtomicFunction + { + + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSAtomicFunctionParserRuleCall_1()); + + pushFollow(FOLLOW_2); + this_VLSAtomicFunction_1=ruleVLSAtomicFunction(); + + state._fsp--; + + + current = this_VLSAtomicFunction_1; + afterParserOrEnumRuleCall(); + + + } + break; + case 3 : + // InternalVampireLanguage.g:2154:3: this_VLSVariable_2= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSVariableParserRuleCall_2()); + + pushFollow(FOLLOW_2); + this_VLSVariable_2=ruleVLSVariable(); + + state._fsp--; + + + current = this_VLSVariable_2; + afterParserOrEnumRuleCall(); + + + } + break; + case 4 : + // InternalVampireLanguage.g:2163:3: this_VLSDefinedTerm_3= ruleVLSDefinedTerm + { + + newCompositeNode(grammarAccess.getVLSAtomicAccess().getVLSDefinedTermParserRuleCall_3()); + + pushFollow(FOLLOW_2); + this_VLSDefinedTerm_3=ruleVLSDefinedTerm(); + + state._fsp--; + + + current = this_VLSDefinedTerm_3; + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSAtomic" + + + // $ANTLR start "entryRuleVLSAtomicConstant" + // InternalVampireLanguage.g:2175:1: entryRuleVLSAtomicConstant returns [EObject current=null] : iv_ruleVLSAtomicConstant= ruleVLSAtomicConstant EOF ; + public final EObject entryRuleVLSAtomicConstant() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSAtomicConstant = null; + + + try { + // InternalVampireLanguage.g:2175:58: (iv_ruleVLSAtomicConstant= ruleVLSAtomicConstant EOF ) + // InternalVampireLanguage.g:2176:2: iv_ruleVLSAtomicConstant= ruleVLSAtomicConstant EOF + { + newCompositeNode(grammarAccess.getVLSAtomicConstantRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSAtomicConstant=ruleVLSAtomicConstant(); + + state._fsp--; + + current =iv_ruleVLSAtomicConstant; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSAtomicConstant" + + + // $ANTLR start "ruleVLSAtomicConstant" + // InternalVampireLanguage.g:2182:1: ruleVLSAtomicConstant returns [EObject current=null] : ( ( () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) ) | ( () otherlv_3= '$true' ) | ( () otherlv_5= '$false' ) ) ; + public final EObject ruleVLSAtomicConstant() throws RecognitionException { + EObject current = null; + + Token lv_name_1_1=null; + Token lv_name_1_2=null; + Token lv_name_1_3=null; + Token lv_name_1_4=null; + Token otherlv_3=null; + Token otherlv_5=null; + AntlrDatatypeRuleToken lv_name_1_5 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:2188:2: ( ( ( () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) ) | ( () otherlv_3= '$true' ) | ( () otherlv_5= '$false' ) ) ) + // InternalVampireLanguage.g:2189:2: ( ( () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) ) | ( () otherlv_3= '$true' ) | ( () otherlv_5= '$false' ) ) + { + // InternalVampireLanguage.g:2189:2: ( ( () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) ) | ( () otherlv_3= '$true' ) | ( () otherlv_5= '$false' ) ) + int alt34=3; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + case RULE_SINGLE_QUOTE: + case RULE_DOLLAR_ID: + case RULE_DOUBLE_DOLLAR_ID: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + { + alt34=1; + } + break; + case 78: + { + alt34=2; + } + break; + case 79: + { + alt34=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 34, 0, input); + + throw nvae; + } + + switch (alt34) { + case 1 : + // InternalVampireLanguage.g:2190:3: ( () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) ) + { + // InternalVampireLanguage.g:2190:3: ( () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) ) + // InternalVampireLanguage.g:2191:4: () ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) + { + // InternalVampireLanguage.g:2191:4: () + // InternalVampireLanguage.g:2192:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSAtomicConstantAccess().getVLSConstantAction_0_0(), + current); + + + } + + // InternalVampireLanguage.g:2198:4: ( ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) ) + // InternalVampireLanguage.g:2199:5: ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) + { + // InternalVampireLanguage.g:2199:5: ( (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) ) + // InternalVampireLanguage.g:2200:6: (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) + { + // InternalVampireLanguage.g:2200:6: (lv_name_1_1= RULE_LOWER_WORD_ID | lv_name_1_2= RULE_SINGLE_QUOTE | lv_name_1_3= RULE_DOLLAR_ID | lv_name_1_4= RULE_DOUBLE_DOLLAR_ID | lv_name_1_5= ruleVLSRole ) + int alt33=5; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt33=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt33=2; + } + break; + case RULE_DOLLAR_ID: + { + alt33=3; + } + break; + case RULE_DOUBLE_DOLLAR_ID: + { + alt33=4; + } + break; + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + { + alt33=5; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 33, 0, input); + + throw nvae; + } + + switch (alt33) { + case 1 : + // InternalVampireLanguage.g:2201:7: lv_name_1_1= RULE_LOWER_WORD_ID + { + lv_name_1_1=(Token)match(input,RULE_LOWER_WORD_ID,FOLLOW_2); + + newLeafNode(lv_name_1_1, grammarAccess.getVLSAtomicConstantAccess().getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_1_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + + + } + break; + case 2 : + // InternalVampireLanguage.g:2216:7: lv_name_1_2= RULE_SINGLE_QUOTE + { + lv_name_1_2=(Token)match(input,RULE_SINGLE_QUOTE,FOLLOW_2); + + newLeafNode(lv_name_1_2, grammarAccess.getVLSAtomicConstantAccess().getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_1_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + + + } + break; + case 3 : + // InternalVampireLanguage.g:2231:7: lv_name_1_3= RULE_DOLLAR_ID + { + lv_name_1_3=(Token)match(input,RULE_DOLLAR_ID,FOLLOW_2); + + newLeafNode(lv_name_1_3, grammarAccess.getVLSAtomicConstantAccess().getNameDOLLAR_IDTerminalRuleCall_0_1_0_2()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_1_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + + + } + break; + case 4 : + // InternalVampireLanguage.g:2246:7: lv_name_1_4= RULE_DOUBLE_DOLLAR_ID + { + lv_name_1_4=(Token)match(input,RULE_DOUBLE_DOLLAR_ID,FOLLOW_2); + + newLeafNode(lv_name_1_4, grammarAccess.getVLSAtomicConstantAccess().getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicConstantRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_1_4, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + + + } + break; + case 5 : + // InternalVampireLanguage.g:2261:7: lv_name_1_5= ruleVLSRole + { + + newCompositeNode(grammarAccess.getVLSAtomicConstantAccess().getNameVLSRoleParserRuleCall_0_1_0_4()); + + pushFollow(FOLLOW_2); + lv_name_1_5=ruleVLSRole(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAtomicConstantRule()); + } + set( + current, + "name", + lv_name_1_5, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:2281:3: ( () otherlv_3= '$true' ) + { + // InternalVampireLanguage.g:2281:3: ( () otherlv_3= '$true' ) + // InternalVampireLanguage.g:2282:4: () otherlv_3= '$true' + { + // InternalVampireLanguage.g:2282:4: () + // InternalVampireLanguage.g:2283:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSAtomicConstantAccess().getVLSTrueAction_1_0(), + current); + + + } + + otherlv_3=(Token)match(input,78,FOLLOW_2); + + newLeafNode(otherlv_3, grammarAccess.getVLSAtomicConstantAccess().getTrueKeyword_1_1()); + + + } + + + } + break; + case 3 : + // InternalVampireLanguage.g:2295:3: ( () otherlv_5= '$false' ) + { + // InternalVampireLanguage.g:2295:3: ( () otherlv_5= '$false' ) + // InternalVampireLanguage.g:2296:4: () otherlv_5= '$false' + { + // InternalVampireLanguage.g:2296:4: () + // InternalVampireLanguage.g:2297:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSAtomicConstantAccess().getVLSFalseAction_2_0(), + current); + + + } + + otherlv_5=(Token)match(input,79,FOLLOW_2); + + newLeafNode(otherlv_5, grammarAccess.getVLSAtomicConstantAccess().getFalseKeyword_2_1()); + + + } + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSAtomicConstant" + + + // $ANTLR start "entryRuleVLSAtomicFunction" + // InternalVampireLanguage.g:2312:1: entryRuleVLSAtomicFunction returns [EObject current=null] : iv_ruleVLSAtomicFunction= ruleVLSAtomicFunction EOF ; + public final EObject entryRuleVLSAtomicFunction() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSAtomicFunction = null; + + + try { + // InternalVampireLanguage.g:2312:58: (iv_ruleVLSAtomicFunction= ruleVLSAtomicFunction EOF ) + // InternalVampireLanguage.g:2313:2: iv_ruleVLSAtomicFunction= ruleVLSAtomicFunction EOF + { + newCompositeNode(grammarAccess.getVLSAtomicFunctionRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSAtomicFunction=ruleVLSAtomicFunction(); + + state._fsp--; + + current =iv_ruleVLSAtomicFunction; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSAtomicFunction" + + + // $ANTLR start "ruleVLSAtomicFunction" + // InternalVampireLanguage.g:2319:1: ruleVLSAtomicFunction returns [EObject current=null] : ( ( () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) ) | ( () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' ) ) ; + public final EObject ruleVLSAtomicFunction() throws RecognitionException { + EObject current = null; + + Token lv_constant_1_1=null; + Token lv_constant_1_2=null; + Token lv_constant_1_3=null; + Token lv_constant_1_4=null; + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_6=null; + Token lv_name_8_0=null; + Token otherlv_9=null; + Token otherlv_11=null; + Token otherlv_13=null; + AntlrDatatypeRuleToken lv_constant_1_5 = null; + + EObject lv_terms_3_0 = null; + + EObject lv_terms_5_0 = null; + + EObject lv_terms_10_0 = null; + + EObject lv_terms_12_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:2325:2: ( ( ( () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) ) | ( () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' ) ) ) + // InternalVampireLanguage.g:2326:2: ( ( () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) ) | ( () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' ) ) + { + // InternalVampireLanguage.g:2326:2: ( ( () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) ) | ( () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' ) ) + int alt37=2; + int LA37_0 = input.LA(1); + + if ( (LA37_0==RULE_LOWER_WORD_ID||(LA37_0>=RULE_SINGLE_QUOTE && LA37_0<=RULE_DOUBLE_DOLLAR_ID)||(LA37_0>=46 && LA37_0<=60)) ) { + alt37=1; + } + else if ( (LA37_0==80) ) { + alt37=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 37, 0, input); + + throw nvae; + } + switch (alt37) { + case 1 : + // InternalVampireLanguage.g:2327:3: ( () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) ) + { + // InternalVampireLanguage.g:2327:3: ( () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) ) + // InternalVampireLanguage.g:2328:4: () ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) + { + // InternalVampireLanguage.g:2328:4: () + // InternalVampireLanguage.g:2329:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSAtomicFunctionAccess().getVLSFunctionAction_0_0(), + current); + + + } + + // InternalVampireLanguage.g:2335:4: ( ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) ) + // InternalVampireLanguage.g:2336:5: ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) + { + // InternalVampireLanguage.g:2336:5: ( (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) ) + // InternalVampireLanguage.g:2337:6: (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) + { + // InternalVampireLanguage.g:2337:6: (lv_constant_1_1= RULE_LOWER_WORD_ID | lv_constant_1_2= RULE_SINGLE_QUOTE | lv_constant_1_3= RULE_DOLLAR_ID | lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID | lv_constant_1_5= ruleVLSRole ) + int alt35=5; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt35=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt35=2; + } + break; + case RULE_DOLLAR_ID: + { + alt35=3; + } + break; + case RULE_DOUBLE_DOLLAR_ID: + { + alt35=4; + } + break; + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + { + alt35=5; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 35, 0, input); + + throw nvae; + } + + switch (alt35) { + case 1 : + // InternalVampireLanguage.g:2338:7: lv_constant_1_1= RULE_LOWER_WORD_ID + { + lv_constant_1_1=(Token)match(input,RULE_LOWER_WORD_ID,FOLLOW_16); + + newLeafNode(lv_constant_1_1, grammarAccess.getVLSAtomicFunctionAccess().getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + current, + "constant", + lv_constant_1_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + + + } + break; + case 2 : + // InternalVampireLanguage.g:2353:7: lv_constant_1_2= RULE_SINGLE_QUOTE + { + lv_constant_1_2=(Token)match(input,RULE_SINGLE_QUOTE,FOLLOW_16); + + newLeafNode(lv_constant_1_2, grammarAccess.getVLSAtomicFunctionAccess().getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + current, + "constant", + lv_constant_1_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + + + } + break; + case 3 : + // InternalVampireLanguage.g:2368:7: lv_constant_1_3= RULE_DOLLAR_ID + { + lv_constant_1_3=(Token)match(input,RULE_DOLLAR_ID,FOLLOW_16); + + newLeafNode(lv_constant_1_3, grammarAccess.getVLSAtomicFunctionAccess().getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + current, + "constant", + lv_constant_1_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + + + } + break; + case 4 : + // InternalVampireLanguage.g:2383:7: lv_constant_1_4= RULE_DOUBLE_DOLLAR_ID + { + lv_constant_1_4=(Token)match(input,RULE_DOUBLE_DOLLAR_ID,FOLLOW_16); + + newLeafNode(lv_constant_1_4, grammarAccess.getVLSAtomicFunctionAccess().getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed( + current, + "constant", + lv_constant_1_4, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + + + } + break; + case 5 : + // InternalVampireLanguage.g:2398:7: lv_constant_1_5= ruleVLSRole + { + + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getConstantVLSRoleParserRuleCall_0_1_0_4()); + + pushFollow(FOLLOW_16); + lv_constant_1_5=ruleVLSRole(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + set( + current, + "constant", + lv_constant_1_5, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + } + + // InternalVampireLanguage.g:2416:4: (otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' ) + // InternalVampireLanguage.g:2417:5: otherlv_2= '(' ( (lv_terms_3_0= ruleVLSFofTerm ) ) (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* otherlv_6= ')' + { + otherlv_2=(Token)match(input,38,FOLLOW_34); + + newLeafNode(otherlv_2, grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_0_2_0()); + + // InternalVampireLanguage.g:2421:5: ( (lv_terms_3_0= ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:2422:6: (lv_terms_3_0= ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:2422:6: (lv_terms_3_0= ruleVLSFofTerm ) + // InternalVampireLanguage.g:2423:7: lv_terms_3_0= ruleVLSFofTerm + { + + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_1_0()); + + pushFollow(FOLLOW_21); + lv_terms_3_0=ruleVLSFofTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + current, + "terms", + lv_terms_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:2440:5: (otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) )* + loop36: + do { + int alt36=2; + int LA36_0 = input.LA(1); + + if ( (LA36_0==39) ) { + alt36=1; + } + + + switch (alt36) { + case 1 : + // InternalVampireLanguage.g:2441:6: otherlv_4= ',' ( (lv_terms_5_0= ruleVLSFofTerm ) ) + { + otherlv_4=(Token)match(input,39,FOLLOW_34); + + newLeafNode(otherlv_4, grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_0_2_2_0()); + + // InternalVampireLanguage.g:2445:6: ( (lv_terms_5_0= ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:2446:7: (lv_terms_5_0= ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:2446:7: (lv_terms_5_0= ruleVLSFofTerm ) + // InternalVampireLanguage.g:2447:8: lv_terms_5_0= ruleVLSFofTerm + { + + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_0_2_2_1_0()); + + pushFollow(FOLLOW_21); + lv_terms_5_0=ruleVLSFofTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + current, + "terms", + lv_terms_5_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + break loop36; + } + } while (true); + + otherlv_6=(Token)match(input,40,FOLLOW_2); + + newLeafNode(otherlv_6, grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_0_2_3()); + + + } + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:2472:3: ( () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' ) + { + // InternalVampireLanguage.g:2472:3: ( () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' ) + // InternalVampireLanguage.g:2473:4: () ( (lv_name_8_0= '$less' ) ) otherlv_9= '(' ( (lv_terms_10_0= ruleVLSFofTerm ) ) otherlv_11= ',' ( (lv_terms_12_0= ruleVLSFofTerm ) ) otherlv_13= ')' + { + // InternalVampireLanguage.g:2473:4: () + // InternalVampireLanguage.g:2474:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSAtomicFunctionAccess().getVLSLessAction_1_0(), + current); + + + } + + // InternalVampireLanguage.g:2480:4: ( (lv_name_8_0= '$less' ) ) + // InternalVampireLanguage.g:2481:5: (lv_name_8_0= '$less' ) + { + // InternalVampireLanguage.g:2481:5: (lv_name_8_0= '$less' ) + // InternalVampireLanguage.g:2482:6: lv_name_8_0= '$less' + { + lv_name_8_0=(Token)match(input,80,FOLLOW_16); + + newLeafNode(lv_name_8_0, grammarAccess.getVLSAtomicFunctionAccess().getNameLessKeyword_1_1_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSAtomicFunctionRule()); + } + setWithLastConsumed(current, "name", lv_name_8_0, "$less"); + + + } + + + } + + otherlv_9=(Token)match(input,38,FOLLOW_34); + + newLeafNode(otherlv_9, grammarAccess.getVLSAtomicFunctionAccess().getLeftParenthesisKeyword_1_2()); + + // InternalVampireLanguage.g:2498:4: ( (lv_terms_10_0= ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:2499:5: (lv_terms_10_0= ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:2499:5: (lv_terms_10_0= ruleVLSFofTerm ) + // InternalVampireLanguage.g:2500:6: lv_terms_10_0= ruleVLSFofTerm + { + + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_3_0()); + + pushFollow(FOLLOW_18); + lv_terms_10_0=ruleVLSFofTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + current, + "terms", + lv_terms_10_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_11=(Token)match(input,39,FOLLOW_34); + + newLeafNode(otherlv_11, grammarAccess.getVLSAtomicFunctionAccess().getCommaKeyword_1_4()); + + // InternalVampireLanguage.g:2521:4: ( (lv_terms_12_0= ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:2522:5: (lv_terms_12_0= ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:2522:5: (lv_terms_12_0= ruleVLSFofTerm ) + // InternalVampireLanguage.g:2523:6: lv_terms_12_0= ruleVLSFofTerm + { + + newCompositeNode(grammarAccess.getVLSAtomicFunctionAccess().getTermsVLSFofTermParserRuleCall_1_5_0()); + + pushFollow(FOLLOW_23); + lv_terms_12_0=ruleVLSFofTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSAtomicFunctionRule()); + } + add( + current, + "terms", + lv_terms_12_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_13=(Token)match(input,40,FOLLOW_2); + + newLeafNode(otherlv_13, grammarAccess.getVLSAtomicFunctionAccess().getRightParenthesisKeyword_1_6()); + + + } + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSAtomicFunction" + + + // $ANTLR start "entryRuleVLSVariable" + // InternalVampireLanguage.g:2549:1: entryRuleVLSVariable returns [EObject current=null] : iv_ruleVLSVariable= ruleVLSVariable EOF ; + public final EObject entryRuleVLSVariable() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSVariable = null; + + + try { + // InternalVampireLanguage.g:2549:52: (iv_ruleVLSVariable= ruleVLSVariable EOF ) + // InternalVampireLanguage.g:2550:2: iv_ruleVLSVariable= ruleVLSVariable EOF + { + newCompositeNode(grammarAccess.getVLSVariableRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSVariable=ruleVLSVariable(); + + state._fsp--; + + current =iv_ruleVLSVariable; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSVariable" + + + // $ANTLR start "ruleVLSVariable" + // InternalVampireLanguage.g:2556:1: ruleVLSVariable returns [EObject current=null] : ( (lv_name_0_0= RULE_UPPER_WORD_ID ) ) ; + public final EObject ruleVLSVariable() throws RecognitionException { + EObject current = null; + + Token lv_name_0_0=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:2562:2: ( ( (lv_name_0_0= RULE_UPPER_WORD_ID ) ) ) + // InternalVampireLanguage.g:2563:2: ( (lv_name_0_0= RULE_UPPER_WORD_ID ) ) + { + // InternalVampireLanguage.g:2563:2: ( (lv_name_0_0= RULE_UPPER_WORD_ID ) ) + // InternalVampireLanguage.g:2564:3: (lv_name_0_0= RULE_UPPER_WORD_ID ) + { + // InternalVampireLanguage.g:2564:3: (lv_name_0_0= RULE_UPPER_WORD_ID ) + // InternalVampireLanguage.g:2565:4: lv_name_0_0= RULE_UPPER_WORD_ID + { + lv_name_0_0=(Token)match(input,RULE_UPPER_WORD_ID,FOLLOW_2); + + newLeafNode(lv_name_0_0, grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSVariableRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_0_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.UPPER_WORD_ID"); + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSVariable" + + + // $ANTLR start "entryRuleVLSFofTerm" + // InternalVampireLanguage.g:2584:1: entryRuleVLSFofTerm returns [EObject current=null] : iv_ruleVLSFofTerm= ruleVLSFofTerm EOF ; + public final EObject entryRuleVLSFofTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSFofTerm = null; + + + try { + // InternalVampireLanguage.g:2584:51: (iv_ruleVLSFofTerm= ruleVLSFofTerm EOF ) + // InternalVampireLanguage.g:2585:2: iv_ruleVLSFofTerm= ruleVLSFofTerm EOF + { + newCompositeNode(grammarAccess.getVLSFofTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSFofTerm=ruleVLSFofTerm(); + + state._fsp--; + + current =iv_ruleVLSFofTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSFofTerm" + + + // $ANTLR start "ruleVLSFofTerm" + // InternalVampireLanguage.g:2591:1: ruleVLSFofTerm returns [EObject current=null] : (this_VLSVariable_0= ruleVLSVariable | this_VLSFunctionAsTerm_1= ruleVLSFunctionAsTerm | this_VLSDefinedTerm_2= ruleVLSDefinedTerm ) ; + public final EObject ruleVLSFofTerm() throws RecognitionException { + EObject current = null; + + EObject this_VLSVariable_0 = null; + + EObject this_VLSFunctionAsTerm_1 = null; + + EObject this_VLSDefinedTerm_2 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:2597:2: ( (this_VLSVariable_0= ruleVLSVariable | this_VLSFunctionAsTerm_1= ruleVLSFunctionAsTerm | this_VLSDefinedTerm_2= ruleVLSDefinedTerm ) ) + // InternalVampireLanguage.g:2598:2: (this_VLSVariable_0= ruleVLSVariable | this_VLSFunctionAsTerm_1= ruleVLSFunctionAsTerm | this_VLSDefinedTerm_2= ruleVLSDefinedTerm ) + { + // InternalVampireLanguage.g:2598:2: (this_VLSVariable_0= ruleVLSVariable | this_VLSFunctionAsTerm_1= ruleVLSFunctionAsTerm | this_VLSDefinedTerm_2= ruleVLSDefinedTerm ) + int alt38=3; + switch ( input.LA(1) ) { + case RULE_UPPER_WORD_ID: + { + alt38=1; + } + break; + case RULE_LOWER_WORD_ID: + case RULE_SINGLE_QUOTE: + case RULE_DOLLAR_ID: + case RULE_DOUBLE_DOLLAR_ID: + { + alt38=2; + } + break; + case RULE_SIGNED_LITERAL: + case RULE_DOUBLE_QUOTE: + { + alt38=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 38, 0, input); + + throw nvae; + } + + switch (alt38) { + case 1 : + // InternalVampireLanguage.g:2599:3: this_VLSVariable_0= ruleVLSVariable + { + + newCompositeNode(grammarAccess.getVLSFofTermAccess().getVLSVariableParserRuleCall_0()); + + pushFollow(FOLLOW_2); + this_VLSVariable_0=ruleVLSVariable(); + + state._fsp--; + + + current = this_VLSVariable_0; + afterParserOrEnumRuleCall(); + + + } + break; + case 2 : + // InternalVampireLanguage.g:2608:3: this_VLSFunctionAsTerm_1= ruleVLSFunctionAsTerm + { + + newCompositeNode(grammarAccess.getVLSFofTermAccess().getVLSFunctionAsTermParserRuleCall_1()); + + pushFollow(FOLLOW_2); + this_VLSFunctionAsTerm_1=ruleVLSFunctionAsTerm(); + + state._fsp--; + + + current = this_VLSFunctionAsTerm_1; + afterParserOrEnumRuleCall(); + + + } + break; + case 3 : + // InternalVampireLanguage.g:2617:3: this_VLSDefinedTerm_2= ruleVLSDefinedTerm + { + + newCompositeNode(grammarAccess.getVLSFofTermAccess().getVLSDefinedTermParserRuleCall_2()); + + pushFollow(FOLLOW_2); + this_VLSDefinedTerm_2=ruleVLSDefinedTerm(); + + state._fsp--; + + + current = this_VLSDefinedTerm_2; + afterParserOrEnumRuleCall(); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSFofTerm" + + + // $ANTLR start "entryRuleVLSFunctionAsTerm" + // InternalVampireLanguage.g:2629:1: entryRuleVLSFunctionAsTerm returns [EObject current=null] : iv_ruleVLSFunctionAsTerm= ruleVLSFunctionAsTerm EOF ; + public final EObject entryRuleVLSFunctionAsTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSFunctionAsTerm = null; + + + try { + // InternalVampireLanguage.g:2629:58: (iv_ruleVLSFunctionAsTerm= ruleVLSFunctionAsTerm EOF ) + // InternalVampireLanguage.g:2630:2: iv_ruleVLSFunctionAsTerm= ruleVLSFunctionAsTerm EOF + { + newCompositeNode(grammarAccess.getVLSFunctionAsTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSFunctionAsTerm=ruleVLSFunctionAsTerm(); + + state._fsp--; + + current =iv_ruleVLSFunctionAsTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSFunctionAsTerm" + + + // $ANTLR start "ruleVLSFunctionAsTerm" + // InternalVampireLanguage.g:2636:1: ruleVLSFunctionAsTerm returns [EObject current=null] : ( ( ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) ) (otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' )? ) ; + public final EObject ruleVLSFunctionAsTerm() throws RecognitionException { + EObject current = null; + + Token lv_functor_0_1=null; + Token lv_functor_0_2=null; + Token lv_functor_0_3=null; + Token lv_functor_0_4=null; + Token otherlv_1=null; + Token otherlv_3=null; + Token otherlv_5=null; + EObject lv_terms_2_0 = null; + + EObject lv_terms_4_0 = null; + + + + enterRule(); + + try { + // InternalVampireLanguage.g:2642:2: ( ( ( ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) ) (otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' )? ) ) + // InternalVampireLanguage.g:2643:2: ( ( ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) ) (otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' )? ) + { + // InternalVampireLanguage.g:2643:2: ( ( ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) ) (otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' )? ) + // InternalVampireLanguage.g:2644:3: ( ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) ) (otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' )? + { + // InternalVampireLanguage.g:2644:3: ( ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) ) + // InternalVampireLanguage.g:2645:4: ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) + { + // InternalVampireLanguage.g:2645:4: ( (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) ) + // InternalVampireLanguage.g:2646:5: (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) + { + // InternalVampireLanguage.g:2646:5: (lv_functor_0_1= RULE_LOWER_WORD_ID | lv_functor_0_2= RULE_SINGLE_QUOTE | lv_functor_0_3= RULE_DOLLAR_ID | lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID ) + int alt39=4; + switch ( input.LA(1) ) { + case RULE_LOWER_WORD_ID: + { + alt39=1; + } + break; + case RULE_SINGLE_QUOTE: + { + alt39=2; + } + break; + case RULE_DOLLAR_ID: + { + alt39=3; + } + break; + case RULE_DOUBLE_DOLLAR_ID: + { + alt39=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 39, 0, input); + + throw nvae; + } + + switch (alt39) { + case 1 : + // InternalVampireLanguage.g:2647:6: lv_functor_0_1= RULE_LOWER_WORD_ID + { + lv_functor_0_1=(Token)match(input,RULE_LOWER_WORD_ID,FOLLOW_44); + + newLeafNode(lv_functor_0_1, grammarAccess.getVLSFunctionAsTermAccess().getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + current, + "functor", + lv_functor_0_1, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + + + } + break; + case 2 : + // InternalVampireLanguage.g:2662:6: lv_functor_0_2= RULE_SINGLE_QUOTE + { + lv_functor_0_2=(Token)match(input,RULE_SINGLE_QUOTE,FOLLOW_44); + + newLeafNode(lv_functor_0_2, grammarAccess.getVLSFunctionAsTermAccess().getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + current, + "functor", + lv_functor_0_2, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + + + } + break; + case 3 : + // InternalVampireLanguage.g:2677:6: lv_functor_0_3= RULE_DOLLAR_ID + { + lv_functor_0_3=(Token)match(input,RULE_DOLLAR_ID,FOLLOW_44); + + newLeafNode(lv_functor_0_3, grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOLLAR_IDTerminalRuleCall_0_0_2()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + current, + "functor", + lv_functor_0_3, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + + + } + break; + case 4 : + // InternalVampireLanguage.g:2692:6: lv_functor_0_4= RULE_DOUBLE_DOLLAR_ID + { + lv_functor_0_4=(Token)match(input,RULE_DOUBLE_DOLLAR_ID,FOLLOW_44); + + newLeafNode(lv_functor_0_4, grammarAccess.getVLSFunctionAsTermAccess().getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSFunctionAsTermRule()); + } + setWithLastConsumed( + current, + "functor", + lv_functor_0_4, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + + + } + break; + + } + + + } + + + } + + // InternalVampireLanguage.g:2709:3: (otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' )? + int alt41=2; + int LA41_0 = input.LA(1); + + if ( (LA41_0==38) ) { + alt41=1; + } + switch (alt41) { + case 1 : + // InternalVampireLanguage.g:2710:4: otherlv_1= '(' ( (lv_terms_2_0= ruleVLSFofTerm ) ) (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* otherlv_5= ')' + { + otherlv_1=(Token)match(input,38,FOLLOW_34); + + newLeafNode(otherlv_1, grammarAccess.getVLSFunctionAsTermAccess().getLeftParenthesisKeyword_1_0()); + + // InternalVampireLanguage.g:2714:4: ( (lv_terms_2_0= ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:2715:5: (lv_terms_2_0= ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:2715:5: (lv_terms_2_0= ruleVLSFofTerm ) + // InternalVampireLanguage.g:2716:6: lv_terms_2_0= ruleVLSFofTerm + { + + newCompositeNode(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_1_0()); + + pushFollow(FOLLOW_21); + lv_terms_2_0=ruleVLSFofTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSFunctionAsTermRule()); + } + add( + current, + "terms", + lv_terms_2_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalVampireLanguage.g:2733:4: (otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) )* + loop40: + do { + int alt40=2; + int LA40_0 = input.LA(1); + + if ( (LA40_0==39) ) { + alt40=1; + } + + + switch (alt40) { + case 1 : + // InternalVampireLanguage.g:2734:5: otherlv_3= ',' ( (lv_terms_4_0= ruleVLSFofTerm ) ) + { + otherlv_3=(Token)match(input,39,FOLLOW_34); + + newLeafNode(otherlv_3, grammarAccess.getVLSFunctionAsTermAccess().getCommaKeyword_1_2_0()); + + // InternalVampireLanguage.g:2738:5: ( (lv_terms_4_0= ruleVLSFofTerm ) ) + // InternalVampireLanguage.g:2739:6: (lv_terms_4_0= ruleVLSFofTerm ) + { + // InternalVampireLanguage.g:2739:6: (lv_terms_4_0= ruleVLSFofTerm ) + // InternalVampireLanguage.g:2740:7: lv_terms_4_0= ruleVLSFofTerm + { + + newCompositeNode(grammarAccess.getVLSFunctionAsTermAccess().getTermsVLSFofTermParserRuleCall_1_2_1_0()); + + pushFollow(FOLLOW_21); + lv_terms_4_0=ruleVLSFofTerm(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getVLSFunctionAsTermRule()); + } + add( + current, + "terms", + lv_terms_4_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + break loop40; + } + } while (true); + + otherlv_5=(Token)match(input,40,FOLLOW_2); + + newLeafNode(otherlv_5, grammarAccess.getVLSFunctionAsTermAccess().getRightParenthesisKeyword_1_3()); + + + } + break; + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSFunctionAsTerm" + + + // $ANTLR start "entryRuleVLSDefinedTerm" + // InternalVampireLanguage.g:2767:1: entryRuleVLSDefinedTerm returns [EObject current=null] : iv_ruleVLSDefinedTerm= ruleVLSDefinedTerm EOF ; + public final EObject entryRuleVLSDefinedTerm() throws RecognitionException { + EObject current = null; + + EObject iv_ruleVLSDefinedTerm = null; + + + try { + // InternalVampireLanguage.g:2767:55: (iv_ruleVLSDefinedTerm= ruleVLSDefinedTerm EOF ) + // InternalVampireLanguage.g:2768:2: iv_ruleVLSDefinedTerm= ruleVLSDefinedTerm EOF + { + newCompositeNode(grammarAccess.getVLSDefinedTermRule()); + pushFollow(FOLLOW_1); + iv_ruleVLSDefinedTerm=ruleVLSDefinedTerm(); + + state._fsp--; + + current =iv_ruleVLSDefinedTerm; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleVLSDefinedTerm" + + + // $ANTLR start "ruleVLSDefinedTerm" + // InternalVampireLanguage.g:2774:1: ruleVLSDefinedTerm returns [EObject current=null] : ( ( () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) ) | ( () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) ) ) ; + public final EObject ruleVLSDefinedTerm() throws RecognitionException { + EObject current = null; + + Token lv_value_1_0=null; + Token lv_value_3_0=null; + + + enterRule(); + + try { + // InternalVampireLanguage.g:2780:2: ( ( ( () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) ) | ( () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) ) ) ) + // InternalVampireLanguage.g:2781:2: ( ( () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) ) | ( () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) ) ) + { + // InternalVampireLanguage.g:2781:2: ( ( () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) ) | ( () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) ) ) + int alt42=2; + int LA42_0 = input.LA(1); + + if ( (LA42_0==RULE_SIGNED_LITERAL) ) { + alt42=1; + } + else if ( (LA42_0==RULE_DOUBLE_QUOTE) ) { + alt42=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 42, 0, input); + + throw nvae; + } + switch (alt42) { + case 1 : + // InternalVampireLanguage.g:2782:3: ( () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) ) + { + // InternalVampireLanguage.g:2782:3: ( () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) ) + // InternalVampireLanguage.g:2783:4: () ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) + { + // InternalVampireLanguage.g:2783:4: () + // InternalVampireLanguage.g:2784:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSDefinedTermAccess().getVLSIntAction_0_0(), + current); + + + } + + // InternalVampireLanguage.g:2790:4: ( (lv_value_1_0= RULE_SIGNED_LITERAL ) ) + // InternalVampireLanguage.g:2791:5: (lv_value_1_0= RULE_SIGNED_LITERAL ) + { + // InternalVampireLanguage.g:2791:5: (lv_value_1_0= RULE_SIGNED_LITERAL ) + // InternalVampireLanguage.g:2792:6: lv_value_1_0= RULE_SIGNED_LITERAL + { + lv_value_1_0=(Token)match(input,RULE_SIGNED_LITERAL,FOLLOW_2); + + newLeafNode(lv_value_1_0, grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSDefinedTermRule()); + } + setWithLastConsumed( + current, + "value", + lv_value_1_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.SIGNED_LITERAL"); + + + } + + + } + + + } + + + } + break; + case 2 : + // InternalVampireLanguage.g:2810:3: ( () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) ) + { + // InternalVampireLanguage.g:2810:3: ( () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) ) + // InternalVampireLanguage.g:2811:4: () ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) + { + // InternalVampireLanguage.g:2811:4: () + // InternalVampireLanguage.g:2812:5: + { + + current = forceCreateModelElement( + grammarAccess.getVLSDefinedTermAccess().getVLSDoubleQuoteAction_1_0(), + current); + + + } + + // InternalVampireLanguage.g:2818:4: ( (lv_value_3_0= RULE_DOUBLE_QUOTE ) ) + // InternalVampireLanguage.g:2819:5: (lv_value_3_0= RULE_DOUBLE_QUOTE ) + { + // InternalVampireLanguage.g:2819:5: (lv_value_3_0= RULE_DOUBLE_QUOTE ) + // InternalVampireLanguage.g:2820:6: lv_value_3_0= RULE_DOUBLE_QUOTE + { + lv_value_3_0=(Token)match(input,RULE_DOUBLE_QUOTE,FOLLOW_2); + + newLeafNode(lv_value_3_0, grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getVLSDefinedTermRule()); + } + setWithLastConsumed( + current, + "value", + lv_value_3_0, + "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_QUOTE"); + + + } + + + } + + + } + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleVLSDefinedTerm" + + // Delegated rules + + + protected DFA15 dfa15 = new DFA15(this); + protected DFA32 dfa32 = new DFA32(this); + static final String dfa_1s = "\32\uffff"; + static final String dfa_2s = "\2\uffff\26\1\2\uffff"; + static final String dfa_3s = "\1\4\1\uffff\23\46\3\47\2\uffff"; + static final String dfa_4s = "\1\120\1\uffff\26\115\2\uffff"; + static final String dfa_5s = "\1\uffff\1\1\26\uffff\1\3\1\2"; + static final String dfa_6s = "\32\uffff}>"; + static final String[] dfa_7s = { + "\1\30\1\uffff\1\2\1\1\1\3\1\4\1\5\1\27\1\1\31\uffff\1\1\7\uffff\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\13\uffff\3\1\3\uffff\1\25\1\26\1\1", + "", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\3\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\2\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\2\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "\2\1\24\uffff\1\31\2\uffff\10\1\3\uffff\3\1", + "", + "" + }; + + static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s); + static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s); + static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s); + static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s); + static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s); + static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s); + static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s); + + class DFA15 extends DFA { + + public DFA15(BaseRecognizer recognizer) { + this.recognizer = recognizer; + this.decisionNumber = 15; + this.eot = dfa_1; + this.eof = dfa_2; + this.min = dfa_3; + this.max = dfa_4; + this.accept = dfa_5; + this.special = dfa_6; + this.transition = dfa_7; + } + public String getDescription() { + return "1046:2: (this_VLSTerm_0= ruleVLSTerm | this_VLSDeclaration_1= ruleVLSDeclaration | this_VLSCommentTerm_2= ruleVLSCommentTerm )"; + } + } + static final String dfa_8s = "\30\uffff"; + static final String dfa_9s = "\1\uffff\23\24\4\uffff"; + static final String dfa_10s = "\1\6\23\41\4\uffff"; + static final String dfa_11s = "\1\120\23\115\4\uffff"; + static final String dfa_12s = "\24\uffff\1\1\1\2\1\3\1\4"; + static final String dfa_13s = "\30\uffff}>"; + static final String[] dfa_14s = { + "\1\1\1\27\1\2\1\3\1\4\1\26\1\27\41\uffff\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\21\uffff\2\24\1\25", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "\1\24\4\uffff\1\25\2\24\25\uffff\12\24\3\uffff\3\24", + "", + "", + "", + "" + }; + + static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s); + static final short[] dfa_9 = DFA.unpackEncodedString(dfa_9s); + static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s); + static final char[] dfa_11 = DFA.unpackEncodedStringToUnsignedChars(dfa_11s); + static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s); + static final short[] dfa_13 = DFA.unpackEncodedString(dfa_13s); + static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s); + + class DFA32 extends DFA { + + public DFA32(BaseRecognizer recognizer) { + this.recognizer = recognizer; + this.decisionNumber = 32; + this.eot = dfa_8; + this.eof = dfa_9; + this.min = dfa_10; + this.max = dfa_11; + this.accept = dfa_12; + this.special = dfa_13; + this.transition = dfa_14; + } + public String getDescription() { + return "2135:2: (this_VLSAtomicConstant_0= ruleVLSAtomicConstant | this_VLSAtomicFunction_1= ruleVLSAtomicFunction | this_VLSVariable_2= ruleVLSVariable | this_VLSDefinedTerm_3= ruleVLSDefinedTerm )"; + } + } + + + public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000042480C00012L}); + public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000001000000L}); + public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000002000000L}); + public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000004000000L}); + public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000008000000L}); + public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000010000000L}); + public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000020000000L}); + public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000040000000L}); + public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000100000000L}); + public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000020L}); + public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000200000000L}); + public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000800000000L}); + public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000001000000000L}); + public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x00000000000001C0L}); + public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000008000000000L}); + public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x1FFFC00000000000L}); + public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x1FFFC04000001FC0L,0x000000000001C700L}); + public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000018000000000L}); + public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x1FFFC14300000140L}); + public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000010000000000L}); + public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000380000000040L}); + public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x1FFFC04000001FD0L,0x000000000001C700L}); + public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000200L}); + public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x1FFFC04200000142L}); + public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000004200000002L}); + public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x1FFFC0C300000140L}); + public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000200000002L}); + public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000008000000002L}); + public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x2000000000000000L}); + public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x1FFFC00000001FC0L,0x000000000001C000L}); + public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x4000000000000002L}); + public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x1FFFC00000000740L,0x000000000000C000L}); + public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x8000000000000002L}); + public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000FFL}); + public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L}); + public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L}); + public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000800L}); + public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000008200000000L}); + public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000002L,0x0000000000003800L}); + public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000004000000002L}); + +} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/scoping/AbstractVampireLanguageScopeProvider.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/scoping/AbstractVampireLanguageScopeProvider.java new file mode 100644 index 000000000..28f2f810e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/scoping/AbstractVampireLanguageScopeProvider.java @@ -0,0 +1,9 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.scoping; + +import org.eclipse.xtext.scoping.impl.DelegatingScopeProvider; + +public abstract class AbstractVampireLanguageScopeProvider extends DelegatingScopeProvider { +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/serializer/VampireLanguageSemanticSequencer.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/serializer/VampireLanguageSemanticSequencer.java new file mode 100644 index 000000000..884180e16 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/serializer/VampireLanguageSemanticSequencer.java @@ -0,0 +1,1131 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.serializer; + +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel; +import com.google.inject.Inject; +import java.util.Set; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.xtext.Action; +import org.eclipse.xtext.Parameter; +import org.eclipse.xtext.ParserRule; +import org.eclipse.xtext.serializer.ISerializationContext; +import org.eclipse.xtext.serializer.acceptor.SequenceFeeder; +import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer; +import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; + +@SuppressWarnings("all") +public class VampireLanguageSemanticSequencer extends AbstractDelegatingSemanticSequencer { + + @Inject + private VampireLanguageGrammarAccess grammarAccess; + + @Override + public void sequence(ISerializationContext context, EObject semanticObject) { + EPackage epackage = semanticObject.eClass().getEPackage(); + ParserRule rule = context.getParserRule(); + Action action = context.getAssignedAction(); + Set parameters = context.getEnabledBooleanParameters(); + if (epackage == VampireLanguagePackage.eINSTANCE) + switch (semanticObject.eClass().getClassifierID()) { + case VampireLanguagePackage.VLS_AND: + sequence_VLSBinary(context, (VLSAnd) semanticObject); + return; + case VampireLanguagePackage.VLS_ANNOTATION: + if (rule == grammarAccess.getVLSAnnotationTermsRule()) { + sequence_VLSAnnotationTerms(context, (VLSAnnotation) semanticObject); + return; + } + else if (rule == grammarAccess.getVLSAnnotationRule()) { + sequence_VLSAnnotation(context, (VLSAnnotation) semanticObject); + return; + } + else break; + case VampireLanguagePackage.VLS_ASSIGNMENT: + sequence_VLSUnaryInfix(context, (VLSAssignment) semanticObject); + return; + case VampireLanguagePackage.VLS_COMMENT: + sequence_VLSComment(context, (VLSComment) semanticObject); + return; + case VampireLanguagePackage.VLS_CONSTANT: + sequence_VLSAtomicConstant(context, (VLSConstant) semanticObject); + return; + case VampireLanguagePackage.VLS_DOUBLE_QUOTE: + sequence_VLSDefinedTerm(context, (VLSDoubleQuote) semanticObject); + return; + case VampireLanguagePackage.VLS_EQUALITY: + sequence_VLSUnaryInfix(context, (VLSEquality) semanticObject); + return; + case VampireLanguagePackage.VLS_EQUIVALENT: + sequence_VLSBinary(context, (VLSEquivalent) semanticObject); + return; + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER: + sequence_VLSExistentialQuantifier(context, (VLSExistentialQuantifier) semanticObject); + return; + case VampireLanguagePackage.VLS_FALSE: + sequence_VLSAtomicConstant(context, (VLSFalse) semanticObject); + return; + case VampireLanguagePackage.VLS_FINITE_MODEL: + sequence_VLSConfirmations(context, (VLSFiniteModel) semanticObject); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA: + sequence_VLSFofFormula(context, (VLSFofFormula) semanticObject); + return; + case VampireLanguagePackage.VLS_FUNCTION: + sequence_VLSAtomicFunction(context, (VLSFunction) semanticObject); + return; + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM: + sequence_VLSFunctionAsTerm(context, (VLSFunctionAsTerm) semanticObject); + return; + case VampireLanguagePackage.VLS_IMPLIES: + sequence_VLSBinary(context, (VLSImplies) semanticObject); + return; + case VampireLanguagePackage.VLS_INEQUALITY: + sequence_VLSUnaryInfix(context, (VLSInequality) semanticObject); + return; + case VampireLanguagePackage.VLS_INT: + sequence_VLSDefinedTerm(context, (VLSInt) semanticObject); + return; + case VampireLanguagePackage.VLS_LESS: + sequence_VLSAtomicFunction(context, (VLSLess) semanticObject); + return; + case VampireLanguagePackage.VLS_NAND: + sequence_VLSBinary(context, (VLSNand) semanticObject); + return; + case VampireLanguagePackage.VLS_NOR: + sequence_VLSBinary(context, (VLSNor) semanticObject); + return; + case VampireLanguagePackage.VLS_OR: + sequence_VLSBinary(context, (VLSOr) semanticObject); + return; + case VampireLanguagePackage.VLS_OTHER_DECLARATION: + sequence_VLSOtherDeclaration(context, (VLSOtherDeclaration) semanticObject); + return; + case VampireLanguagePackage.VLS_REV_IMPLIES: + sequence_VLSBinary(context, (VLSRevImplies) semanticObject); + return; + case VampireLanguagePackage.VLS_SATISFIABLE: + sequence_VLSConfirmations(context, (VLSSatisfiable) semanticObject); + return; + case VampireLanguagePackage.VLS_TERM: + sequence_VLSCommentTerm(context, (VLSTerm) semanticObject); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA: + sequence_VLSTffFormula(context, (VLSTffFormula) semanticObject); + return; + case VampireLanguagePackage.VLS_TRUE: + sequence_VLSAtomicConstant(context, (VLSTrue) semanticObject); + return; + case VampireLanguagePackage.VLS_TRYING: + sequence_VLSConfirmations(context, (VLSTrying) semanticObject); + return; + case VampireLanguagePackage.VLS_TYPE_DEF: + if (rule == grammarAccess.getVLSTypeDefRule()) { + sequence_VLSTypeDef(context, (VLSTypeDef) semanticObject); + return; + } + else if (rule == grammarAccess.getVLSUnitaryTermRule()) { + sequence_VLSUnitaryTerm(context, (VLSTypeDef) semanticObject); + return; + } + else break; + case VampireLanguagePackage.VLS_UNARY_NEGATION: + sequence_VLSUnaryNegation(context, (VLSUnaryNegation) semanticObject); + return; + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER: + sequence_VLSUniversalQuantifier(context, (VLSUniversalQuantifier) semanticObject); + return; + case VampireLanguagePackage.VLS_VARIABLE: + sequence_VLSVariable(context, (VLSVariable) semanticObject); + return; + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION: + sequence_VLSVariableDeclaration(context, (VLSVariableDeclaration) semanticObject); + return; + case VampireLanguagePackage.VLS_WARNING: + sequence_VLSConfirmations(context, (VLSWarning) semanticObject); + return; + case VampireLanguagePackage.VLS_XNOR: + sequence_VLSBinary(context, (VLSXnor) semanticObject); + return; + case VampireLanguagePackage.VAMPIRE_MODEL: + sequence_VampireModel(context, (VampireModel) semanticObject); + return; + } + if (errorAcceptor != null) + errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); + } + + /** + * Contexts: + * VLSAnnotationTerms returns VLSAnnotation + * + * Constraint: + * (terms+=VLSAnnotation terms+=VLSAnnotation*) + */ + protected void sequence_VLSAnnotationTerms(ISerializationContext context, VLSAnnotation semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSAnnotation returns VLSAnnotation + * + * Constraint: + * (((name=LOWER_WORD_ID | name=SINGLE_QUOTE | name=VLSRole) followup=VLSAnnotationTerms) | followup=VLSAnnotationTerms)? + */ + protected void sequence_VLSAnnotation(ISerializationContext context, VLSAnnotation semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSConstant + * VLSTerm returns VLSConstant + * VLSBinary returns VLSConstant + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSConstant + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSConstant + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSConstant + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSConstant + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSConstant + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSConstant + * VLSBinary.VLSAnd_1_1_0 returns VLSConstant + * VLSBinary.VLSOr_1_2_0 returns VLSConstant + * VLSUnitaryFormula returns VLSConstant + * VLSUnaryInfix returns VLSConstant + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSConstant + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSConstant + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSConstant + * VLSAtomic returns VLSConstant + * VLSAtomicConstant returns VLSConstant + * + * Constraint: + * (name=LOWER_WORD_ID | name=SINGLE_QUOTE | name=DOLLAR_ID | name=DOUBLE_DOLLAR_ID | name=VLSRole) + */ + protected void sequence_VLSAtomicConstant(ISerializationContext context, VLSConstant semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSFalse + * VLSTerm returns VLSFalse + * VLSBinary returns VLSFalse + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSFalse + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSFalse + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSFalse + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSFalse + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSFalse + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSFalse + * VLSBinary.VLSAnd_1_1_0 returns VLSFalse + * VLSBinary.VLSOr_1_2_0 returns VLSFalse + * VLSUnitaryFormula returns VLSFalse + * VLSUnaryInfix returns VLSFalse + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSFalse + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSFalse + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSFalse + * VLSAtomic returns VLSFalse + * VLSAtomicConstant returns VLSFalse + * + * Constraint: + * {VLSFalse} + */ + protected void sequence_VLSAtomicConstant(ISerializationContext context, VLSFalse semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSTrue + * VLSTerm returns VLSTrue + * VLSBinary returns VLSTrue + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSTrue + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSTrue + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSTrue + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSTrue + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSTrue + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSTrue + * VLSBinary.VLSAnd_1_1_0 returns VLSTrue + * VLSBinary.VLSOr_1_2_0 returns VLSTrue + * VLSUnitaryFormula returns VLSTrue + * VLSUnaryInfix returns VLSTrue + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSTrue + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSTrue + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSTrue + * VLSAtomic returns VLSTrue + * VLSAtomicConstant returns VLSTrue + * + * Constraint: + * {VLSTrue} + */ + protected void sequence_VLSAtomicConstant(ISerializationContext context, VLSTrue semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSFunction + * VLSTerm returns VLSFunction + * VLSBinary returns VLSFunction + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSFunction + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSFunction + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSFunction + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSFunction + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSFunction + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSFunction + * VLSBinary.VLSAnd_1_1_0 returns VLSFunction + * VLSBinary.VLSOr_1_2_0 returns VLSFunction + * VLSUnitaryFormula returns VLSFunction + * VLSUnaryInfix returns VLSFunction + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSFunction + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSFunction + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSFunction + * VLSAtomic returns VLSFunction + * VLSAtomicFunction returns VLSFunction + * + * Constraint: + * ( + * (constant=LOWER_WORD_ID | constant=SINGLE_QUOTE | constant=DOLLAR_ID | constant=DOUBLE_DOLLAR_ID | constant=VLSRole) + * terms+=VLSFofTerm + * terms+=VLSFofTerm* + * ) + */ + protected void sequence_VLSAtomicFunction(ISerializationContext context, VLSFunction semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSLess + * VLSTerm returns VLSLess + * VLSBinary returns VLSLess + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSLess + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSLess + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSLess + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSLess + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSLess + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSLess + * VLSBinary.VLSAnd_1_1_0 returns VLSLess + * VLSBinary.VLSOr_1_2_0 returns VLSLess + * VLSUnitaryFormula returns VLSLess + * VLSUnaryInfix returns VLSLess + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSLess + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSLess + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSLess + * VLSAtomic returns VLSLess + * VLSAtomicFunction returns VLSLess + * + * Constraint: + * (name='$less' terms+=VLSFofTerm terms+=VLSFofTerm) + */ + protected void sequence_VLSAtomicFunction(ISerializationContext context, VLSLess semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSAnd + * VLSTerm returns VLSAnd + * VLSBinary returns VLSAnd + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSAnd + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSAnd + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSAnd + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSAnd + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSAnd + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSAnd + * VLSBinary.VLSAnd_1_1_0 returns VLSAnd + * VLSBinary.VLSOr_1_2_0 returns VLSAnd + * VLSUnitaryFormula returns VLSAnd + * + * Constraint: + * (left=VLSBinary_VLSAnd_1_1_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSAnd semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_AND__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_AND__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_AND__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_AND__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSAndLeftAction_1_1_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSEquivalent + * VLSTerm returns VLSEquivalent + * VLSBinary returns VLSEquivalent + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSEquivalent + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSEquivalent + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSEquivalent + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSEquivalent + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSEquivalent + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSEquivalent + * VLSBinary.VLSAnd_1_1_0 returns VLSEquivalent + * VLSBinary.VLSOr_1_2_0 returns VLSEquivalent + * VLSUnitaryFormula returns VLSEquivalent + * + * Constraint: + * (left=VLSBinary_VLSEquivalent_1_0_0_0_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSEquivalent semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_EQUIVALENT__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_EQUIVALENT__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_EQUIVALENT__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_EQUIVALENT__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSEquivalentLeftAction_1_0_0_0_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSImplies + * VLSTerm returns VLSImplies + * VLSBinary returns VLSImplies + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSImplies + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSImplies + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSImplies + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSImplies + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSImplies + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSImplies + * VLSBinary.VLSAnd_1_1_0 returns VLSImplies + * VLSBinary.VLSOr_1_2_0 returns VLSImplies + * VLSUnitaryFormula returns VLSImplies + * + * Constraint: + * (left=VLSBinary_VLSImplies_1_0_0_1_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSImplies semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_IMPLIES__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_IMPLIES__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_IMPLIES__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_IMPLIES__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSImpliesLeftAction_1_0_0_1_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSNand + * VLSTerm returns VLSNand + * VLSBinary returns VLSNand + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSNand + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSNand + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSNand + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSNand + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSNand + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSNand + * VLSBinary.VLSAnd_1_1_0 returns VLSNand + * VLSBinary.VLSOr_1_2_0 returns VLSNand + * VLSUnitaryFormula returns VLSNand + * + * Constraint: + * (left=VLSBinary_VLSNand_1_0_0_5_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSNand semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_NAND__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_NAND__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_NAND__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_NAND__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSNandLeftAction_1_0_0_5_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSNor + * VLSTerm returns VLSNor + * VLSBinary returns VLSNor + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSNor + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSNor + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSNor + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSNor + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSNor + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSNor + * VLSBinary.VLSAnd_1_1_0 returns VLSNor + * VLSBinary.VLSOr_1_2_0 returns VLSNor + * VLSUnitaryFormula returns VLSNor + * + * Constraint: + * (left=VLSBinary_VLSNor_1_0_0_4_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSNor semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_NOR__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_NOR__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_NOR__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_NOR__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSNorLeftAction_1_0_0_4_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSOr + * VLSTerm returns VLSOr + * VLSBinary returns VLSOr + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSOr + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSOr + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSOr + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSOr + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSOr + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSOr + * VLSBinary.VLSAnd_1_1_0 returns VLSOr + * VLSBinary.VLSOr_1_2_0 returns VLSOr + * VLSUnitaryFormula returns VLSOr + * + * Constraint: + * (left=VLSBinary_VLSOr_1_2_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSOr semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_OR__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_OR__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_OR__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_OR__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSOrLeftAction_1_2_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSRevImplies + * VLSTerm returns VLSRevImplies + * VLSBinary returns VLSRevImplies + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSRevImplies + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSRevImplies + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSRevImplies + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSRevImplies + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSRevImplies + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSRevImplies + * VLSBinary.VLSAnd_1_1_0 returns VLSRevImplies + * VLSBinary.VLSOr_1_2_0 returns VLSRevImplies + * VLSUnitaryFormula returns VLSRevImplies + * + * Constraint: + * (left=VLSBinary_VLSRevImplies_1_0_0_2_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSRevImplies semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_REV_IMPLIES__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_REV_IMPLIES__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_REV_IMPLIES__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_REV_IMPLIES__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSRevImpliesLeftAction_1_0_0_2_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSXnor + * VLSTerm returns VLSXnor + * VLSBinary returns VLSXnor + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSXnor + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSXnor + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSXnor + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSXnor + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSXnor + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSXnor + * VLSBinary.VLSAnd_1_1_0 returns VLSXnor + * VLSBinary.VLSOr_1_2_0 returns VLSXnor + * VLSUnitaryFormula returns VLSXnor + * + * Constraint: + * (left=VLSBinary_VLSXnor_1_0_0_3_0 right=VLSUnitaryFormula) + */ + protected void sequence_VLSBinary(ISerializationContext context, VLSXnor semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_XNOR__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_XNOR__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_XNOR__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_XNOR__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSBinaryAccess().getVLSXnorLeftAction_1_0_0_3_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSBinaryAccess().getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSTerm + * VLSCommentTerm returns VLSTerm + * + * Constraint: + * comment=SINGLE_COMMENT + */ + protected void sequence_VLSCommentTerm(ISerializationContext context, VLSTerm semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_TERM__COMMENT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_TERM__COMMENT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSCommentTermAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0(), semanticObject.getComment()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSComment returns VLSComment + * + * Constraint: + * comment=SINGLE_COMMENT + */ + protected void sequence_VLSComment(ISerializationContext context, VLSComment semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_COMMENT__COMMENT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_COMMENT__COMMENT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSCommentAccess().getCommentSINGLE_COMMENTTerminalRuleCall_0(), semanticObject.getComment()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSConfirmations returns VLSFiniteModel + * + * Constraint: + * {VLSFiniteModel} + */ + protected void sequence_VLSConfirmations(ISerializationContext context, VLSFiniteModel semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSConfirmations returns VLSSatisfiable + * + * Constraint: + * {VLSSatisfiable} + */ + protected void sequence_VLSConfirmations(ISerializationContext context, VLSSatisfiable semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSConfirmations returns VLSTrying + * + * Constraint: + * name=LITERAL + */ + protected void sequence_VLSConfirmations(ISerializationContext context, VLSTrying semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_TRYING__NAME) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_TRYING__NAME)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSConfirmationsAccess().getNameLITERALTerminalRuleCall_2_3_0(), semanticObject.getName()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSConfirmations returns VLSWarning + * + * Constraint: + * {VLSWarning} + */ + protected void sequence_VLSConfirmations(ISerializationContext context, VLSWarning semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSDoubleQuote + * VLSTerm returns VLSDoubleQuote + * VLSBinary returns VLSDoubleQuote + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSDoubleQuote + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSDoubleQuote + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSDoubleQuote + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSDoubleQuote + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSDoubleQuote + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSDoubleQuote + * VLSBinary.VLSAnd_1_1_0 returns VLSDoubleQuote + * VLSBinary.VLSOr_1_2_0 returns VLSDoubleQuote + * VLSUnitaryFormula returns VLSDoubleQuote + * VLSUnaryInfix returns VLSDoubleQuote + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSDoubleQuote + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSDoubleQuote + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSDoubleQuote + * VLSAtomic returns VLSDoubleQuote + * VLSFofTerm returns VLSDoubleQuote + * VLSDefinedTerm returns VLSDoubleQuote + * + * Constraint: + * value=DOUBLE_QUOTE + */ + protected void sequence_VLSDefinedTerm(ISerializationContext context, VLSDoubleQuote semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_DEFINED_TERM__VALUE) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_DEFINED_TERM__VALUE)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSDefinedTermAccess().getValueDOUBLE_QUOTETerminalRuleCall_1_1_0(), semanticObject.getValue()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSInt + * VLSTerm returns VLSInt + * VLSBinary returns VLSInt + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSInt + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSInt + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSInt + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSInt + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSInt + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSInt + * VLSBinary.VLSAnd_1_1_0 returns VLSInt + * VLSBinary.VLSOr_1_2_0 returns VLSInt + * VLSUnitaryFormula returns VLSInt + * VLSUnaryInfix returns VLSInt + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSInt + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSInt + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSInt + * VLSAtomic returns VLSInt + * VLSFofTerm returns VLSInt + * VLSDefinedTerm returns VLSInt + * + * Constraint: + * value=SIGNED_LITERAL + */ + protected void sequence_VLSDefinedTerm(ISerializationContext context, VLSInt semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_DEFINED_TERM__VALUE) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_DEFINED_TERM__VALUE)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSDefinedTermAccess().getValueSIGNED_LITERALTerminalRuleCall_0_1_0(), semanticObject.getValue()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSExistentialQuantifier + * VLSTerm returns VLSExistentialQuantifier + * VLSBinary returns VLSExistentialQuantifier + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSExistentialQuantifier + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSExistentialQuantifier + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSExistentialQuantifier + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSExistentialQuantifier + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSExistentialQuantifier + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSExistentialQuantifier + * VLSBinary.VLSAnd_1_1_0 returns VLSExistentialQuantifier + * VLSBinary.VLSOr_1_2_0 returns VLSExistentialQuantifier + * VLSUnitaryFormula returns VLSExistentialQuantifier + * VLSExistentialQuantifier returns VLSExistentialQuantifier + * + * Constraint: + * ( + * (variables+=VLSVariable | variables+=VLSVariableDeclaration) + * variables+=VLSVariable? + * (variables+=VLSVariableDeclaration? variables+=VLSVariable?)* + * operand=VLSUnitaryFormula + * ) + */ + protected void sequence_VLSExistentialQuantifier(ISerializationContext context, VLSExistentialQuantifier semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSFofFormula returns VLSFofFormula + * + * Constraint: + * ((name=LOWER_WORD_ID | name=SIGNED_LITERAL | name=SINGLE_QUOTE) fofRole=VLSRole fofFormula=VLSTerm annotations=VLSAnnotation?) + */ + protected void sequence_VLSFofFormula(ISerializationContext context, VLSFofFormula semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSFofTerm returns VLSFunctionAsTerm + * VLSFunctionAsTerm returns VLSFunctionAsTerm + * + * Constraint: + * ((functor=LOWER_WORD_ID | functor=SINGLE_QUOTE | functor=DOLLAR_ID | functor=DOUBLE_DOLLAR_ID) (terms+=VLSFofTerm terms+=VLSFofTerm*)?) + */ + protected void sequence_VLSFunctionAsTerm(ISerializationContext context, VLSFunctionAsTerm semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSOtherDeclaration + * VLSDeclaration returns VLSOtherDeclaration + * VLSOtherDeclaration returns VLSOtherDeclaration + * + * Constraint: + * (name=VLSAtomicConstant type=VLSTypeDef) + */ + protected void sequence_VLSOtherDeclaration(ISerializationContext context, VLSOtherDeclaration semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_OTHER_DECLARATION__NAME) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_OTHER_DECLARATION__NAME)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_DECLARATION__TYPE) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_DECLARATION__TYPE)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSOtherDeclarationAccess().getNameVLSAtomicConstantParserRuleCall_0_0(), semanticObject.getName()); + feeder.accept(grammarAccess.getVLSOtherDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0(), semanticObject.getType()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffFormula returns VLSTffFormula + * + * Constraint: + * (name=VLSTffName tffRole=VLSRole fofFormula=VLSTffTerm annotations=VLSAnnotation?) + */ + protected void sequence_VLSTffFormula(ISerializationContext context, VLSTffFormula semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTypeDef returns VLSTypeDef + * + * Constraint: + * (typeSig=VLSUnitaryTerm mapsTo=VLSAtomicConstant?) + */ + protected void sequence_VLSTypeDef(ISerializationContext context, VLSTypeDef semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSAssignment + * VLSTerm returns VLSAssignment + * VLSBinary returns VLSAssignment + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSAssignment + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSAssignment + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSAssignment + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSAssignment + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSAssignment + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSAssignment + * VLSBinary.VLSAnd_1_1_0 returns VLSAssignment + * VLSBinary.VLSOr_1_2_0 returns VLSAssignment + * VLSUnitaryFormula returns VLSAssignment + * VLSUnaryInfix returns VLSAssignment + * + * Constraint: + * (left=VLSUnaryInfix_VLSAssignment_1_0_2_0 right=VLSAtomic) + */ + protected void sequence_VLSUnaryInfix(ISerializationContext context, VLSAssignment semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_ASSIGNMENT__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_ASSIGNMENT__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_ASSIGNMENT__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_ASSIGNMENT__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSUnaryInfixAccess().getVLSAssignmentLeftAction_1_0_2_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSEquality + * VLSTerm returns VLSEquality + * VLSBinary returns VLSEquality + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSEquality + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSEquality + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSEquality + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSEquality + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSEquality + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSEquality + * VLSBinary.VLSAnd_1_1_0 returns VLSEquality + * VLSBinary.VLSOr_1_2_0 returns VLSEquality + * VLSUnitaryFormula returns VLSEquality + * VLSUnaryInfix returns VLSEquality + * + * Constraint: + * (left=VLSUnaryInfix_VLSEquality_1_0_1_0 right=VLSAtomic) + */ + protected void sequence_VLSUnaryInfix(ISerializationContext context, VLSEquality semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_EQUALITY__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_EQUALITY__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_EQUALITY__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_EQUALITY__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSUnaryInfixAccess().getVLSEqualityLeftAction_1_0_1_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSInequality + * VLSTerm returns VLSInequality + * VLSBinary returns VLSInequality + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSInequality + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSInequality + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSInequality + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSInequality + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSInequality + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSInequality + * VLSBinary.VLSAnd_1_1_0 returns VLSInequality + * VLSBinary.VLSOr_1_2_0 returns VLSInequality + * VLSUnitaryFormula returns VLSInequality + * VLSUnaryInfix returns VLSInequality + * + * Constraint: + * (left=VLSUnaryInfix_VLSInequality_1_0_0_0 right=VLSAtomic) + */ + protected void sequence_VLSUnaryInfix(ISerializationContext context, VLSInequality semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_INEQUALITY__LEFT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_INEQUALITY__LEFT)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_INEQUALITY__RIGHT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_INEQUALITY__RIGHT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSUnaryInfixAccess().getVLSInequalityLeftAction_1_0_0_0(), semanticObject.getLeft()); + feeder.accept(grammarAccess.getVLSUnaryInfixAccess().getRightVLSAtomicParserRuleCall_1_1_0(), semanticObject.getRight()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSUnaryNegation + * VLSTerm returns VLSUnaryNegation + * VLSBinary returns VLSUnaryNegation + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSUnaryNegation + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSUnaryNegation + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSUnaryNegation + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSUnaryNegation + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSUnaryNegation + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSUnaryNegation + * VLSBinary.VLSAnd_1_1_0 returns VLSUnaryNegation + * VLSBinary.VLSOr_1_2_0 returns VLSUnaryNegation + * VLSUnitaryFormula returns VLSUnaryNegation + * VLSUnaryNegation returns VLSUnaryNegation + * + * Constraint: + * operand=VLSUnitaryFormula + */ + protected void sequence_VLSUnaryNegation(ISerializationContext context, VLSUnaryNegation semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_UNARY_NEGATION__OPERAND) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_UNARY_NEGATION__OPERAND)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSUnaryNegationAccess().getOperandVLSUnitaryFormulaParserRuleCall_2_0(), semanticObject.getOperand()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSUnitaryTerm returns VLSTypeDef + * + * Constraint: + * (initType=VLSAtomic nextType=VLSAtomicConstant*) + */ + protected void sequence_VLSUnitaryTerm(ISerializationContext context, VLSTypeDef semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSUniversalQuantifier + * VLSTerm returns VLSUniversalQuantifier + * VLSBinary returns VLSUniversalQuantifier + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSUniversalQuantifier + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSUniversalQuantifier + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSUniversalQuantifier + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSUniversalQuantifier + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSUniversalQuantifier + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSUniversalQuantifier + * VLSBinary.VLSAnd_1_1_0 returns VLSUniversalQuantifier + * VLSBinary.VLSOr_1_2_0 returns VLSUniversalQuantifier + * VLSUnitaryFormula returns VLSUniversalQuantifier + * VLSUniversalQuantifier returns VLSUniversalQuantifier + * + * Constraint: + * ( + * (variables+=VLSVariable | variables+=VLSVariableDeclaration) + * variables+=VLSVariableDeclaration? + * (variables+=VLSVariable? variables+=VLSVariableDeclaration?)* + * operand=VLSUnitaryFormula + * ) + */ + protected void sequence_VLSUniversalQuantifier(ISerializationContext context, VLSUniversalQuantifier semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSVariableDeclaration + * VLSDeclaration returns VLSVariableDeclaration + * VLSVariableDeclaration returns VLSVariableDeclaration + * + * Constraint: + * (name=VLSVariable type=VLSTypeDef) + */ + protected void sequence_VLSVariableDeclaration(ISerializationContext context, VLSVariableDeclaration semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_VARIABLE_DECLARATION__NAME) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_VARIABLE_DECLARATION__NAME)); + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_DECLARATION__TYPE) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_DECLARATION__TYPE)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSVariableDeclarationAccess().getNameVLSVariableParserRuleCall_0_0(), semanticObject.getName()); + feeder.accept(grammarAccess.getVLSVariableDeclarationAccess().getTypeVLSTypeDefParserRuleCall_2_0(), semanticObject.getType()); + feeder.finish(); + } + + + /** + * Contexts: + * VLSTffTerm returns VLSVariable + * VLSTerm returns VLSVariable + * VLSBinary returns VLSVariable + * VLSBinary.VLSEquivalent_1_0_0_0_0 returns VLSVariable + * VLSBinary.VLSImplies_1_0_0_1_0 returns VLSVariable + * VLSBinary.VLSRevImplies_1_0_0_2_0 returns VLSVariable + * VLSBinary.VLSXnor_1_0_0_3_0 returns VLSVariable + * VLSBinary.VLSNor_1_0_0_4_0 returns VLSVariable + * VLSBinary.VLSNand_1_0_0_5_0 returns VLSVariable + * VLSBinary.VLSAnd_1_1_0 returns VLSVariable + * VLSBinary.VLSOr_1_2_0 returns VLSVariable + * VLSUnitaryFormula returns VLSVariable + * VLSUnaryInfix returns VLSVariable + * VLSUnaryInfix.VLSInequality_1_0_0_0 returns VLSVariable + * VLSUnaryInfix.VLSEquality_1_0_1_0 returns VLSVariable + * VLSUnaryInfix.VLSAssignment_1_0_2_0 returns VLSVariable + * VLSAtomic returns VLSVariable + * VLSVariable returns VLSVariable + * VLSFofTerm returns VLSVariable + * + * Constraint: + * name=UPPER_WORD_ID + */ + protected void sequence_VLSVariable(ISerializationContext context, VLSVariable semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, VampireLanguagePackage.Literals.VLS_VARIABLE__NAME) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, VampireLanguagePackage.Literals.VLS_VARIABLE__NAME)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getVLSVariableAccess().getNameUPPER_WORD_IDTerminalRuleCall_0(), semanticObject.getName()); + feeder.finish(); + } + + + /** + * Contexts: + * VampireModel returns VampireModel + * + * Constraint: + * (comments+=VLSComment | confirmations+=VLSConfirmations | formulas+=VLSFofFormula | tfformulas+=VLSTffFormula)+ + */ + protected void sequence_VampireModel(ISerializationContext context, VampireModel semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/serializer/VampireLanguageSyntacticSequencer.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/serializer/VampireLanguageSyntacticSequencer.java new file mode 100644 index 000000000..6f66f66bd --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/serializer/VampireLanguageSyntacticSequencer.java @@ -0,0 +1,151 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.serializer; + +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.IGrammarAccess; +import org.eclipse.xtext.RuleCall; +import org.eclipse.xtext.nodemodel.INode; +import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias; +import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias; +import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable; +import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition; +import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer; + +@SuppressWarnings("all") +public class VampireLanguageSyntacticSequencer extends AbstractSyntacticSequencer { + + protected VampireLanguageGrammarAccess grammarAccess; + protected AbstractElementAlias match_VLSAnnotation_LeftSquareBracketKeyword_0_q; + protected AbstractElementAlias match_VLSAnnotation_RightSquareBracketKeyword_3_q; + protected AbstractElementAlias match_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_a; + protected AbstractElementAlias match_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_p; + + @Inject + protected void init(IGrammarAccess access) { + grammarAccess = (VampireLanguageGrammarAccess) access; + match_VLSAnnotation_LeftSquareBracketKeyword_0_q = new TokenAlias(false, true, grammarAccess.getVLSAnnotationAccess().getLeftSquareBracketKeyword_0()); + match_VLSAnnotation_RightSquareBracketKeyword_3_q = new TokenAlias(false, true, grammarAccess.getVLSAnnotationAccess().getRightSquareBracketKeyword_3()); + match_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_a = new TokenAlias(true, true, grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); + match_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_p = new TokenAlias(true, false, grammarAccess.getVLSUnitaryFormulaAccess().getLeftParenthesisKeyword_4_0()); + } + + @Override + protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) { + return ""; + } + + + @Override + protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) { + if (transition.getAmbiguousSyntaxes().isEmpty()) return; + List transitionNodes = collectNodes(fromNode, toNode); + for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) { + List syntaxNodes = getNodesFor(transitionNodes, syntax); + if (match_VLSAnnotation_LeftSquareBracketKeyword_0_q.equals(syntax)) + emit_VLSAnnotation_LeftSquareBracketKeyword_0_q(semanticObject, getLastNavigableState(), syntaxNodes); + else if (match_VLSAnnotation_RightSquareBracketKeyword_3_q.equals(syntax)) + emit_VLSAnnotation_RightSquareBracketKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes); + else if (match_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_a.equals(syntax)) + emit_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_a(semanticObject, getLastNavigableState(), syntaxNodes); + else if (match_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_p.equals(syntax)) + emit_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_p(semanticObject, getLastNavigableState(), syntaxNodes); + else acceptNodes(getLastNavigableState(), syntaxNodes); + } + } + + /** + * Ambiguous syntax: + * '['? + * + * This ambiguous syntax occurs at: + * (rule start) (ambiguity) '(' followup=VLSAnnotationTerms + * (rule start) (ambiguity) ']'? (rule start) + * (rule start) (ambiguity) name=LOWER_WORD_ID + * (rule start) (ambiguity) name=SINGLE_QUOTE + * (rule start) (ambiguity) name=VLSRole + */ + protected void emit_VLSAnnotation_LeftSquareBracketKeyword_0_q(EObject semanticObject, ISynNavigable transition, List nodes) { + acceptNodes(transition, nodes); + } + + /** + * Ambiguous syntax: + * ']'? + * + * This ambiguous syntax occurs at: + * (rule start) '['? (ambiguity) (rule start) + * followup=VLSAnnotationTerms ')' (ambiguity) (rule end) + * name=LOWER_WORD_ID (ambiguity) (rule end) + * name=SINGLE_QUOTE (ambiguity) (rule end) + * name=VLSRole (ambiguity) (rule end) + */ + protected void emit_VLSAnnotation_RightSquareBracketKeyword_3_q(EObject semanticObject, ISynNavigable transition, List nodes) { + acceptNodes(transition, nodes); + } + + /** + * Ambiguous syntax: + * '('* + * + * This ambiguous syntax occurs at: + * (rule start) (ambiguity) '!' '[' variables+=VLSVariable + * (rule start) (ambiguity) '!' '[' variables+=VLSVariableDeclaration + * (rule start) (ambiguity) '$false' (rule start) + * (rule start) (ambiguity) '$true' (rule start) + * (rule start) (ambiguity) '?' '[' variables+=VLSVariable + * (rule start) (ambiguity) '?' '[' variables+=VLSVariableDeclaration + * (rule start) (ambiguity) '~' operand=VLSUnitaryFormula + * (rule start) (ambiguity) constant=DOLLAR_ID + * (rule start) (ambiguity) constant=DOUBLE_DOLLAR_ID + * (rule start) (ambiguity) constant=LOWER_WORD_ID + * (rule start) (ambiguity) constant=SINGLE_QUOTE + * (rule start) (ambiguity) constant=VLSRole + * (rule start) (ambiguity) name='$less' + * (rule start) (ambiguity) name=DOLLAR_ID + * (rule start) (ambiguity) name=DOUBLE_DOLLAR_ID + * (rule start) (ambiguity) name=LOWER_WORD_ID + * (rule start) (ambiguity) name=SINGLE_QUOTE + * (rule start) (ambiguity) name=UPPER_WORD_ID + * (rule start) (ambiguity) name=VLSRole + * (rule start) (ambiguity) value=DOUBLE_QUOTE + * (rule start) (ambiguity) value=SIGNED_LITERAL + * (rule start) (ambiguity) {VLSAnd.left=} + * (rule start) (ambiguity) {VLSAssignment.left=} + * (rule start) (ambiguity) {VLSEquality.left=} + * (rule start) (ambiguity) {VLSEquivalent.left=} + * (rule start) (ambiguity) {VLSImplies.left=} + * (rule start) (ambiguity) {VLSInequality.left=} + * (rule start) (ambiguity) {VLSNand.left=} + * (rule start) (ambiguity) {VLSNor.left=} + * (rule start) (ambiguity) {VLSOr.left=} + * (rule start) (ambiguity) {VLSRevImplies.left=} + * (rule start) (ambiguity) {VLSXnor.left=} + */ + protected void emit_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_a(EObject semanticObject, ISynNavigable transition, List nodes) { + acceptNodes(transition, nodes); + } + + /** + * Ambiguous syntax: + * '('+ + * + * This ambiguous syntax occurs at: + * (rule start) (ambiguity) {VLSAnd.left=} + * (rule start) (ambiguity) {VLSEquivalent.left=} + * (rule start) (ambiguity) {VLSImplies.left=} + * (rule start) (ambiguity) {VLSNand.left=} + * (rule start) (ambiguity) {VLSNor.left=} + * (rule start) (ambiguity) {VLSOr.left=} + * (rule start) (ambiguity) {VLSRevImplies.left=} + * (rule start) (ambiguity) {VLSXnor.left=} + */ + protected void emit_VLSUnitaryFormula_LeftParenthesisKeyword_4_0_p(EObject semanticObject, ISynNavigable transition, List nodes) { + acceptNodes(transition, nodes); + } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/services/VampireLanguageGrammarAccess.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/services/VampireLanguageGrammarAccess.java new file mode 100644 index 000000000..2548f3835 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/services/VampireLanguageGrammarAccess.java @@ -0,0 +1,2491 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.services; + +import com.google.inject.Inject; +import com.google.inject.Singleton; +import java.util.List; +import org.eclipse.xtext.Action; +import org.eclipse.xtext.Alternatives; +import org.eclipse.xtext.Assignment; +import org.eclipse.xtext.Grammar; +import org.eclipse.xtext.GrammarUtil; +import org.eclipse.xtext.Group; +import org.eclipse.xtext.Keyword; +import org.eclipse.xtext.ParserRule; +import org.eclipse.xtext.RuleCall; +import org.eclipse.xtext.TerminalRule; +import org.eclipse.xtext.common.services.TerminalsGrammarAccess; +import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder; +import org.eclipse.xtext.service.GrammarProvider; + +@Singleton +public class VampireLanguageGrammarAccess extends AbstractGrammarElementFinder { + + public class VampireModelElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VampireModel"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Assignment cCommentsAssignment_0 = (Assignment)cAlternatives.eContents().get(0); + private final RuleCall cCommentsVLSCommentParserRuleCall_0_0 = (RuleCall)cCommentsAssignment_0.eContents().get(0); + private final Assignment cConfirmationsAssignment_1 = (Assignment)cAlternatives.eContents().get(1); + private final RuleCall cConfirmationsVLSConfirmationsParserRuleCall_1_0 = (RuleCall)cConfirmationsAssignment_1.eContents().get(0); + private final Assignment cFormulasAssignment_2 = (Assignment)cAlternatives.eContents().get(2); + private final RuleCall cFormulasVLSFofFormulaParserRuleCall_2_0 = (RuleCall)cFormulasAssignment_2.eContents().get(0); + private final Assignment cTfformulasAssignment_3 = (Assignment)cAlternatives.eContents().get(3); + private final RuleCall cTfformulasVLSTffFormulaParserRuleCall_3_0 = (RuleCall)cTfformulasAssignment_3.eContents().get(0); + + ////@@@@@@@@@@@ + ////2 things TODO: + ////1. fix anotations (ln77) + ////2. can only use declared variables in formula (ln 158) + ////@@@@@@@@@@@ + //VampireModel: + // (comments+=VLSComment | confirmations+=VLSConfirmations | formulas+=VLSFofFormula | tfformulas+=VLSTffFormula)*; + @Override public ParserRule getRule() { return rule; } + + //(comments+=VLSComment | confirmations+=VLSConfirmations | formulas+=VLSFofFormula | tfformulas+=VLSTffFormula)* + public Alternatives getAlternatives() { return cAlternatives; } + + //// includes += VLSInclude | + //comments+=VLSComment + public Assignment getCommentsAssignment_0() { return cCommentsAssignment_0; } + + //VLSComment + public RuleCall getCommentsVLSCommentParserRuleCall_0_0() { return cCommentsVLSCommentParserRuleCall_0_0; } + + //confirmations+=VLSConfirmations + public Assignment getConfirmationsAssignment_1() { return cConfirmationsAssignment_1; } + + //VLSConfirmations + public RuleCall getConfirmationsVLSConfirmationsParserRuleCall_1_0() { return cConfirmationsVLSConfirmationsParserRuleCall_1_0; } + + //formulas+=VLSFofFormula + public Assignment getFormulasAssignment_2() { return cFormulasAssignment_2; } + + //VLSFofFormula + public RuleCall getFormulasVLSFofFormulaParserRuleCall_2_0() { return cFormulasVLSFofFormulaParserRuleCall_2_0; } + + //tfformulas+=VLSTffFormula + public Assignment getTfformulasAssignment_3() { return cTfformulasAssignment_3; } + + //VLSTffFormula + public RuleCall getTfformulasVLSTffFormulaParserRuleCall_3_0() { return cTfformulasVLSTffFormulaParserRuleCall_3_0; } + } + public class VLSCommentElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSComment"); + private final Assignment cCommentAssignment = (Assignment)rule.eContents().get(1); + private final RuleCall cCommentSINGLE_COMMENTTerminalRuleCall_0 = (RuleCall)cCommentAssignment.eContents().get(0); + + ////terminal ID: ( !('('|')'|'\r'|'\n') )+ ; + //////////////////////////////////// + //// VLS types + //////////////////////////////////// + //// + ////VLSInclude: + //// 'include(' fileName = SINGLE_QUOTE ( ',[' names += VLSName (',' names += VLSName)* ']' )? + ////; + ////VLSName: + //// name = (LOWER_WORD_ID | SINGLE_QUOTE | LITERAL | SIGNED_LITERAL) + ////; + //// + //VLSComment: + // comment=SINGLE_COMMENT + // //need to add a new line at the end of the file for the case where the last line is a comment + //; + @Override public ParserRule getRule() { return rule; } + + //comment=SINGLE_COMMENT + public Assignment getCommentAssignment() { return cCommentAssignment; } + + //SINGLE_COMMENT + public RuleCall getCommentSINGLE_COMMENTTerminalRuleCall_0() { return cCommentSINGLE_COMMENTTerminalRuleCall_0; } + } + public class VLSConfirmationsElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSConfirmations"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0); + private final Action cVLSSatisfiableAction_0_0 = (Action)cGroup_0.eContents().get(0); + private final Keyword cSatisfiableKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1); + private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1); + private final Action cVLSWarningAction_1_0 = (Action)cGroup_1.eContents().get(0); + private final Keyword cWARNINGKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1); + private final Keyword cCouldKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2); + private final Keyword cNotKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3); + private final Keyword cSetKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4); + private final Keyword cResourceKeyword_1_5 = (Keyword)cGroup_1.eContents().get(5); + private final Keyword cLimitKeyword_1_6 = (Keyword)cGroup_1.eContents().get(6); + private final Keyword cVirtualKeyword_1_7 = (Keyword)cGroup_1.eContents().get(7); + private final Keyword cMemoryKeyword_1_8 = (Keyword)cGroup_1.eContents().get(8); + private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2); + private final Action cVLSTryingAction_2_0 = (Action)cGroup_2.eContents().get(0); + private final Keyword cTRYINGKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1); + private final Keyword cLeftSquareBracketKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2); + private final Assignment cNameAssignment_2_3 = (Assignment)cGroup_2.eContents().get(3); + private final RuleCall cNameLITERALTerminalRuleCall_2_3_0 = (RuleCall)cNameAssignment_2_3.eContents().get(0); + private final Keyword cRightSquareBracketKeyword_2_4 = (Keyword)cGroup_2.eContents().get(4); + private final Group cGroup_3 = (Group)cAlternatives.eContents().get(3); + private final Action cVLSFiniteModelAction_3_0 = (Action)cGroup_3.eContents().get(0); + private final Keyword cFiniteKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1); + private final Keyword cModelKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2); + private final Keyword cFoundKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3); + + ////VLSConstantDeclaration: name = (LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID ); + //VLSConfirmations: + // {VLSSatisfiable} 'Satisfiable!' | {VLSWarning} "WARNING!" "Could" "not" "set" "resource" "limit:" "Virtual" "memory." + // | {VLSTrying} 'TRYING' '[' name=LITERAL ']' | {VLSFiniteModel} 'Finite' 'Model' 'Found!'; + @Override public ParserRule getRule() { return rule; } + + //{VLSSatisfiable} 'Satisfiable!' | {VLSWarning} "WARNING!" "Could" "not" "set" "resource" "limit:" "Virtual" "memory." | + //{VLSTrying} 'TRYING' '[' name=LITERAL ']' | {VLSFiniteModel} 'Finite' 'Model' 'Found!' + public Alternatives getAlternatives() { return cAlternatives; } + + //{VLSSatisfiable} 'Satisfiable!' + public Group getGroup_0() { return cGroup_0; } + + //{VLSSatisfiable} + public Action getVLSSatisfiableAction_0_0() { return cVLSSatisfiableAction_0_0; } + + //'Satisfiable!' + public Keyword getSatisfiableKeyword_0_1() { return cSatisfiableKeyword_0_1; } + + //{VLSWarning} "WARNING!" "Could" "not" "set" "resource" "limit:" "Virtual" "memory." + public Group getGroup_1() { return cGroup_1; } + + //{VLSWarning} + public Action getVLSWarningAction_1_0() { return cVLSWarningAction_1_0; } + + //"WARNING!" + public Keyword getWARNINGKeyword_1_1() { return cWARNINGKeyword_1_1; } + + //"Could" + public Keyword getCouldKeyword_1_2() { return cCouldKeyword_1_2; } + + //"not" + public Keyword getNotKeyword_1_3() { return cNotKeyword_1_3; } + + //"set" + public Keyword getSetKeyword_1_4() { return cSetKeyword_1_4; } + + //"resource" + public Keyword getResourceKeyword_1_5() { return cResourceKeyword_1_5; } + + //"limit:" + public Keyword getLimitKeyword_1_6() { return cLimitKeyword_1_6; } + + //"Virtual" + public Keyword getVirtualKeyword_1_7() { return cVirtualKeyword_1_7; } + + //"memory." + public Keyword getMemoryKeyword_1_8() { return cMemoryKeyword_1_8; } + + //{VLSTrying} 'TRYING' '[' name=LITERAL ']' + public Group getGroup_2() { return cGroup_2; } + + //{VLSTrying} + public Action getVLSTryingAction_2_0() { return cVLSTryingAction_2_0; } + + //'TRYING' + public Keyword getTRYINGKeyword_2_1() { return cTRYINGKeyword_2_1; } + + //'[' + public Keyword getLeftSquareBracketKeyword_2_2() { return cLeftSquareBracketKeyword_2_2; } + + //name=LITERAL + public Assignment getNameAssignment_2_3() { return cNameAssignment_2_3; } + + //LITERAL + public RuleCall getNameLITERALTerminalRuleCall_2_3_0() { return cNameLITERALTerminalRuleCall_2_3_0; } + + //']' + public Keyword getRightSquareBracketKeyword_2_4() { return cRightSquareBracketKeyword_2_4; } + + //{VLSFiniteModel} 'Finite' 'Model' 'Found!' + public Group getGroup_3() { return cGroup_3; } + + //{VLSFiniteModel} + public Action getVLSFiniteModelAction_3_0() { return cVLSFiniteModelAction_3_0; } + + //'Finite' + public Keyword getFiniteKeyword_3_1() { return cFiniteKeyword_3_1; } + + //'Model' + public Keyword getModelKeyword_3_2() { return cModelKeyword_3_2; } + + //'Found!' + public Keyword getFoundKeyword_3_3() { return cFoundKeyword_3_3; } + } + public class VLSFofFormulaElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofFormula"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Keyword cFofKeyword_0 = (Keyword)cGroup.eContents().get(0); + private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final Alternatives cNameAlternatives_2_0 = (Alternatives)cNameAssignment_2.eContents().get(0); + private final RuleCall cNameLOWER_WORD_IDTerminalRuleCall_2_0_0 = (RuleCall)cNameAlternatives_2_0.eContents().get(0); + private final RuleCall cNameSIGNED_LITERALTerminalRuleCall_2_0_1 = (RuleCall)cNameAlternatives_2_0.eContents().get(1); + private final RuleCall cNameSINGLE_QUOTETerminalRuleCall_2_0_2 = (RuleCall)cNameAlternatives_2_0.eContents().get(2); + private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3); + private final Assignment cFofRoleAssignment_4 = (Assignment)cGroup.eContents().get(4); + private final RuleCall cFofRoleVLSRoleParserRuleCall_4_0 = (RuleCall)cFofRoleAssignment_4.eContents().get(0); + private final Keyword cCommaKeyword_5 = (Keyword)cGroup.eContents().get(5); + private final Assignment cFofFormulaAssignment_6 = (Assignment)cGroup.eContents().get(6); + private final RuleCall cFofFormulaVLSTermParserRuleCall_6_0 = (RuleCall)cFofFormulaAssignment_6.eContents().get(0); + private final Group cGroup_7 = (Group)cGroup.eContents().get(7); + private final Keyword cCommaKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0); + private final Assignment cAnnotationsAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1); + private final RuleCall cAnnotationsVLSAnnotationParserRuleCall_7_1_0 = (RuleCall)cAnnotationsAssignment_7_1.eContents().get(0); + private final Keyword cRightParenthesisKeyword_8 = (Keyword)cGroup.eContents().get(8); + private final Keyword cFullStopKeyword_9 = (Keyword)cGroup.eContents().get(9); + + //// + //VLSFofFormula: + // 'fof' '(' name=(LOWER_WORD_ID | SIGNED_LITERAL | SINGLE_QUOTE) ',' fofRole=VLSRole ',' fofFormula=VLSTerm (',' + // annotations=VLSAnnotation)? ')' '.'; + @Override public ParserRule getRule() { return rule; } + + //'fof' '(' name=(LOWER_WORD_ID | SIGNED_LITERAL | SINGLE_QUOTE) ',' fofRole=VLSRole ',' fofFormula=VLSTerm (',' + //annotations=VLSAnnotation)? ')' '.' + public Group getGroup() { return cGroup; } + + //'fof' + public Keyword getFofKeyword_0() { return cFofKeyword_0; } + + //'(' + public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; } + + //name=(LOWER_WORD_ID | SIGNED_LITERAL | SINGLE_QUOTE) + public Assignment getNameAssignment_2() { return cNameAssignment_2; } + + //(LOWER_WORD_ID | SIGNED_LITERAL | SINGLE_QUOTE) + public Alternatives getNameAlternatives_2_0() { return cNameAlternatives_2_0; } + + //LOWER_WORD_ID + public RuleCall getNameLOWER_WORD_IDTerminalRuleCall_2_0_0() { return cNameLOWER_WORD_IDTerminalRuleCall_2_0_0; } + + //SIGNED_LITERAL + public RuleCall getNameSIGNED_LITERALTerminalRuleCall_2_0_1() { return cNameSIGNED_LITERALTerminalRuleCall_2_0_1; } + + //SINGLE_QUOTE + public RuleCall getNameSINGLE_QUOTETerminalRuleCall_2_0_2() { return cNameSINGLE_QUOTETerminalRuleCall_2_0_2; } + + //',' + public Keyword getCommaKeyword_3() { return cCommaKeyword_3; } + + //fofRole=VLSRole + public Assignment getFofRoleAssignment_4() { return cFofRoleAssignment_4; } + + //VLSRole + public RuleCall getFofRoleVLSRoleParserRuleCall_4_0() { return cFofRoleVLSRoleParserRuleCall_4_0; } + + //',' + public Keyword getCommaKeyword_5() { return cCommaKeyword_5; } + + //fofFormula=VLSTerm + public Assignment getFofFormulaAssignment_6() { return cFofFormulaAssignment_6; } + + //VLSTerm + public RuleCall getFofFormulaVLSTermParserRuleCall_6_0() { return cFofFormulaVLSTermParserRuleCall_6_0; } + + //(',' annotations=VLSAnnotation)? + public Group getGroup_7() { return cGroup_7; } + + //',' + public Keyword getCommaKeyword_7_0() { return cCommaKeyword_7_0; } + + //annotations=VLSAnnotation + public Assignment getAnnotationsAssignment_7_1() { return cAnnotationsAssignment_7_1; } + + //VLSAnnotation + public RuleCall getAnnotationsVLSAnnotationParserRuleCall_7_1_0() { return cAnnotationsVLSAnnotationParserRuleCall_7_1_0; } + + //')' + public Keyword getRightParenthesisKeyword_8() { return cRightParenthesisKeyword_8; } + + //'.' + public Keyword getFullStopKeyword_9() { return cFullStopKeyword_9; } + } + public class VLSTffFormulaElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffFormula"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Keyword cTffKeyword_0 = (Keyword)cGroup.eContents().get(0); + private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cNameVLSTffNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0); + private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3); + private final Assignment cTffRoleAssignment_4 = (Assignment)cGroup.eContents().get(4); + private final RuleCall cTffRoleVLSRoleParserRuleCall_4_0 = (RuleCall)cTffRoleAssignment_4.eContents().get(0); + private final Keyword cCommaKeyword_5 = (Keyword)cGroup.eContents().get(5); + private final Assignment cFofFormulaAssignment_6 = (Assignment)cGroup.eContents().get(6); + private final RuleCall cFofFormulaVLSTffTermParserRuleCall_6_0 = (RuleCall)cFofFormulaAssignment_6.eContents().get(0); + private final Group cGroup_7 = (Group)cGroup.eContents().get(7); + private final Keyword cCommaKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0); + private final Assignment cAnnotationsAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1); + private final RuleCall cAnnotationsVLSAnnotationParserRuleCall_7_1_0 = (RuleCall)cAnnotationsAssignment_7_1.eContents().get(0); + private final Keyword cRightParenthesisKeyword_8 = (Keyword)cGroup.eContents().get(8); + private final Keyword cFullStopKeyword_9 = (Keyword)cGroup.eContents().get(9); + + //VLSTffFormula: + // 'tff' '(' name=VLSTffName ',' tffRole=VLSRole ',' fofFormula=VLSTffTerm (',' annotations=VLSAnnotation)? ')' '.'; + @Override public ParserRule getRule() { return rule; } + + //'tff' '(' name=VLSTffName ',' tffRole=VLSRole ',' fofFormula=VLSTffTerm (',' annotations=VLSAnnotation)? ')' '.' + public Group getGroup() { return cGroup; } + + //'tff' + public Keyword getTffKeyword_0() { return cTffKeyword_0; } + + //'(' + public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; } + + //name=VLSTffName + public Assignment getNameAssignment_2() { return cNameAssignment_2; } + + //VLSTffName + public RuleCall getNameVLSTffNameParserRuleCall_2_0() { return cNameVLSTffNameParserRuleCall_2_0; } + + //',' + public Keyword getCommaKeyword_3() { return cCommaKeyword_3; } + + //tffRole=VLSRole + public Assignment getTffRoleAssignment_4() { return cTffRoleAssignment_4; } + + //VLSRole + public RuleCall getTffRoleVLSRoleParserRuleCall_4_0() { return cTffRoleVLSRoleParserRuleCall_4_0; } + + //',' + public Keyword getCommaKeyword_5() { return cCommaKeyword_5; } + + //fofFormula=VLSTffTerm + public Assignment getFofFormulaAssignment_6() { return cFofFormulaAssignment_6; } + + //VLSTffTerm + public RuleCall getFofFormulaVLSTffTermParserRuleCall_6_0() { return cFofFormulaVLSTffTermParserRuleCall_6_0; } + + //(',' annotations=VLSAnnotation)? + public Group getGroup_7() { return cGroup_7; } + + //',' + public Keyword getCommaKeyword_7_0() { return cCommaKeyword_7_0; } + + //annotations=VLSAnnotation + public Assignment getAnnotationsAssignment_7_1() { return cAnnotationsAssignment_7_1; } + + //VLSAnnotation + public RuleCall getAnnotationsVLSAnnotationParserRuleCall_7_1_0() { return cAnnotationsVLSAnnotationParserRuleCall_7_1_0; } + + //')' + public Keyword getRightParenthesisKeyword_8() { return cRightParenthesisKeyword_8; } + + //'.' + public Keyword getFullStopKeyword_9() { return cFullStopKeyword_9; } + } + public class VLSTffNameElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffName"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cVLSTffDeclPredParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cVLSTffFiniteParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cVLSTffDistinctParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + + //VLSTffName: + // VLSTffDeclPred | VLSTffFinite | VLSTffDistinct; + @Override public ParserRule getRule() { return rule; } + + //VLSTffDeclPred | VLSTffFinite | VLSTffDistinct + public Alternatives getAlternatives() { return cAlternatives; } + + //VLSTffDeclPred + public RuleCall getVLSTffDeclPredParserRuleCall_0() { return cVLSTffDeclPredParserRuleCall_0; } + + //VLSTffFinite + public RuleCall getVLSTffFiniteParserRuleCall_1() { return cVLSTffFiniteParserRuleCall_1; } + + //VLSTffDistinct + public RuleCall getVLSTffDistinctParserRuleCall_2() { return cVLSTffDistinctParserRuleCall_2; } + } + public class VLSTffDistinctElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffDistinct"); + private final Keyword cDistinct_domainKeyword = (Keyword)rule.eContents().get(1); + + //VLSTffDistinct: + // 'distinct_domain'; + @Override public ParserRule getRule() { return rule; } + + //'distinct_domain' + public Keyword getDistinct_domainKeyword() { return cDistinct_domainKeyword; } + } + public class VLSTffFiniteElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffFinite"); + private final Keyword cFinite_domainKeyword = (Keyword)rule.eContents().get(1); + + //VLSTffFinite: + // 'finite_domain'; + @Override public ParserRule getRule() { return rule; } + + //'finite_domain' + public Keyword getFinite_domainKeyword() { return cFinite_domainKeyword; } + } + public class VLSTffDeclPredElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffDeclPred"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0); + private final Keyword cDeclare_Keyword_0_0 = (Keyword)cGroup_0.eContents().get(0); + private final RuleCall cDOLLAR_IDTerminalRuleCall_0_1 = (RuleCall)cGroup_0.eContents().get(1); + private final RuleCall cLOWER_WORD_IDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + + //VLSTffDeclPred: + // 'declare_' DOLLAR_ID | LOWER_WORD_ID; + @Override public ParserRule getRule() { return rule; } + + //'declare_' DOLLAR_ID | LOWER_WORD_ID + public Alternatives getAlternatives() { return cAlternatives; } + + //'declare_' DOLLAR_ID + public Group getGroup_0() { return cGroup_0; } + + //'declare_' + public Keyword getDeclare_Keyword_0_0() { return cDeclare_Keyword_0_0; } + + //DOLLAR_ID + public RuleCall getDOLLAR_IDTerminalRuleCall_0_1() { return cDOLLAR_IDTerminalRuleCall_0_1; } + + //LOWER_WORD_ID + public RuleCall getLOWER_WORD_IDTerminalRuleCall_1() { return cLOWER_WORD_IDTerminalRuleCall_1; } + } + public class VLSRoleElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSRole"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Keyword cAxiomKeyword_0 = (Keyword)cAlternatives.eContents().get(0); + private final Keyword cConjectureKeyword_1 = (Keyword)cAlternatives.eContents().get(1); + private final Keyword cHypothesisKeyword_2 = (Keyword)cAlternatives.eContents().get(2); + private final Keyword cDefinitionKeyword_3 = (Keyword)cAlternatives.eContents().get(3); + private final Keyword cAssumptionKeyword_4 = (Keyword)cAlternatives.eContents().get(4); + private final Keyword cLemmaKeyword_5 = (Keyword)cAlternatives.eContents().get(5); + private final Keyword cTheoremKeyword_6 = (Keyword)cAlternatives.eContents().get(6); + private final Keyword cCorollaryKeyword_7 = (Keyword)cAlternatives.eContents().get(7); + private final Keyword cNegated_conjectureKeyword_8 = (Keyword)cAlternatives.eContents().get(8); + private final Keyword cPlainKeyword_9 = (Keyword)cAlternatives.eContents().get(9); + private final Keyword cTypeKeyword_10 = (Keyword)cAlternatives.eContents().get(10); + private final Keyword cFi_domainKeyword_11 = (Keyword)cAlternatives.eContents().get(11); + private final Keyword cFi_functorsKeyword_12 = (Keyword)cAlternatives.eContents().get(12); + private final Keyword cFi_predicatesKeyword_13 = (Keyword)cAlternatives.eContents().get(13); + private final Keyword cUnknownKeyword_14 = (Keyword)cAlternatives.eContents().get(14); + + ///* + ////NAME + //VLSName: + // //(atomic_Word = Atomic_Word | integer = Integer | single_quote_word = Single_Quote_Word) + // name = (LOWER_WORD_ID | SIGNED_INT_ID | SINGLE_QUOTE) + //; + //*/ // + //VLSRole: + // "axiom" | "conjecture" | "hypothesis" | "definition" | "assumption" | "lemma" + // | "theorem" | "corollary" | "negated_conjecture" | "plain" | "type" | + // "fi_domain" | "fi_functors" | "fi_predicates" | "unknown"; + @Override public ParserRule getRule() { return rule; } + + //"axiom" | "conjecture" | "hypothesis" | "definition" | "assumption" | "lemma" | "theorem" | "corollary" | + //"negated_conjecture" | "plain" | "type" | "fi_domain" | "fi_functors" | "fi_predicates" | "unknown" + public Alternatives getAlternatives() { return cAlternatives; } + + //"axiom" + public Keyword getAxiomKeyword_0() { return cAxiomKeyword_0; } + + //"conjecture" + public Keyword getConjectureKeyword_1() { return cConjectureKeyword_1; } + + //"hypothesis" + public Keyword getHypothesisKeyword_2() { return cHypothesisKeyword_2; } + + //"definition" + public Keyword getDefinitionKeyword_3() { return cDefinitionKeyword_3; } + + //"assumption" + public Keyword getAssumptionKeyword_4() { return cAssumptionKeyword_4; } + + //"lemma" + public Keyword getLemmaKeyword_5() { return cLemmaKeyword_5; } + + //"theorem" + public Keyword getTheoremKeyword_6() { return cTheoremKeyword_6; } + + //"corollary" + public Keyword getCorollaryKeyword_7() { return cCorollaryKeyword_7; } + + //"negated_conjecture" + public Keyword getNegated_conjectureKeyword_8() { return cNegated_conjectureKeyword_8; } + + //"plain" + public Keyword getPlainKeyword_9() { return cPlainKeyword_9; } + + //"type" + public Keyword getTypeKeyword_10() { return cTypeKeyword_10; } + + //"fi_domain" + public Keyword getFi_domainKeyword_11() { return cFi_domainKeyword_11; } + + //"fi_functors" + public Keyword getFi_functorsKeyword_12() { return cFi_functorsKeyword_12; } + + //"fi_predicates" + public Keyword getFi_predicatesKeyword_13() { return cFi_predicatesKeyword_13; } + + //"unknown" + public Keyword getUnknownKeyword_14() { return cUnknownKeyword_14; } + } + public class VLSAnnotationElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotation"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Keyword cLeftSquareBracketKeyword_0 = (Keyword)cGroup.eContents().get(0); + private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1); + private final Alternatives cNameAlternatives_1_0 = (Alternatives)cNameAssignment_1.eContents().get(0); + private final RuleCall cNameLOWER_WORD_IDTerminalRuleCall_1_0_0 = (RuleCall)cNameAlternatives_1_0.eContents().get(0); + private final RuleCall cNameSINGLE_QUOTETerminalRuleCall_1_0_1 = (RuleCall)cNameAlternatives_1_0.eContents().get(1); + private final RuleCall cNameVLSRoleParserRuleCall_1_0_2 = (RuleCall)cNameAlternatives_1_0.eContents().get(2); + private final Group cGroup_2 = (Group)cGroup.eContents().get(2); + private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0); + private final Assignment cFollowupAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1); + private final RuleCall cFollowupVLSAnnotationTermsParserRuleCall_2_1_0 = (RuleCall)cFollowupAssignment_2_1.eContents().get(0); + private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2); + private final Keyword cRightSquareBracketKeyword_3 = (Keyword)cGroup.eContents().get(3); + + ///* + ////VLSRole: + //// VLSAxiom | VLSConjecture | VLSHypothesis | VLSDefinition | + //// VLSAssumption | VLSLemma | VLSTheorem | VLSCorollary | VLSNegated_Conjecture | + //// VLSPlain | VLSType |VLSFi_Domain | VLSFi_Functors | VLSFi_Predicates | VLSUnknown + ////; + //// + ////VLSAxiom: + //// "axiom" + ////; + //// + ////VLSConjecture: + //// "conjecture" + ////; + //// + ////VLSHypothesis: + //// "hypothesis" + ////; + //// + ////VLSDefinition: + //// "definition" + ////; + //// + ////VLSAssumption: + //// "assumption" + ////; + //// + ////VLSLemma: + //// "lemma" + ////; + //// + ////VLSTheorem: + //// "theorem" + ////; + //// + ////VLSCorollary: + //// "corollary" + ////; + //// + ////VLSNegated_Conjecture: + //// "negated_conjecture" + ////; + //// + ////VLSPlain: + //// "plain" + ////; + //// + ////VLSType: + //// "type" + ////; + //// + ////VLSFi_Domain: + //// "fi_domain" + ////; + //// + ////VLSFi_Functors: + //// "fi_functors" + ////; + //// + ////VLSFi_Predicates: + //// "fi_predicates" + ////; + //// + ////VLSUnknown: + //// "unknown" + ////; + //*/ // + //// Not at all based on the website. based on what we think the output will be like + //VLSAnnotation: + // '['? name=(LOWER_WORD_ID | SINGLE_QUOTE | VLSRole)? ('(' followup=VLSAnnotationTerms ')')? ']'?; + @Override public ParserRule getRule() { return rule; } + + //'['? name=(LOWER_WORD_ID | SINGLE_QUOTE | VLSRole)? ('(' followup=VLSAnnotationTerms ')')? ']'? + public Group getGroup() { return cGroup; } + + //'['? + public Keyword getLeftSquareBracketKeyword_0() { return cLeftSquareBracketKeyword_0; } + + //name=(LOWER_WORD_ID | SINGLE_QUOTE | VLSRole)? + public Assignment getNameAssignment_1() { return cNameAssignment_1; } + + //(LOWER_WORD_ID | SINGLE_QUOTE | VLSRole) + public Alternatives getNameAlternatives_1_0() { return cNameAlternatives_1_0; } + + //LOWER_WORD_ID + public RuleCall getNameLOWER_WORD_IDTerminalRuleCall_1_0_0() { return cNameLOWER_WORD_IDTerminalRuleCall_1_0_0; } + + //SINGLE_QUOTE + public RuleCall getNameSINGLE_QUOTETerminalRuleCall_1_0_1() { return cNameSINGLE_QUOTETerminalRuleCall_1_0_1; } + + //VLSRole + public RuleCall getNameVLSRoleParserRuleCall_1_0_2() { return cNameVLSRoleParserRuleCall_1_0_2; } + + //('(' followup=VLSAnnotationTerms ')')? + public Group getGroup_2() { return cGroup_2; } + + //'(' + public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; } + + //followup=VLSAnnotationTerms + public Assignment getFollowupAssignment_2_1() { return cFollowupAssignment_2_1; } + + //VLSAnnotationTerms + public RuleCall getFollowupVLSAnnotationTermsParserRuleCall_2_1_0() { return cFollowupVLSAnnotationTermsParserRuleCall_2_1_0; } + + //')' + public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; } + + //']'? + public Keyword getRightSquareBracketKeyword_3() { return cRightSquareBracketKeyword_3; } + } + public class VLSAnnotationTermsElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAnnotationTerms"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Assignment cTermsAssignment_0 = (Assignment)cGroup.eContents().get(0); + private final RuleCall cTermsVLSAnnotationParserRuleCall_0_0 = (RuleCall)cTermsAssignment_0.eContents().get(0); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Keyword cCommaKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); + private final Assignment cTermsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final RuleCall cTermsVLSAnnotationParserRuleCall_1_1_0 = (RuleCall)cTermsAssignment_1_1.eContents().get(0); + + //VLSAnnotationTerms VLSAnnotation: + // terms+=VLSAnnotation (',' terms+=VLSAnnotation)*; + @Override public ParserRule getRule() { return rule; } + + //terms+=VLSAnnotation (',' terms+=VLSAnnotation)* + public Group getGroup() { return cGroup; } + + //terms+=VLSAnnotation + public Assignment getTermsAssignment_0() { return cTermsAssignment_0; } + + //VLSAnnotation + public RuleCall getTermsVLSAnnotationParserRuleCall_0_0() { return cTermsVLSAnnotationParserRuleCall_0_0; } + + //(',' terms+=VLSAnnotation)* + public Group getGroup_1() { return cGroup_1; } + + //',' + public Keyword getCommaKeyword_1_0() { return cCommaKeyword_1_0; } + + //terms+=VLSAnnotation + public Assignment getTermsAssignment_1_1() { return cTermsAssignment_1_1; } + + //VLSAnnotation + public RuleCall getTermsVLSAnnotationParserRuleCall_1_1_0() { return cTermsVLSAnnotationParserRuleCall_1_1_0; } + } + public class VLSTffTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTffTerm"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cVLSTermParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cVLSDeclarationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cVLSCommentTermParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + + //////////////////////////////////// + //// VLS Terms + //////////////////////////////////// + //VLSTffTerm: + // VLSTerm | VLSDeclaration | VLSCommentTerm; + @Override public ParserRule getRule() { return rule; } + + //VLSTerm | VLSDeclaration | VLSCommentTerm + public Alternatives getAlternatives() { return cAlternatives; } + + //VLSTerm + public RuleCall getVLSTermParserRuleCall_0() { return cVLSTermParserRuleCall_0; } + + //VLSDeclaration + public RuleCall getVLSDeclarationParserRuleCall_1() { return cVLSDeclarationParserRuleCall_1; } + + //VLSCommentTerm + public RuleCall getVLSCommentTermParserRuleCall_2() { return cVLSCommentTermParserRuleCall_2; } + } + public class VLSCommentTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSCommentTerm"); + private final Assignment cCommentAssignment = (Assignment)rule.eContents().get(1); + private final RuleCall cCommentSINGLE_COMMENTTerminalRuleCall_0 = (RuleCall)cCommentAssignment.eContents().get(0); + + //VLSCommentTerm VLSTerm: + // comment=SINGLE_COMMENT; + @Override public ParserRule getRule() { return rule; } + + //comment=SINGLE_COMMENT + public Assignment getCommentAssignment() { return cCommentAssignment; } + + //SINGLE_COMMENT + public RuleCall getCommentSINGLE_COMMENTTerminalRuleCall_0() { return cCommentSINGLE_COMMENTTerminalRuleCall_0; } + } + public class VLSDeclarationElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSDeclaration"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cVLSVariableDeclarationParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cVLSOtherDeclarationParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + + /////////////////// + ////TFF Specific + // VLSDeclaration: + // VLSVariableDeclaration | VLSOtherDeclaration; + @Override public ParserRule getRule() { return rule; } + + //VLSVariableDeclaration | VLSOtherDeclaration + public Alternatives getAlternatives() { return cAlternatives; } + + //VLSVariableDeclaration + public RuleCall getVLSVariableDeclarationParserRuleCall_0() { return cVLSVariableDeclarationParserRuleCall_0; } + + //VLSOtherDeclaration + public RuleCall getVLSOtherDeclarationParserRuleCall_1() { return cVLSOtherDeclarationParserRuleCall_1; } + } + public class VLSOtherDeclarationElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSOtherDeclaration"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0); + private final RuleCall cNameVLSAtomicConstantParserRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0); + private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cTypeVLSTypeDefParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0); + + //VLSOtherDeclaration: + // name=VLSAtomicConstant ':' type=VLSTypeDef; + @Override public ParserRule getRule() { return rule; } + + //name=VLSAtomicConstant ':' type=VLSTypeDef + public Group getGroup() { return cGroup; } + + //name=VLSAtomicConstant + public Assignment getNameAssignment_0() { return cNameAssignment_0; } + + //VLSAtomicConstant + public RuleCall getNameVLSAtomicConstantParserRuleCall_0_0() { return cNameVLSAtomicConstantParserRuleCall_0_0; } + + //':' + public Keyword getColonKeyword_1() { return cColonKeyword_1; } + + //type=VLSTypeDef + public Assignment getTypeAssignment_2() { return cTypeAssignment_2; } + + //VLSTypeDef + public RuleCall getTypeVLSTypeDefParserRuleCall_2_0() { return cTypeVLSTypeDefParserRuleCall_2_0; } + } + public class VLSVariableDeclarationElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariableDeclaration"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0); + private final RuleCall cNameVLSVariableParserRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0); + private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cTypeVLSTypeDefParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0); + + //VLSVariableDeclaration: + // name=VLSVariable ':' type=VLSTypeDef; + @Override public ParserRule getRule() { return rule; } + + //name=VLSVariable ':' type=VLSTypeDef + public Group getGroup() { return cGroup; } + + //name=VLSVariable + public Assignment getNameAssignment_0() { return cNameAssignment_0; } + + //VLSVariable + public RuleCall getNameVLSVariableParserRuleCall_0_0() { return cNameVLSVariableParserRuleCall_0_0; } + + //':' + public Keyword getColonKeyword_1() { return cColonKeyword_1; } + + //type=VLSTypeDef + public Assignment getTypeAssignment_2() { return cTypeAssignment_2; } + + //VLSTypeDef + public RuleCall getTypeVLSTypeDefParserRuleCall_2_0() { return cTypeVLSTypeDefParserRuleCall_2_0; } + } + public class VLSTypeDefElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTypeDef"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Assignment cTypeSigAssignment_0 = (Assignment)cGroup.eContents().get(0); + private final RuleCall cTypeSigVLSUnitaryTermParserRuleCall_0_0 = (RuleCall)cTypeSigAssignment_0.eContents().get(0); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Keyword cGreaterThanSignKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); + private final Assignment cMapsToAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final RuleCall cMapsToVLSAtomicConstantParserRuleCall_1_1_0 = (RuleCall)cMapsToAssignment_1_1.eContents().get(0); + + //VLSTypeDef: + // typeSig=VLSUnitaryTerm ('>' mapsTo=VLSAtomicConstant)? //might need to make VLSAtomic to include VLSVariable + //; + @Override public ParserRule getRule() { return rule; } + + //typeSig=VLSUnitaryTerm ('>' mapsTo=VLSAtomicConstant)? + public Group getGroup() { return cGroup; } + + //typeSig=VLSUnitaryTerm + public Assignment getTypeSigAssignment_0() { return cTypeSigAssignment_0; } + + //VLSUnitaryTerm + public RuleCall getTypeSigVLSUnitaryTermParserRuleCall_0_0() { return cTypeSigVLSUnitaryTermParserRuleCall_0_0; } + + //('>' mapsTo=VLSAtomicConstant)? + public Group getGroup_1() { return cGroup_1; } + + //'>' + public Keyword getGreaterThanSignKeyword_1_0() { return cGreaterThanSignKeyword_1_0; } + + //mapsTo=VLSAtomicConstant + public Assignment getMapsToAssignment_1_1() { return cMapsToAssignment_1_1; } + + //VLSAtomicConstant + public RuleCall getMapsToVLSAtomicConstantParserRuleCall_1_1_0() { return cMapsToVLSAtomicConstantParserRuleCall_1_1_0; } + } + public class VLSUnitaryTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryTerm"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Assignment cInitTypeAssignment_0 = (Assignment)cGroup.eContents().get(0); + private final RuleCall cInitTypeVLSAtomicParserRuleCall_0_0 = (RuleCall)cInitTypeAssignment_0.eContents().get(0); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Keyword cAsteriskKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); + private final Assignment cNextTypeAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final RuleCall cNextTypeVLSAtomicConstantParserRuleCall_1_1_0 = (RuleCall)cNextTypeAssignment_1_1.eContents().get(0); + + //VLSUnitaryTerm VLSTypeDef: + // initType=VLSAtomic ('*' nextType=VLSAtomicConstant)* //might need to make VLSAtomic to include VLSVariable + //; + @Override public ParserRule getRule() { return rule; } + + //initType=VLSAtomic ('*' nextType=VLSAtomicConstant)* + public Group getGroup() { return cGroup; } + + //initType=VLSAtomic + public Assignment getInitTypeAssignment_0() { return cInitTypeAssignment_0; } + + //VLSAtomic + public RuleCall getInitTypeVLSAtomicParserRuleCall_0_0() { return cInitTypeVLSAtomicParserRuleCall_0_0; } + + //('*' nextType=VLSAtomicConstant)* + public Group getGroup_1() { return cGroup_1; } + + //'*' + public Keyword getAsteriskKeyword_1_0() { return cAsteriskKeyword_1_0; } + + //nextType=VLSAtomicConstant + public Assignment getNextTypeAssignment_1_1() { return cNextTypeAssignment_1_1; } + + //VLSAtomicConstant + public RuleCall getNextTypeVLSAtomicConstantParserRuleCall_1_1_0() { return cNextTypeVLSAtomicConstantParserRuleCall_1_1_0; } + } + public class VLSTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSTerm"); + private final RuleCall cVLSBinaryParserRuleCall = (RuleCall)rule.eContents().get(1); + + ////TFF Specific + /////////////////// + //VLSTerm: + // VLSBinary; + @Override public ParserRule getRule() { return rule; } + + ////( VLSLogic | VLSSequent) + //VLSBinary + public RuleCall getVLSBinaryParserRuleCall() { return cVLSBinaryParserRuleCall; } + } + public class VLSBinaryElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSBinary"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final RuleCall cVLSUnitaryFormulaParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0); + private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1); + private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0); + private final Alternatives cAlternatives_1_0_0 = (Alternatives)cGroup_1_0.eContents().get(0); + private final Group cGroup_1_0_0_0 = (Group)cAlternatives_1_0_0.eContents().get(0); + private final Action cVLSEquivalentLeftAction_1_0_0_0_0 = (Action)cGroup_1_0_0_0.eContents().get(0); + private final Keyword cLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1 = (Keyword)cGroup_1_0_0_0.eContents().get(1); + private final Group cGroup_1_0_0_1 = (Group)cAlternatives_1_0_0.eContents().get(1); + private final Action cVLSImpliesLeftAction_1_0_0_1_0 = (Action)cGroup_1_0_0_1.eContents().get(0); + private final Keyword cEqualsSignGreaterThanSignKeyword_1_0_0_1_1 = (Keyword)cGroup_1_0_0_1.eContents().get(1); + private final Group cGroup_1_0_0_2 = (Group)cAlternatives_1_0_0.eContents().get(2); + private final Action cVLSRevImpliesLeftAction_1_0_0_2_0 = (Action)cGroup_1_0_0_2.eContents().get(0); + private final Keyword cLessThanSignEqualsSignKeyword_1_0_0_2_1 = (Keyword)cGroup_1_0_0_2.eContents().get(1); + private final Group cGroup_1_0_0_3 = (Group)cAlternatives_1_0_0.eContents().get(3); + private final Action cVLSXnorLeftAction_1_0_0_3_0 = (Action)cGroup_1_0_0_3.eContents().get(0); + private final Keyword cLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1 = (Keyword)cGroup_1_0_0_3.eContents().get(1); + private final Group cGroup_1_0_0_4 = (Group)cAlternatives_1_0_0.eContents().get(4); + private final Action cVLSNorLeftAction_1_0_0_4_0 = (Action)cGroup_1_0_0_4.eContents().get(0); + private final Keyword cTildeVerticalLineKeyword_1_0_0_4_1 = (Keyword)cGroup_1_0_0_4.eContents().get(1); + private final Group cGroup_1_0_0_5 = (Group)cAlternatives_1_0_0.eContents().get(5); + private final Action cVLSNandLeftAction_1_0_0_5_0 = (Action)cGroup_1_0_0_5.eContents().get(0); + private final Keyword cTildeAmpersandKeyword_1_0_0_5_1 = (Keyword)cGroup_1_0_0_5.eContents().get(1); + private final Assignment cRightAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1); + private final RuleCall cRightVLSUnitaryFormulaParserRuleCall_1_0_1_0 = (RuleCall)cRightAssignment_1_0_1.eContents().get(0); + private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1); + private final Action cVLSAndLeftAction_1_1_0 = (Action)cGroup_1_1.eContents().get(0); + private final Keyword cAmpersandKeyword_1_1_1 = (Keyword)cGroup_1_1.eContents().get(1); + private final Assignment cRightAssignment_1_1_2 = (Assignment)cGroup_1_1.eContents().get(2); + private final RuleCall cRightVLSUnitaryFormulaParserRuleCall_1_1_2_0 = (RuleCall)cRightAssignment_1_1_2.eContents().get(0); + private final Group cGroup_1_2 = (Group)cAlternatives_1.eContents().get(2); + private final Action cVLSOrLeftAction_1_2_0 = (Action)cGroup_1_2.eContents().get(0); + private final Keyword cVerticalLineKeyword_1_2_1 = (Keyword)cGroup_1_2.eContents().get(1); + private final Assignment cRightAssignment_1_2_2 = (Assignment)cGroup_1_2.eContents().get(2); + private final RuleCall cRightVLSUnitaryFormulaParserRuleCall_1_2_2_0 = (RuleCall)cRightAssignment_1_2_2.eContents().get(0); + + ////* + ////VLSBinaryFormula + //VLSBinary VLSTerm: + // VLSUnitaryFormula (({VLSEquivalent.left=current} "<=>" | {VLSImplies.left=current} "=>" | + // {VLSRevImplies.left=current} "<=" | {VLSXnor.left=current} "<~>" | {VLSNor.left=current} "~|" | + // {VLSNand.left=current} "~&") right=VLSUnitaryFormula | ({VLSAnd.left=current} '&' right=VLSUnitaryFormula)+ + // | ({VLSOr.left=current} '|' right=VLSUnitaryFormula)+)?; + @Override public ParserRule getRule() { return rule; } + + //VLSUnitaryFormula (({VLSEquivalent.left=current} "<=>" | {VLSImplies.left=current} "=>" | {VLSRevImplies.left=current} + //"<=" | {VLSXnor.left=current} "<~>" | {VLSNor.left=current} "~|" | {VLSNand.left=current} "~&") + //right=VLSUnitaryFormula | ({VLSAnd.left=current} '&' right=VLSUnitaryFormula)+ | ({VLSOr.left=current} '|' + //right=VLSUnitaryFormula)+)? + public Group getGroup() { return cGroup; } + + //VLSUnitaryFormula + public RuleCall getVLSUnitaryFormulaParserRuleCall_0() { return cVLSUnitaryFormulaParserRuleCall_0; } + + //(({VLSEquivalent.left=current} "<=>" | {VLSImplies.left=current} "=>" | {VLSRevImplies.left=current} "<=" | + //{VLSXnor.left=current} "<~>" | {VLSNor.left=current} "~|" | {VLSNand.left=current} "~&") right=VLSUnitaryFormula | + //({VLSAnd.left=current} '&' right=VLSUnitaryFormula)+ | ({VLSOr.left=current} '|' right=VLSUnitaryFormula)+)? + public Alternatives getAlternatives_1() { return cAlternatives_1; } + + //({VLSEquivalent.left=current} "<=>" | {VLSImplies.left=current} "=>" | {VLSRevImplies.left=current} "<=" | + //{VLSXnor.left=current} "<~>" | {VLSNor.left=current} "~|" | {VLSNand.left=current} "~&") right=VLSUnitaryFormula + public Group getGroup_1_0() { return cGroup_1_0; } + + //{VLSEquivalent.left=current} "<=>" | {VLSImplies.left=current} "=>" | {VLSRevImplies.left=current} "<=" | + //{VLSXnor.left=current} "<~>" | {VLSNor.left=current} "~|" | {VLSNand.left=current} "~&" + public Alternatives getAlternatives_1_0_0() { return cAlternatives_1_0_0; } + + //{VLSEquivalent.left=current} "<=>" + public Group getGroup_1_0_0_0() { return cGroup_1_0_0_0; } + + //{VLSEquivalent.left=current} + public Action getVLSEquivalentLeftAction_1_0_0_0_0() { return cVLSEquivalentLeftAction_1_0_0_0_0; } + + //"<=>" + public Keyword getLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1() { return cLessThanSignEqualsSignGreaterThanSignKeyword_1_0_0_0_1; } + + //{VLSImplies.left=current} "=>" + public Group getGroup_1_0_0_1() { return cGroup_1_0_0_1; } + + //{VLSImplies.left=current} + public Action getVLSImpliesLeftAction_1_0_0_1_0() { return cVLSImpliesLeftAction_1_0_0_1_0; } + + //"=>" + public Keyword getEqualsSignGreaterThanSignKeyword_1_0_0_1_1() { return cEqualsSignGreaterThanSignKeyword_1_0_0_1_1; } + + //{VLSRevImplies.left=current} "<=" + public Group getGroup_1_0_0_2() { return cGroup_1_0_0_2; } + + //{VLSRevImplies.left=current} + public Action getVLSRevImpliesLeftAction_1_0_0_2_0() { return cVLSRevImpliesLeftAction_1_0_0_2_0; } + + //"<=" + public Keyword getLessThanSignEqualsSignKeyword_1_0_0_2_1() { return cLessThanSignEqualsSignKeyword_1_0_0_2_1; } + + //{VLSXnor.left=current} "<~>" + public Group getGroup_1_0_0_3() { return cGroup_1_0_0_3; } + + //{VLSXnor.left=current} + public Action getVLSXnorLeftAction_1_0_0_3_0() { return cVLSXnorLeftAction_1_0_0_3_0; } + + //"<~>" + public Keyword getLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1() { return cLessThanSignTildeGreaterThanSignKeyword_1_0_0_3_1; } + + //{VLSNor.left=current} "~|" + public Group getGroup_1_0_0_4() { return cGroup_1_0_0_4; } + + //{VLSNor.left=current} + public Action getVLSNorLeftAction_1_0_0_4_0() { return cVLSNorLeftAction_1_0_0_4_0; } + + //"~|" + public Keyword getTildeVerticalLineKeyword_1_0_0_4_1() { return cTildeVerticalLineKeyword_1_0_0_4_1; } + + //{VLSNand.left=current} "~&" + public Group getGroup_1_0_0_5() { return cGroup_1_0_0_5; } + + //{VLSNand.left=current} + public Action getVLSNandLeftAction_1_0_0_5_0() { return cVLSNandLeftAction_1_0_0_5_0; } + + //"~&" + public Keyword getTildeAmpersandKeyword_1_0_0_5_1() { return cTildeAmpersandKeyword_1_0_0_5_1; } + + //right=VLSUnitaryFormula + public Assignment getRightAssignment_1_0_1() { return cRightAssignment_1_0_1; } + + //VLSUnitaryFormula + public RuleCall getRightVLSUnitaryFormulaParserRuleCall_1_0_1_0() { return cRightVLSUnitaryFormulaParserRuleCall_1_0_1_0; } + + //({VLSAnd.left=current} '&' right=VLSUnitaryFormula)+ + public Group getGroup_1_1() { return cGroup_1_1; } + + //{VLSAnd.left=current} + public Action getVLSAndLeftAction_1_1_0() { return cVLSAndLeftAction_1_1_0; } + + //'&' + public Keyword getAmpersandKeyword_1_1_1() { return cAmpersandKeyword_1_1_1; } + + //right=VLSUnitaryFormula + public Assignment getRightAssignment_1_1_2() { return cRightAssignment_1_1_2; } + + //VLSUnitaryFormula + public RuleCall getRightVLSUnitaryFormulaParserRuleCall_1_1_2_0() { return cRightVLSUnitaryFormulaParserRuleCall_1_1_2_0; } + + //({VLSOr.left=current} '|' right=VLSUnitaryFormula)+ + public Group getGroup_1_2() { return cGroup_1_2; } + + //{VLSOr.left=current} + public Action getVLSOrLeftAction_1_2_0() { return cVLSOrLeftAction_1_2_0; } + + //'|' + public Keyword getVerticalLineKeyword_1_2_1() { return cVerticalLineKeyword_1_2_1; } + + //right=VLSUnitaryFormula + public Assignment getRightAssignment_1_2_2() { return cRightAssignment_1_2_2; } + + //VLSUnitaryFormula + public RuleCall getRightVLSUnitaryFormulaParserRuleCall_1_2_2_0() { return cRightVLSUnitaryFormulaParserRuleCall_1_2_2_0; } + } + public class VLSUnitaryFormulaElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnitaryFormula"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cVLSUniversalQuantifierParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cVLSExistentialQuantifierParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cVLSUnaryNegationParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + private final RuleCall cVLSUnaryInfixParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3); + private final Group cGroup_4 = (Group)cAlternatives.eContents().get(4); + private final Keyword cLeftParenthesisKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0); + private final RuleCall cVLSTermParserRuleCall_4_1 = (RuleCall)cGroup_4.eContents().get(1); + private final Keyword cRightParenthesisKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2); + + ////VLSUnitaryFormula + //VLSUnitaryFormula VLSTerm: + // VLSUniversalQuantifier | VLSExistentialQuantifier | VLSUnaryNegation | VLSUnaryInfix + // //| VLSEquality + // | '(' VLSTerm ')'; + @Override public ParserRule getRule() { return rule; } + + //VLSUniversalQuantifier | VLSExistentialQuantifier | VLSUnaryNegation | VLSUnaryInfix //| VLSEquality + //| '(' VLSTerm ')' + public Alternatives getAlternatives() { return cAlternatives; } + + //VLSUniversalQuantifier + public RuleCall getVLSUniversalQuantifierParserRuleCall_0() { return cVLSUniversalQuantifierParserRuleCall_0; } + + //VLSExistentialQuantifier + public RuleCall getVLSExistentialQuantifierParserRuleCall_1() { return cVLSExistentialQuantifierParserRuleCall_1; } + + //VLSUnaryNegation + public RuleCall getVLSUnaryNegationParserRuleCall_2() { return cVLSUnaryNegationParserRuleCall_2; } + + //VLSUnaryInfix + public RuleCall getVLSUnaryInfixParserRuleCall_3() { return cVLSUnaryInfixParserRuleCall_3; } + + //'(' VLSTerm ')' + public Group getGroup_4() { return cGroup_4; } + + //'(' + public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; } + + //VLSTerm + public RuleCall getVLSTermParserRuleCall_4_1() { return cVLSTermParserRuleCall_4_1; } + + //')' + public Keyword getRightParenthesisKeyword_4_2() { return cRightParenthesisKeyword_4_2; } + } + public class VLSUniversalQuantifierElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUniversalQuantifier"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cVLSUniversalQuantifierAction_0 = (Action)cGroup.eContents().get(0); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Keyword cExclamationMarkKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); + private final Keyword cLeftSquareBracketKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1); + private final Assignment cVariablesAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2); + private final Alternatives cVariablesAlternatives_1_2_0 = (Alternatives)cVariablesAssignment_1_2.eContents().get(0); + private final RuleCall cVariablesVLSVariableParserRuleCall_1_2_0_0 = (RuleCall)cVariablesAlternatives_1_2_0.eContents().get(0); + private final RuleCall cVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1 = (RuleCall)cVariablesAlternatives_1_2_0.eContents().get(1); + private final Group cGroup_1_3 = (Group)cGroup_1.eContents().get(3); + private final Keyword cCommaKeyword_1_3_0 = (Keyword)cGroup_1_3.eContents().get(0); + private final Assignment cVariablesAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1); + private final Alternatives cVariablesAlternatives_1_3_1_0 = (Alternatives)cVariablesAssignment_1_3_1.eContents().get(0); + private final RuleCall cVariablesVLSVariableParserRuleCall_1_3_1_0_0 = (RuleCall)cVariablesAlternatives_1_3_1_0.eContents().get(0); + private final RuleCall cVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1 = (RuleCall)cVariablesAlternatives_1_3_1_0.eContents().get(1); + private final Keyword cRightSquareBracketKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4); + private final Keyword cColonKeyword_1_5 = (Keyword)cGroup_1.eContents().get(5); + private final Assignment cOperandAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cOperandVLSUnitaryFormulaParserRuleCall_2_0 = (RuleCall)cOperandAssignment_2.eContents().get(0); + + //VLSUniversalQuantifier VLSTerm: + // {VLSUniversalQuantifier} ("!" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | + // VLSVariableDeclaration))* ']' ':') operand=VLSUnitaryFormula; + @Override public ParserRule getRule() { return rule; } + + //{VLSUniversalQuantifier} ("!" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | + //VLSVariableDeclaration))* ']' ':') operand=VLSUnitaryFormula + public Group getGroup() { return cGroup; } + + //{VLSUniversalQuantifier} + public Action getVLSUniversalQuantifierAction_0() { return cVLSUniversalQuantifierAction_0; } + + //"!" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | VLSVariableDeclaration))* ']' + //':' + public Group getGroup_1() { return cGroup_1; } + + //"!" + public Keyword getExclamationMarkKeyword_1_0() { return cExclamationMarkKeyword_1_0; } + + //'[' + public Keyword getLeftSquareBracketKeyword_1_1() { return cLeftSquareBracketKeyword_1_1; } + + //variables+=(VLSVariable | VLSVariableDeclaration) + public Assignment getVariablesAssignment_1_2() { return cVariablesAssignment_1_2; } + + //(VLSVariable | VLSVariableDeclaration) + public Alternatives getVariablesAlternatives_1_2_0() { return cVariablesAlternatives_1_2_0; } + + //VLSVariable + public RuleCall getVariablesVLSVariableParserRuleCall_1_2_0_0() { return cVariablesVLSVariableParserRuleCall_1_2_0_0; } + + //VLSVariableDeclaration + public RuleCall getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1() { return cVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1; } + + //(',' variables+=(VLSVariable | VLSVariableDeclaration))* + public Group getGroup_1_3() { return cGroup_1_3; } + + //',' + public Keyword getCommaKeyword_1_3_0() { return cCommaKeyword_1_3_0; } + + //variables+=(VLSVariable | VLSVariableDeclaration) + public Assignment getVariablesAssignment_1_3_1() { return cVariablesAssignment_1_3_1; } + + //(VLSVariable | VLSVariableDeclaration) + public Alternatives getVariablesAlternatives_1_3_1_0() { return cVariablesAlternatives_1_3_1_0; } + + //VLSVariable + public RuleCall getVariablesVLSVariableParserRuleCall_1_3_1_0_0() { return cVariablesVLSVariableParserRuleCall_1_3_1_0_0; } + + //VLSVariableDeclaration + public RuleCall getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1() { return cVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1; } + + //']' + public Keyword getRightSquareBracketKeyword_1_4() { return cRightSquareBracketKeyword_1_4; } + + //':' + public Keyword getColonKeyword_1_5() { return cColonKeyword_1_5; } + + //operand=VLSUnitaryFormula + public Assignment getOperandAssignment_2() { return cOperandAssignment_2; } + + //VLSUnitaryFormula + public RuleCall getOperandVLSUnitaryFormulaParserRuleCall_2_0() { return cOperandVLSUnitaryFormulaParserRuleCall_2_0; } + } + public class VLSExistentialQuantifierElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSExistentialQuantifier"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cVLSExistentialQuantifierAction_0 = (Action)cGroup.eContents().get(0); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Keyword cQuestionMarkKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); + private final Keyword cLeftSquareBracketKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1); + private final Assignment cVariablesAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2); + private final Alternatives cVariablesAlternatives_1_2_0 = (Alternatives)cVariablesAssignment_1_2.eContents().get(0); + private final RuleCall cVariablesVLSVariableParserRuleCall_1_2_0_0 = (RuleCall)cVariablesAlternatives_1_2_0.eContents().get(0); + private final RuleCall cVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1 = (RuleCall)cVariablesAlternatives_1_2_0.eContents().get(1); + private final Group cGroup_1_3 = (Group)cGroup_1.eContents().get(3); + private final Keyword cCommaKeyword_1_3_0 = (Keyword)cGroup_1_3.eContents().get(0); + private final Assignment cVariablesAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1); + private final Alternatives cVariablesAlternatives_1_3_1_0 = (Alternatives)cVariablesAssignment_1_3_1.eContents().get(0); + private final RuleCall cVariablesVLSVariableParserRuleCall_1_3_1_0_0 = (RuleCall)cVariablesAlternatives_1_3_1_0.eContents().get(0); + private final RuleCall cVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1 = (RuleCall)cVariablesAlternatives_1_3_1_0.eContents().get(1); + private final Keyword cRightSquareBracketKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4); + private final Keyword cColonKeyword_1_5 = (Keyword)cGroup_1.eContents().get(5); + private final Assignment cOperandAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cOperandVLSUnitaryFormulaParserRuleCall_2_0 = (RuleCall)cOperandAssignment_2.eContents().get(0); + + //VLSExistentialQuantifier VLSTerm: + // {VLSExistentialQuantifier} ("?" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | + // VLSVariableDeclaration))* ']' ':') operand=VLSUnitaryFormula; + @Override public ParserRule getRule() { return rule; } + + //{VLSExistentialQuantifier} ("?" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | + //VLSVariableDeclaration))* ']' ':') operand=VLSUnitaryFormula + public Group getGroup() { return cGroup; } + + //{VLSExistentialQuantifier} + public Action getVLSExistentialQuantifierAction_0() { return cVLSExistentialQuantifierAction_0; } + + //"?" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | VLSVariableDeclaration))* ']' + //':' + public Group getGroup_1() { return cGroup_1; } + + //"?" + public Keyword getQuestionMarkKeyword_1_0() { return cQuestionMarkKeyword_1_0; } + + //'[' + public Keyword getLeftSquareBracketKeyword_1_1() { return cLeftSquareBracketKeyword_1_1; } + + //variables+=(VLSVariable | VLSVariableDeclaration) + public Assignment getVariablesAssignment_1_2() { return cVariablesAssignment_1_2; } + + //(VLSVariable | VLSVariableDeclaration) + public Alternatives getVariablesAlternatives_1_2_0() { return cVariablesAlternatives_1_2_0; } + + //VLSVariable + public RuleCall getVariablesVLSVariableParserRuleCall_1_2_0_0() { return cVariablesVLSVariableParserRuleCall_1_2_0_0; } + + //VLSVariableDeclaration + public RuleCall getVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1() { return cVariablesVLSVariableDeclarationParserRuleCall_1_2_0_1; } + + //(',' variables+=(VLSVariable | VLSVariableDeclaration))* + public Group getGroup_1_3() { return cGroup_1_3; } + + //',' + public Keyword getCommaKeyword_1_3_0() { return cCommaKeyword_1_3_0; } + + //variables+=(VLSVariable | VLSVariableDeclaration) + public Assignment getVariablesAssignment_1_3_1() { return cVariablesAssignment_1_3_1; } + + //(VLSVariable | VLSVariableDeclaration) + public Alternatives getVariablesAlternatives_1_3_1_0() { return cVariablesAlternatives_1_3_1_0; } + + //VLSVariable + public RuleCall getVariablesVLSVariableParserRuleCall_1_3_1_0_0() { return cVariablesVLSVariableParserRuleCall_1_3_1_0_0; } + + //VLSVariableDeclaration + public RuleCall getVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1() { return cVariablesVLSVariableDeclarationParserRuleCall_1_3_1_0_1; } + + //']' + public Keyword getRightSquareBracketKeyword_1_4() { return cRightSquareBracketKeyword_1_4; } + + //':' + public Keyword getColonKeyword_1_5() { return cColonKeyword_1_5; } + + //operand=VLSUnitaryFormula + public Assignment getOperandAssignment_2() { return cOperandAssignment_2; } + + //VLSUnitaryFormula + public RuleCall getOperandVLSUnitaryFormulaParserRuleCall_2_0() { return cOperandVLSUnitaryFormulaParserRuleCall_2_0; } + } + public class VLSUnaryNegationElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnaryNegation"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cVLSUnaryNegationAction_0 = (Action)cGroup.eContents().get(0); + private final Keyword cTildeKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cOperandAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cOperandVLSUnitaryFormulaParserRuleCall_2_0 = (RuleCall)cOperandAssignment_2.eContents().get(0); + + //VLSUnaryNegation VLSTerm: + // {VLSUnaryNegation} '~' operand=VLSUnitaryFormula; + @Override public ParserRule getRule() { return rule; } + + //{VLSUnaryNegation} '~' operand=VLSUnitaryFormula + public Group getGroup() { return cGroup; } + + //{VLSUnaryNegation} + public Action getVLSUnaryNegationAction_0() { return cVLSUnaryNegationAction_0; } + + //'~' + public Keyword getTildeKeyword_1() { return cTildeKeyword_1; } + + //operand=VLSUnitaryFormula + public Assignment getOperandAssignment_2() { return cOperandAssignment_2; } + + //VLSUnitaryFormula + public RuleCall getOperandVLSUnitaryFormulaParserRuleCall_2_0() { return cOperandVLSUnitaryFormulaParserRuleCall_2_0; } + } + public class VLSUnaryInfixElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSUnaryInfix"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final RuleCall cVLSAtomicParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0); + private final Group cGroup_1_0_0 = (Group)cAlternatives_1_0.eContents().get(0); + private final Action cVLSInequalityLeftAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0); + private final Keyword cExclamationMarkEqualsSignKeyword_1_0_0_1 = (Keyword)cGroup_1_0_0.eContents().get(1); + private final Group cGroup_1_0_1 = (Group)cAlternatives_1_0.eContents().get(1); + private final Action cVLSEqualityLeftAction_1_0_1_0 = (Action)cGroup_1_0_1.eContents().get(0); + private final Keyword cEqualsSignKeyword_1_0_1_1 = (Keyword)cGroup_1_0_1.eContents().get(1); + private final Group cGroup_1_0_2 = (Group)cAlternatives_1_0.eContents().get(2); + private final Action cVLSAssignmentLeftAction_1_0_2_0 = (Action)cGroup_1_0_2.eContents().get(0); + private final Keyword cColonEqualsSignKeyword_1_0_2_1 = (Keyword)cGroup_1_0_2.eContents().get(1); + private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final RuleCall cRightVLSAtomicParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0); + + //VLSUnaryInfix VLSTerm: + // VLSAtomic (({VLSInequality.left=current} "!=" | {VLSEquality.left=current} "=" | {VLSAssignment.left=current} ":=") + // right=VLSAtomic)?; + @Override public ParserRule getRule() { return rule; } + + //VLSAtomic (({VLSInequality.left=current} "!=" | {VLSEquality.left=current} "=" | {VLSAssignment.left=current} ":=") + //right=VLSAtomic)? + public Group getGroup() { return cGroup; } + + //VLSAtomic + public RuleCall getVLSAtomicParserRuleCall_0() { return cVLSAtomicParserRuleCall_0; } + + //(({VLSInequality.left=current} "!=" | {VLSEquality.left=current} "=" | {VLSAssignment.left=current} ":=") + //right=VLSAtomic)? + public Group getGroup_1() { return cGroup_1; } + + //{VLSInequality.left=current} "!=" | {VLSEquality.left=current} "=" | {VLSAssignment.left=current} ":=" + public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; } + + //{VLSInequality.left=current} "!=" + public Group getGroup_1_0_0() { return cGroup_1_0_0; } + + //{VLSInequality.left=current} + public Action getVLSInequalityLeftAction_1_0_0_0() { return cVLSInequalityLeftAction_1_0_0_0; } + + //"!=" + public Keyword getExclamationMarkEqualsSignKeyword_1_0_0_1() { return cExclamationMarkEqualsSignKeyword_1_0_0_1; } + + //{VLSEquality.left=current} "=" + public Group getGroup_1_0_1() { return cGroup_1_0_1; } + + //{VLSEquality.left=current} + public Action getVLSEqualityLeftAction_1_0_1_0() { return cVLSEqualityLeftAction_1_0_1_0; } + + //"=" + public Keyword getEqualsSignKeyword_1_0_1_1() { return cEqualsSignKeyword_1_0_1_1; } + + //{VLSAssignment.left=current} ":=" + public Group getGroup_1_0_2() { return cGroup_1_0_2; } + + //{VLSAssignment.left=current} + public Action getVLSAssignmentLeftAction_1_0_2_0() { return cVLSAssignmentLeftAction_1_0_2_0; } + + //":=" + public Keyword getColonEqualsSignKeyword_1_0_2_1() { return cColonEqualsSignKeyword_1_0_2_1; } + + //right=VLSAtomic + public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; } + + //VLSAtomic + public RuleCall getRightVLSAtomicParserRuleCall_1_1_0() { return cRightVLSAtomicParserRuleCall_1_1_0; } + } + public class VLSAtomicElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomic"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cVLSAtomicConstantParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cVLSAtomicFunctionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cVLSVariableParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + private final RuleCall cVLSDefinedTermParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3); + + ////NOT SUREEEE + ////VLSEquality returns VLSTerm: + //// VLSFofTerm ({VLSEquality.left = current} "=" right = VLSFofTerm)? + //// + ////; + ///* + //enum VLSDefinedFunctor: + // UMINUS='$uminus' | SUM='$sum' | DIFFERENCE='$difference' | PRODUCT='$product' | QUOTIENT='$quotient' | + // QUOTIENT_E='$quotient_e' | QUOTIENT_T='$quotient_t' | QUOTIENT_F='$quotient_f' | REMAINDER_E='$remainder_e' | + // REMAINDER_T='$remainder_t' | REMAINDER_F='$remainder_f' | FLOOR='$floor' | CEILING='$ceiling' | + // TRUNCATE='$truncate' | ROUND='$round' | TO_INT='$to_int' | TO_RAT='$to_rat' | TO_REAL='$to_real' + // ; + //*/ VLSAtomic VLSTerm: + // VLSAtomicConstant | VLSAtomicFunction | VLSVariable + // | VLSDefinedTerm //temporary solution. this is only valid for equality, not for != or := + // //| VLSEquality + //; + @Override public ParserRule getRule() { return rule; } + + //VLSAtomicConstant | VLSAtomicFunction | VLSVariable | VLSDefinedTerm + public Alternatives getAlternatives() { return cAlternatives; } + + //VLSAtomicConstant + public RuleCall getVLSAtomicConstantParserRuleCall_0() { return cVLSAtomicConstantParserRuleCall_0; } + + //VLSAtomicFunction + public RuleCall getVLSAtomicFunctionParserRuleCall_1() { return cVLSAtomicFunctionParserRuleCall_1; } + + //VLSVariable + public RuleCall getVLSVariableParserRuleCall_2() { return cVLSVariableParserRuleCall_2; } + + //VLSDefinedTerm + public RuleCall getVLSDefinedTermParserRuleCall_3() { return cVLSDefinedTermParserRuleCall_3; } + } + public class VLSAtomicConstantElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicConstant"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0); + private final Action cVLSConstantAction_0_0 = (Action)cGroup_0.eContents().get(0); + private final Assignment cNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1); + private final Alternatives cNameAlternatives_0_1_0 = (Alternatives)cNameAssignment_0_1.eContents().get(0); + private final RuleCall cNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0 = (RuleCall)cNameAlternatives_0_1_0.eContents().get(0); + private final RuleCall cNameSINGLE_QUOTETerminalRuleCall_0_1_0_1 = (RuleCall)cNameAlternatives_0_1_0.eContents().get(1); + private final RuleCall cNameDOLLAR_IDTerminalRuleCall_0_1_0_2 = (RuleCall)cNameAlternatives_0_1_0.eContents().get(2); + private final RuleCall cNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3 = (RuleCall)cNameAlternatives_0_1_0.eContents().get(3); + private final RuleCall cNameVLSRoleParserRuleCall_0_1_0_4 = (RuleCall)cNameAlternatives_0_1_0.eContents().get(4); + private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1); + private final Action cVLSTrueAction_1_0 = (Action)cGroup_1.eContents().get(0); + private final Keyword cTrueKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1); + private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2); + private final Action cVLSFalseAction_2_0 = (Action)cGroup_2.eContents().get(0); + private final Keyword cFalseKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1); + + //VLSAtomicConstant VLSTerm: + // {VLSConstant} name=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) | {VLSTrue} '$true' | + // {VLSFalse} '$false'; + @Override public ParserRule getRule() { return rule; } + + //{VLSConstant} name=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) | {VLSTrue} '$true' | + //{VLSFalse} '$false' + public Alternatives getAlternatives() { return cAlternatives; } + + //{VLSConstant} name=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) + public Group getGroup_0() { return cGroup_0; } + + //{VLSConstant} + public Action getVLSConstantAction_0_0() { return cVLSConstantAction_0_0; } + + //name=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) + public Assignment getNameAssignment_0_1() { return cNameAssignment_0_1; } + + //(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) + public Alternatives getNameAlternatives_0_1_0() { return cNameAlternatives_0_1_0; } + + //LOWER_WORD_ID + public RuleCall getNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0() { return cNameLOWER_WORD_IDTerminalRuleCall_0_1_0_0; } + + //SINGLE_QUOTE + public RuleCall getNameSINGLE_QUOTETerminalRuleCall_0_1_0_1() { return cNameSINGLE_QUOTETerminalRuleCall_0_1_0_1; } + + //DOLLAR_ID + public RuleCall getNameDOLLAR_IDTerminalRuleCall_0_1_0_2() { return cNameDOLLAR_IDTerminalRuleCall_0_1_0_2; } + + //DOUBLE_DOLLAR_ID + public RuleCall getNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3() { return cNameDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3; } + + //VLSRole + public RuleCall getNameVLSRoleParserRuleCall_0_1_0_4() { return cNameVLSRoleParserRuleCall_0_1_0_4; } + + //{VLSTrue} '$true' + public Group getGroup_1() { return cGroup_1; } + + //{VLSTrue} + public Action getVLSTrueAction_1_0() { return cVLSTrueAction_1_0; } + + //'$true' + public Keyword getTrueKeyword_1_1() { return cTrueKeyword_1_1; } + + //{VLSFalse} '$false' + public Group getGroup_2() { return cGroup_2; } + + //{VLSFalse} + public Action getVLSFalseAction_2_0() { return cVLSFalseAction_2_0; } + + //'$false' + public Keyword getFalseKeyword_2_1() { return cFalseKeyword_2_1; } + } + public class VLSAtomicFunctionElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSAtomicFunction"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0); + private final Action cVLSFunctionAction_0_0 = (Action)cGroup_0.eContents().get(0); + private final Assignment cConstantAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1); + private final Alternatives cConstantAlternatives_0_1_0 = (Alternatives)cConstantAssignment_0_1.eContents().get(0); + private final RuleCall cConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0 = (RuleCall)cConstantAlternatives_0_1_0.eContents().get(0); + private final RuleCall cConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1 = (RuleCall)cConstantAlternatives_0_1_0.eContents().get(1); + private final RuleCall cConstantDOLLAR_IDTerminalRuleCall_0_1_0_2 = (RuleCall)cConstantAlternatives_0_1_0.eContents().get(2); + private final RuleCall cConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3 = (RuleCall)cConstantAlternatives_0_1_0.eContents().get(3); + private final RuleCall cConstantVLSRoleParserRuleCall_0_1_0_4 = (RuleCall)cConstantAlternatives_0_1_0.eContents().get(4); + private final Group cGroup_0_2 = (Group)cGroup_0.eContents().get(2); + private final Keyword cLeftParenthesisKeyword_0_2_0 = (Keyword)cGroup_0_2.eContents().get(0); + private final Assignment cTermsAssignment_0_2_1 = (Assignment)cGroup_0_2.eContents().get(1); + private final RuleCall cTermsVLSFofTermParserRuleCall_0_2_1_0 = (RuleCall)cTermsAssignment_0_2_1.eContents().get(0); + private final Group cGroup_0_2_2 = (Group)cGroup_0_2.eContents().get(2); + private final Keyword cCommaKeyword_0_2_2_0 = (Keyword)cGroup_0_2_2.eContents().get(0); + private final Assignment cTermsAssignment_0_2_2_1 = (Assignment)cGroup_0_2_2.eContents().get(1); + private final RuleCall cTermsVLSFofTermParserRuleCall_0_2_2_1_0 = (RuleCall)cTermsAssignment_0_2_2_1.eContents().get(0); + private final Keyword cRightParenthesisKeyword_0_2_3 = (Keyword)cGroup_0_2.eContents().get(3); + private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1); + private final Action cVLSLessAction_1_0 = (Action)cGroup_1.eContents().get(0); + private final Assignment cNameAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final Keyword cNameLessKeyword_1_1_0 = (Keyword)cNameAssignment_1_1.eContents().get(0); + private final Keyword cLeftParenthesisKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2); + private final Assignment cTermsAssignment_1_3 = (Assignment)cGroup_1.eContents().get(3); + private final RuleCall cTermsVLSFofTermParserRuleCall_1_3_0 = (RuleCall)cTermsAssignment_1_3.eContents().get(0); + private final Keyword cCommaKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4); + private final Assignment cTermsAssignment_1_5 = (Assignment)cGroup_1.eContents().get(5); + private final RuleCall cTermsVLSFofTermParserRuleCall_1_5_0 = (RuleCall)cTermsAssignment_1_5.eContents().get(0); + private final Keyword cRightParenthesisKeyword_1_6 = (Keyword)cGroup_1.eContents().get(6); + + //VLSAtomicFunction VLSTerm: + // {VLSFunction} constant=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) ('(' terms+=VLSFofTerm + // (',' terms+=VLSFofTerm)* ')') | {VLSLess} name='$less' '(' terms+=VLSFofTerm ',' terms+=VLSFofTerm ')'; + @Override public ParserRule getRule() { return rule; } + + //{VLSFunction} constant=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) ('(' terms+=VLSFofTerm + //(',' terms+=VLSFofTerm)* ')') | {VLSLess} name='$less' '(' terms+=VLSFofTerm ',' terms+=VLSFofTerm ')' + public Alternatives getAlternatives() { return cAlternatives; } + + //{VLSFunction} constant=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) ('(' terms+=VLSFofTerm + //(',' terms+=VLSFofTerm)* ')') + public Group getGroup_0() { return cGroup_0; } + + //{VLSFunction} + public Action getVLSFunctionAction_0_0() { return cVLSFunctionAction_0_0; } + + //constant=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) + public Assignment getConstantAssignment_0_1() { return cConstantAssignment_0_1; } + + //(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) + public Alternatives getConstantAlternatives_0_1_0() { return cConstantAlternatives_0_1_0; } + + //LOWER_WORD_ID + public RuleCall getConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0() { return cConstantLOWER_WORD_IDTerminalRuleCall_0_1_0_0; } + + //SINGLE_QUOTE + public RuleCall getConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1() { return cConstantSINGLE_QUOTETerminalRuleCall_0_1_0_1; } + + //DOLLAR_ID + public RuleCall getConstantDOLLAR_IDTerminalRuleCall_0_1_0_2() { return cConstantDOLLAR_IDTerminalRuleCall_0_1_0_2; } + + //DOUBLE_DOLLAR_ID + public RuleCall getConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3() { return cConstantDOUBLE_DOLLAR_IDTerminalRuleCall_0_1_0_3; } + + //VLSRole + public RuleCall getConstantVLSRoleParserRuleCall_0_1_0_4() { return cConstantVLSRoleParserRuleCall_0_1_0_4; } + + //'(' terms+=VLSFofTerm (',' terms+=VLSFofTerm)* ')' + public Group getGroup_0_2() { return cGroup_0_2; } + + //'(' + public Keyword getLeftParenthesisKeyword_0_2_0() { return cLeftParenthesisKeyword_0_2_0; } + + //terms+=VLSFofTerm + public Assignment getTermsAssignment_0_2_1() { return cTermsAssignment_0_2_1; } + + //VLSFofTerm + public RuleCall getTermsVLSFofTermParserRuleCall_0_2_1_0() { return cTermsVLSFofTermParserRuleCall_0_2_1_0; } + + //(',' terms+=VLSFofTerm)* + public Group getGroup_0_2_2() { return cGroup_0_2_2; } + + //',' + public Keyword getCommaKeyword_0_2_2_0() { return cCommaKeyword_0_2_2_0; } + + //terms+=VLSFofTerm + public Assignment getTermsAssignment_0_2_2_1() { return cTermsAssignment_0_2_2_1; } + + //VLSFofTerm + public RuleCall getTermsVLSFofTermParserRuleCall_0_2_2_1_0() { return cTermsVLSFofTermParserRuleCall_0_2_2_1_0; } + + //')' + public Keyword getRightParenthesisKeyword_0_2_3() { return cRightParenthesisKeyword_0_2_3; } + + //{VLSLess} name='$less' '(' terms+=VLSFofTerm ',' terms+=VLSFofTerm ')' + public Group getGroup_1() { return cGroup_1; } + + //{VLSLess} + public Action getVLSLessAction_1_0() { return cVLSLessAction_1_0; } + + //name='$less' + public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; } + + //'$less' + public Keyword getNameLessKeyword_1_1_0() { return cNameLessKeyword_1_1_0; } + + //'(' + public Keyword getLeftParenthesisKeyword_1_2() { return cLeftParenthesisKeyword_1_2; } + + //terms+=VLSFofTerm + public Assignment getTermsAssignment_1_3() { return cTermsAssignment_1_3; } + + //VLSFofTerm + public RuleCall getTermsVLSFofTermParserRuleCall_1_3_0() { return cTermsVLSFofTermParserRuleCall_1_3_0; } + + //',' + public Keyword getCommaKeyword_1_4() { return cCommaKeyword_1_4; } + + //terms+=VLSFofTerm + public Assignment getTermsAssignment_1_5() { return cTermsAssignment_1_5; } + + //VLSFofTerm + public RuleCall getTermsVLSFofTermParserRuleCall_1_5_0() { return cTermsVLSFofTermParserRuleCall_1_5_0; } + + //')' + public Keyword getRightParenthesisKeyword_1_6() { return cRightParenthesisKeyword_1_6; } + } + public class VLSVariableElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSVariable"); + private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1); + private final RuleCall cNameUPPER_WORD_IDTerminalRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0); + + //VLSVariable: + // name=UPPER_WORD_ID; + @Override public ParserRule getRule() { return rule; } + + //name=UPPER_WORD_ID + public Assignment getNameAssignment() { return cNameAssignment; } + + //UPPER_WORD_ID + public RuleCall getNameUPPER_WORD_IDTerminalRuleCall_0() { return cNameUPPER_WORD_IDTerminalRuleCall_0; } + } + public class VLSFofTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFofTerm"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cVLSVariableParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cVLSFunctionAsTermParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cVLSDefinedTermParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + + //VLSFofTerm VLSTerm: + // VLSVariable | VLSFunctionAsTerm | VLSDefinedTerm; + @Override public ParserRule getRule() { return rule; } + + ////(VLSVariable | VLSFunction | VLSTffConditional | VLSTffLet | VLSTffTuple) + //VLSVariable | VLSFunctionAsTerm | VLSDefinedTerm + public Alternatives getAlternatives() { return cAlternatives; } + + //VLSVariable + public RuleCall getVLSVariableParserRuleCall_0() { return cVLSVariableParserRuleCall_0; } + + //VLSFunctionAsTerm + public RuleCall getVLSFunctionAsTermParserRuleCall_1() { return cVLSFunctionAsTermParserRuleCall_1; } + + //VLSDefinedTerm + public RuleCall getVLSDefinedTermParserRuleCall_2() { return cVLSDefinedTermParserRuleCall_2; } + } + public class VLSFunctionAsTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSFunctionAsTerm"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Assignment cFunctorAssignment_0 = (Assignment)cGroup.eContents().get(0); + private final Alternatives cFunctorAlternatives_0_0 = (Alternatives)cFunctorAssignment_0.eContents().get(0); + private final RuleCall cFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0 = (RuleCall)cFunctorAlternatives_0_0.eContents().get(0); + private final RuleCall cFunctorSINGLE_QUOTETerminalRuleCall_0_0_1 = (RuleCall)cFunctorAlternatives_0_0.eContents().get(1); + private final RuleCall cFunctorDOLLAR_IDTerminalRuleCall_0_0_2 = (RuleCall)cFunctorAlternatives_0_0.eContents().get(2); + private final RuleCall cFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3 = (RuleCall)cFunctorAlternatives_0_0.eContents().get(3); + private final Group cGroup_1 = (Group)cGroup.eContents().get(1); + private final Keyword cLeftParenthesisKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); + private final Assignment cTermsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final RuleCall cTermsVLSFofTermParserRuleCall_1_1_0 = (RuleCall)cTermsAssignment_1_1.eContents().get(0); + private final Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2); + private final Keyword cCommaKeyword_1_2_0 = (Keyword)cGroup_1_2.eContents().get(0); + private final Assignment cTermsAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1); + private final RuleCall cTermsVLSFofTermParserRuleCall_1_2_1_0 = (RuleCall)cTermsAssignment_1_2_1.eContents().get(0); + private final Keyword cRightParenthesisKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3); + + //VLSFunctionAsTerm: + // functor=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID) ('(' terms+=VLSFofTerm (',' terms+=VLSFofTerm)* + // ')')?; + @Override public ParserRule getRule() { return rule; } + + ////? on next line causes warning + ////TODO might need replace DOLLAR_ID with enum rule + //functor=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID) ('(' terms+=VLSFofTerm (',' terms+=VLSFofTerm)* + //')')? + public Group getGroup() { return cGroup; } + + ////? on next line causes warning + ////TODO might need replace DOLLAR_ID with enum rule + //functor=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID) + public Assignment getFunctorAssignment_0() { return cFunctorAssignment_0; } + + //(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID) + public Alternatives getFunctorAlternatives_0_0() { return cFunctorAlternatives_0_0; } + + //LOWER_WORD_ID + public RuleCall getFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0() { return cFunctorLOWER_WORD_IDTerminalRuleCall_0_0_0; } + + //SINGLE_QUOTE + public RuleCall getFunctorSINGLE_QUOTETerminalRuleCall_0_0_1() { return cFunctorSINGLE_QUOTETerminalRuleCall_0_0_1; } + + //DOLLAR_ID + public RuleCall getFunctorDOLLAR_IDTerminalRuleCall_0_0_2() { return cFunctorDOLLAR_IDTerminalRuleCall_0_0_2; } + + //DOUBLE_DOLLAR_ID + public RuleCall getFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3() { return cFunctorDOUBLE_DOLLAR_IDTerminalRuleCall_0_0_3; } + + //('(' terms+=VLSFofTerm (',' terms+=VLSFofTerm)* ')')? + public Group getGroup_1() { return cGroup_1; } + + //'(' + public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; } + + //terms+=VLSFofTerm + public Assignment getTermsAssignment_1_1() { return cTermsAssignment_1_1; } + + //VLSFofTerm + public RuleCall getTermsVLSFofTermParserRuleCall_1_1_0() { return cTermsVLSFofTermParserRuleCall_1_1_0; } + + //(',' terms+=VLSFofTerm)* + public Group getGroup_1_2() { return cGroup_1_2; } + + //',' + public Keyword getCommaKeyword_1_2_0() { return cCommaKeyword_1_2_0; } + + //terms+=VLSFofTerm + public Assignment getTermsAssignment_1_2_1() { return cTermsAssignment_1_2_1; } + + //VLSFofTerm + public RuleCall getTermsVLSFofTermParserRuleCall_1_2_1_0() { return cTermsVLSFofTermParserRuleCall_1_2_1_0; } + + //')' + public Keyword getRightParenthesisKeyword_1_3() { return cRightParenthesisKeyword_1_3; } + } + public class VLSDefinedTermElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.VLSDefinedTerm"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0); + private final Action cVLSIntAction_0_0 = (Action)cGroup_0.eContents().get(0); + private final Assignment cValueAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1); + private final RuleCall cValueSIGNED_LITERALTerminalRuleCall_0_1_0 = (RuleCall)cValueAssignment_0_1.eContents().get(0); + private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1); + private final Action cVLSDoubleQuoteAction_1_0 = (Action)cGroup_1.eContents().get(0); + private final Assignment cValueAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); + private final RuleCall cValueDOUBLE_QUOTETerminalRuleCall_1_1_0 = (RuleCall)cValueAssignment_1_1.eContents().get(0); + + //VLSDefinedTerm: + // {VLSInt} value=SIGNED_LITERAL | {VLSDoubleQuote} value=DOUBLE_QUOTE; + @Override public ParserRule getRule() { return rule; } + + //{VLSInt} value=SIGNED_LITERAL | {VLSDoubleQuote} value=DOUBLE_QUOTE + public Alternatives getAlternatives() { return cAlternatives; } + + //{VLSInt} value=SIGNED_LITERAL + public Group getGroup_0() { return cGroup_0; } + + //{VLSInt} + public Action getVLSIntAction_0_0() { return cVLSIntAction_0_0; } + + //value=SIGNED_LITERAL + public Assignment getValueAssignment_0_1() { return cValueAssignment_0_1; } + + //SIGNED_LITERAL + public RuleCall getValueSIGNED_LITERALTerminalRuleCall_0_1_0() { return cValueSIGNED_LITERALTerminalRuleCall_0_1_0; } + + //{VLSDoubleQuote} value=DOUBLE_QUOTE + public Group getGroup_1() { return cGroup_1; } + + //{VLSDoubleQuote} + public Action getVLSDoubleQuoteAction_1_0() { return cVLSDoubleQuoteAction_1_0; } + + //value=DOUBLE_QUOTE + public Assignment getValueAssignment_1_1() { return cValueAssignment_1_1; } + + //DOUBLE_QUOTE + public RuleCall getValueDOUBLE_QUOTETerminalRuleCall_1_1_0() { return cValueDOUBLE_QUOTETerminalRuleCall_1_1_0; } + } + + + private final VampireModelElements pVampireModel; + private final TerminalRule tALPHA_NUMERIC; + private final TerminalRule tUPPER_WORD_ID; + private final TerminalRule tLOWER_WORD_ID; + private final TerminalRule tDOUBLE_QUOTE; + private final TerminalRule tSINGLE_QUOTE; + private final TerminalRule tSIGN; + private final TerminalRule tDOLLAR_ID; + private final TerminalRule tDOUBLE_DOLLAR_ID; + private final TerminalRule tLITERAL; + private final TerminalRule tSIGNED_LITERAL; + private final TerminalRule tSINGLE_COMMENT; + private final VLSCommentElements pVLSComment; + private final VLSConfirmationsElements pVLSConfirmations; + private final VLSFofFormulaElements pVLSFofFormula; + private final VLSTffFormulaElements pVLSTffFormula; + private final VLSTffNameElements pVLSTffName; + private final VLSTffDistinctElements pVLSTffDistinct; + private final VLSTffFiniteElements pVLSTffFinite; + private final VLSTffDeclPredElements pVLSTffDeclPred; + private final VLSRoleElements pVLSRole; + private final VLSAnnotationElements pVLSAnnotation; + private final VLSAnnotationTermsElements pVLSAnnotationTerms; + private final VLSTffTermElements pVLSTffTerm; + private final VLSCommentTermElements pVLSCommentTerm; + private final VLSDeclarationElements pVLSDeclaration; + private final VLSOtherDeclarationElements pVLSOtherDeclaration; + private final VLSVariableDeclarationElements pVLSVariableDeclaration; + private final VLSTypeDefElements pVLSTypeDef; + private final VLSUnitaryTermElements pVLSUnitaryTerm; + private final VLSTermElements pVLSTerm; + private final VLSBinaryElements pVLSBinary; + private final VLSUnitaryFormulaElements pVLSUnitaryFormula; + private final VLSUniversalQuantifierElements pVLSUniversalQuantifier; + private final VLSExistentialQuantifierElements pVLSExistentialQuantifier; + private final VLSUnaryNegationElements pVLSUnaryNegation; + private final VLSUnaryInfixElements pVLSUnaryInfix; + private final VLSAtomicElements pVLSAtomic; + private final VLSAtomicConstantElements pVLSAtomicConstant; + private final VLSAtomicFunctionElements pVLSAtomicFunction; + private final VLSVariableElements pVLSVariable; + private final VLSFofTermElements pVLSFofTerm; + private final VLSFunctionAsTermElements pVLSFunctionAsTerm; + private final VLSDefinedTermElements pVLSDefinedTerm; + + private final Grammar grammar; + + private final TerminalsGrammarAccess gaTerminals; + + @Inject + public VampireLanguageGrammarAccess(GrammarProvider grammarProvider, + TerminalsGrammarAccess gaTerminals) { + this.grammar = internalFindGrammar(grammarProvider); + this.gaTerminals = gaTerminals; + this.pVampireModel = new VampireModelElements(); + this.tALPHA_NUMERIC = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.ALPHA_NUMERIC"); + this.tUPPER_WORD_ID = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.UPPER_WORD_ID"); + this.tLOWER_WORD_ID = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.LOWER_WORD_ID"); + this.tDOUBLE_QUOTE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_QUOTE"); + this.tSINGLE_QUOTE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_QUOTE"); + this.tSIGN = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.SIGN"); + this.tDOLLAR_ID = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOLLAR_ID"); + this.tDOUBLE_DOLLAR_ID = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.DOUBLE_DOLLAR_ID"); + this.tLITERAL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.LITERAL"); + this.tSIGNED_LITERAL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.SIGNED_LITERAL"); + this.tSINGLE_COMMENT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ca.mcgill.ecse.dslreasoner.VampireLanguage.SINGLE_COMMENT"); + this.pVLSComment = new VLSCommentElements(); + this.pVLSConfirmations = new VLSConfirmationsElements(); + this.pVLSFofFormula = new VLSFofFormulaElements(); + this.pVLSTffFormula = new VLSTffFormulaElements(); + this.pVLSTffName = new VLSTffNameElements(); + this.pVLSTffDistinct = new VLSTffDistinctElements(); + this.pVLSTffFinite = new VLSTffFiniteElements(); + this.pVLSTffDeclPred = new VLSTffDeclPredElements(); + this.pVLSRole = new VLSRoleElements(); + this.pVLSAnnotation = new VLSAnnotationElements(); + this.pVLSAnnotationTerms = new VLSAnnotationTermsElements(); + this.pVLSTffTerm = new VLSTffTermElements(); + this.pVLSCommentTerm = new VLSCommentTermElements(); + this.pVLSDeclaration = new VLSDeclarationElements(); + this.pVLSOtherDeclaration = new VLSOtherDeclarationElements(); + this.pVLSVariableDeclaration = new VLSVariableDeclarationElements(); + this.pVLSTypeDef = new VLSTypeDefElements(); + this.pVLSUnitaryTerm = new VLSUnitaryTermElements(); + this.pVLSTerm = new VLSTermElements(); + this.pVLSBinary = new VLSBinaryElements(); + this.pVLSUnitaryFormula = new VLSUnitaryFormulaElements(); + this.pVLSUniversalQuantifier = new VLSUniversalQuantifierElements(); + this.pVLSExistentialQuantifier = new VLSExistentialQuantifierElements(); + this.pVLSUnaryNegation = new VLSUnaryNegationElements(); + this.pVLSUnaryInfix = new VLSUnaryInfixElements(); + this.pVLSAtomic = new VLSAtomicElements(); + this.pVLSAtomicConstant = new VLSAtomicConstantElements(); + this.pVLSAtomicFunction = new VLSAtomicFunctionElements(); + this.pVLSVariable = new VLSVariableElements(); + this.pVLSFofTerm = new VLSFofTermElements(); + this.pVLSFunctionAsTerm = new VLSFunctionAsTermElements(); + this.pVLSDefinedTerm = new VLSDefinedTermElements(); + } + + protected Grammar internalFindGrammar(GrammarProvider grammarProvider) { + Grammar grammar = grammarProvider.getGrammar(this); + while (grammar != null) { + if ("ca.mcgill.ecse.dslreasoner.VampireLanguage".equals(grammar.getName())) { + return grammar; + } + List grammars = grammar.getUsedGrammars(); + if (!grammars.isEmpty()) { + grammar = grammars.iterator().next(); + } else { + return null; + } + } + return grammar; + } + + @Override + public Grammar getGrammar() { + return grammar; + } + + + public TerminalsGrammarAccess getTerminalsGrammarAccess() { + return gaTerminals; + } + + + ////@@@@@@@@@@@ + ////2 things TODO: + ////1. fix anotations (ln77) + ////2. can only use declared variables in formula (ln 158) + ////@@@@@@@@@@@ + //VampireModel: + // (comments+=VLSComment | confirmations+=VLSConfirmations | formulas+=VLSFofFormula | tfformulas+=VLSTffFormula)*; + public VampireModelElements getVampireModelAccess() { + return pVampireModel; + } + + public ParserRule getVampireModelRule() { + return getVampireModelAccess().getRule(); + } + + //terminal ALPHA_NUMERIC: + // 'a'..'z' | 'A'..'Z' | '0'..'9' | '_'; + public TerminalRule getALPHA_NUMERICRule() { + return tALPHA_NUMERIC; + } + + //terminal UPPER_WORD_ID: + // 'A'..'Z' ALPHA_NUMERIC*; + public TerminalRule getUPPER_WORD_IDRule() { + return tUPPER_WORD_ID; + } + + //terminal LOWER_WORD_ID: + // 'a'..'z' ALPHA_NUMERIC*; + public TerminalRule getLOWER_WORD_IDRule() { + return tLOWER_WORD_ID; + } + + //terminal DOUBLE_QUOTE: + // '"' ('\\' ('"' | '\\') | !('\\' | '"'))* '"'; + public TerminalRule getDOUBLE_QUOTERule() { + return tDOUBLE_QUOTE; + } + + //terminal SINGLE_QUOTE: + // "'" ('\\' ("'" | '\\') | !('\\' | "'"))+ "'"; + public TerminalRule getSINGLE_QUOTERule() { + return tSINGLE_QUOTE; + } + + //terminal SIGN: + // '+' | '-'; + public TerminalRule getSIGNRule() { + return tSIGN; + } + + //terminal DOLLAR_ID: + // '$' LOWER_WORD_ID; + public TerminalRule getDOLLAR_IDRule() { + return tDOLLAR_ID; + } + + //terminal DOUBLE_DOLLAR_ID: + // '$$' LOWER_WORD_ID; + public TerminalRule getDOUBLE_DOLLAR_IDRule() { + return tDOUBLE_DOLLAR_ID; + } + + //terminal LITERAL: + // '0' | '1'..'9' INT?; + public TerminalRule getLITERALRule() { + return tLITERAL; + } + + //terminal SIGNED_LITERAL: + // SIGN* LITERAL; + public TerminalRule getSIGNED_LITERALRule() { + return tSIGNED_LITERAL; + } + + //terminal SINGLE_COMMENT: + // '%' !('\n' | '\r')* ('\r'? '\n')?; + public TerminalRule getSINGLE_COMMENTRule() { + return tSINGLE_COMMENT; + } + + ////terminal ID: ( !('('|')'|'\r'|'\n') )+ ; + //////////////////////////////////// + //// VLS types + //////////////////////////////////// + //// + ////VLSInclude: + //// 'include(' fileName = SINGLE_QUOTE ( ',[' names += VLSName (',' names += VLSName)* ']' )? + ////; + ////VLSName: + //// name = (LOWER_WORD_ID | SINGLE_QUOTE | LITERAL | SIGNED_LITERAL) + ////; + //// + //VLSComment: + // comment=SINGLE_COMMENT + // //need to add a new line at the end of the file for the case where the last line is a comment + //; + public VLSCommentElements getVLSCommentAccess() { + return pVLSComment; + } + + public ParserRule getVLSCommentRule() { + return getVLSCommentAccess().getRule(); + } + + ////VLSConstantDeclaration: name = (LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID ); + //VLSConfirmations: + // {VLSSatisfiable} 'Satisfiable!' | {VLSWarning} "WARNING!" "Could" "not" "set" "resource" "limit:" "Virtual" "memory." + // | {VLSTrying} 'TRYING' '[' name=LITERAL ']' | {VLSFiniteModel} 'Finite' 'Model' 'Found!'; + public VLSConfirmationsElements getVLSConfirmationsAccess() { + return pVLSConfirmations; + } + + public ParserRule getVLSConfirmationsRule() { + return getVLSConfirmationsAccess().getRule(); + } + + //// + //VLSFofFormula: + // 'fof' '(' name=(LOWER_WORD_ID | SIGNED_LITERAL | SINGLE_QUOTE) ',' fofRole=VLSRole ',' fofFormula=VLSTerm (',' + // annotations=VLSAnnotation)? ')' '.'; + public VLSFofFormulaElements getVLSFofFormulaAccess() { + return pVLSFofFormula; + } + + public ParserRule getVLSFofFormulaRule() { + return getVLSFofFormulaAccess().getRule(); + } + + //VLSTffFormula: + // 'tff' '(' name=VLSTffName ',' tffRole=VLSRole ',' fofFormula=VLSTffTerm (',' annotations=VLSAnnotation)? ')' '.'; + public VLSTffFormulaElements getVLSTffFormulaAccess() { + return pVLSTffFormula; + } + + public ParserRule getVLSTffFormulaRule() { + return getVLSTffFormulaAccess().getRule(); + } + + //VLSTffName: + // VLSTffDeclPred | VLSTffFinite | VLSTffDistinct; + public VLSTffNameElements getVLSTffNameAccess() { + return pVLSTffName; + } + + public ParserRule getVLSTffNameRule() { + return getVLSTffNameAccess().getRule(); + } + + //VLSTffDistinct: + // 'distinct_domain'; + public VLSTffDistinctElements getVLSTffDistinctAccess() { + return pVLSTffDistinct; + } + + public ParserRule getVLSTffDistinctRule() { + return getVLSTffDistinctAccess().getRule(); + } + + //VLSTffFinite: + // 'finite_domain'; + public VLSTffFiniteElements getVLSTffFiniteAccess() { + return pVLSTffFinite; + } + + public ParserRule getVLSTffFiniteRule() { + return getVLSTffFiniteAccess().getRule(); + } + + //VLSTffDeclPred: + // 'declare_' DOLLAR_ID | LOWER_WORD_ID; + public VLSTffDeclPredElements getVLSTffDeclPredAccess() { + return pVLSTffDeclPred; + } + + public ParserRule getVLSTffDeclPredRule() { + return getVLSTffDeclPredAccess().getRule(); + } + + ///* + ////NAME + //VLSName: + // //(atomic_Word = Atomic_Word | integer = Integer | single_quote_word = Single_Quote_Word) + // name = (LOWER_WORD_ID | SIGNED_INT_ID | SINGLE_QUOTE) + //; + //*/ // + //VLSRole: + // "axiom" | "conjecture" | "hypothesis" | "definition" | "assumption" | "lemma" + // | "theorem" | "corollary" | "negated_conjecture" | "plain" | "type" | + // "fi_domain" | "fi_functors" | "fi_predicates" | "unknown"; + public VLSRoleElements getVLSRoleAccess() { + return pVLSRole; + } + + public ParserRule getVLSRoleRule() { + return getVLSRoleAccess().getRule(); + } + + ///* + ////VLSRole: + //// VLSAxiom | VLSConjecture | VLSHypothesis | VLSDefinition | + //// VLSAssumption | VLSLemma | VLSTheorem | VLSCorollary | VLSNegated_Conjecture | + //// VLSPlain | VLSType |VLSFi_Domain | VLSFi_Functors | VLSFi_Predicates | VLSUnknown + ////; + //// + ////VLSAxiom: + //// "axiom" + ////; + //// + ////VLSConjecture: + //// "conjecture" + ////; + //// + ////VLSHypothesis: + //// "hypothesis" + ////; + //// + ////VLSDefinition: + //// "definition" + ////; + //// + ////VLSAssumption: + //// "assumption" + ////; + //// + ////VLSLemma: + //// "lemma" + ////; + //// + ////VLSTheorem: + //// "theorem" + ////; + //// + ////VLSCorollary: + //// "corollary" + ////; + //// + ////VLSNegated_Conjecture: + //// "negated_conjecture" + ////; + //// + ////VLSPlain: + //// "plain" + ////; + //// + ////VLSType: + //// "type" + ////; + //// + ////VLSFi_Domain: + //// "fi_domain" + ////; + //// + ////VLSFi_Functors: + //// "fi_functors" + ////; + //// + ////VLSFi_Predicates: + //// "fi_predicates" + ////; + //// + ////VLSUnknown: + //// "unknown" + ////; + //*/ // + //// Not at all based on the website. based on what we think the output will be like + //VLSAnnotation: + // '['? name=(LOWER_WORD_ID | SINGLE_QUOTE | VLSRole)? ('(' followup=VLSAnnotationTerms ')')? ']'?; + public VLSAnnotationElements getVLSAnnotationAccess() { + return pVLSAnnotation; + } + + public ParserRule getVLSAnnotationRule() { + return getVLSAnnotationAccess().getRule(); + } + + //VLSAnnotationTerms VLSAnnotation: + // terms+=VLSAnnotation (',' terms+=VLSAnnotation)*; + public VLSAnnotationTermsElements getVLSAnnotationTermsAccess() { + return pVLSAnnotationTerms; + } + + public ParserRule getVLSAnnotationTermsRule() { + return getVLSAnnotationTermsAccess().getRule(); + } + + //////////////////////////////////// + //// VLS Terms + //////////////////////////////////// + //VLSTffTerm: + // VLSTerm | VLSDeclaration | VLSCommentTerm; + public VLSTffTermElements getVLSTffTermAccess() { + return pVLSTffTerm; + } + + public ParserRule getVLSTffTermRule() { + return getVLSTffTermAccess().getRule(); + } + + //VLSCommentTerm VLSTerm: + // comment=SINGLE_COMMENT; + public VLSCommentTermElements getVLSCommentTermAccess() { + return pVLSCommentTerm; + } + + public ParserRule getVLSCommentTermRule() { + return getVLSCommentTermAccess().getRule(); + } + + /////////////////// + ////TFF Specific + // VLSDeclaration: + // VLSVariableDeclaration | VLSOtherDeclaration; + public VLSDeclarationElements getVLSDeclarationAccess() { + return pVLSDeclaration; + } + + public ParserRule getVLSDeclarationRule() { + return getVLSDeclarationAccess().getRule(); + } + + //VLSOtherDeclaration: + // name=VLSAtomicConstant ':' type=VLSTypeDef; + public VLSOtherDeclarationElements getVLSOtherDeclarationAccess() { + return pVLSOtherDeclaration; + } + + public ParserRule getVLSOtherDeclarationRule() { + return getVLSOtherDeclarationAccess().getRule(); + } + + //VLSVariableDeclaration: + // name=VLSVariable ':' type=VLSTypeDef; + public VLSVariableDeclarationElements getVLSVariableDeclarationAccess() { + return pVLSVariableDeclaration; + } + + public ParserRule getVLSVariableDeclarationRule() { + return getVLSVariableDeclarationAccess().getRule(); + } + + //VLSTypeDef: + // typeSig=VLSUnitaryTerm ('>' mapsTo=VLSAtomicConstant)? //might need to make VLSAtomic to include VLSVariable + //; + public VLSTypeDefElements getVLSTypeDefAccess() { + return pVLSTypeDef; + } + + public ParserRule getVLSTypeDefRule() { + return getVLSTypeDefAccess().getRule(); + } + + //VLSUnitaryTerm VLSTypeDef: + // initType=VLSAtomic ('*' nextType=VLSAtomicConstant)* //might need to make VLSAtomic to include VLSVariable + //; + public VLSUnitaryTermElements getVLSUnitaryTermAccess() { + return pVLSUnitaryTerm; + } + + public ParserRule getVLSUnitaryTermRule() { + return getVLSUnitaryTermAccess().getRule(); + } + + ////TFF Specific + /////////////////// + //VLSTerm: + // VLSBinary; + public VLSTermElements getVLSTermAccess() { + return pVLSTerm; + } + + public ParserRule getVLSTermRule() { + return getVLSTermAccess().getRule(); + } + + ////* + ////VLSBinaryFormula + //VLSBinary VLSTerm: + // VLSUnitaryFormula (({VLSEquivalent.left=current} "<=>" | {VLSImplies.left=current} "=>" | + // {VLSRevImplies.left=current} "<=" | {VLSXnor.left=current} "<~>" | {VLSNor.left=current} "~|" | + // {VLSNand.left=current} "~&") right=VLSUnitaryFormula | ({VLSAnd.left=current} '&' right=VLSUnitaryFormula)+ + // | ({VLSOr.left=current} '|' right=VLSUnitaryFormula)+)?; + public VLSBinaryElements getVLSBinaryAccess() { + return pVLSBinary; + } + + public ParserRule getVLSBinaryRule() { + return getVLSBinaryAccess().getRule(); + } + + ////VLSUnitaryFormula + //VLSUnitaryFormula VLSTerm: + // VLSUniversalQuantifier | VLSExistentialQuantifier | VLSUnaryNegation | VLSUnaryInfix + // //| VLSEquality + // | '(' VLSTerm ')'; + public VLSUnitaryFormulaElements getVLSUnitaryFormulaAccess() { + return pVLSUnitaryFormula; + } + + public ParserRule getVLSUnitaryFormulaRule() { + return getVLSUnitaryFormulaAccess().getRule(); + } + + //VLSUniversalQuantifier VLSTerm: + // {VLSUniversalQuantifier} ("!" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | + // VLSVariableDeclaration))* ']' ':') operand=VLSUnitaryFormula; + public VLSUniversalQuantifierElements getVLSUniversalQuantifierAccess() { + return pVLSUniversalQuantifier; + } + + public ParserRule getVLSUniversalQuantifierRule() { + return getVLSUniversalQuantifierAccess().getRule(); + } + + //VLSExistentialQuantifier VLSTerm: + // {VLSExistentialQuantifier} ("?" '[' variables+=(VLSVariable | VLSVariableDeclaration) (',' variables+=(VLSVariable | + // VLSVariableDeclaration))* ']' ':') operand=VLSUnitaryFormula; + public VLSExistentialQuantifierElements getVLSExistentialQuantifierAccess() { + return pVLSExistentialQuantifier; + } + + public ParserRule getVLSExistentialQuantifierRule() { + return getVLSExistentialQuantifierAccess().getRule(); + } + + //VLSUnaryNegation VLSTerm: + // {VLSUnaryNegation} '~' operand=VLSUnitaryFormula; + public VLSUnaryNegationElements getVLSUnaryNegationAccess() { + return pVLSUnaryNegation; + } + + public ParserRule getVLSUnaryNegationRule() { + return getVLSUnaryNegationAccess().getRule(); + } + + //VLSUnaryInfix VLSTerm: + // VLSAtomic (({VLSInequality.left=current} "!=" | {VLSEquality.left=current} "=" | {VLSAssignment.left=current} ":=") + // right=VLSAtomic)?; + public VLSUnaryInfixElements getVLSUnaryInfixAccess() { + return pVLSUnaryInfix; + } + + public ParserRule getVLSUnaryInfixRule() { + return getVLSUnaryInfixAccess().getRule(); + } + + ////NOT SUREEEE + ////VLSEquality returns VLSTerm: + //// VLSFofTerm ({VLSEquality.left = current} "=" right = VLSFofTerm)? + //// + ////; + ///* + //enum VLSDefinedFunctor: + // UMINUS='$uminus' | SUM='$sum' | DIFFERENCE='$difference' | PRODUCT='$product' | QUOTIENT='$quotient' | + // QUOTIENT_E='$quotient_e' | QUOTIENT_T='$quotient_t' | QUOTIENT_F='$quotient_f' | REMAINDER_E='$remainder_e' | + // REMAINDER_T='$remainder_t' | REMAINDER_F='$remainder_f' | FLOOR='$floor' | CEILING='$ceiling' | + // TRUNCATE='$truncate' | ROUND='$round' | TO_INT='$to_int' | TO_RAT='$to_rat' | TO_REAL='$to_real' + // ; + //*/ VLSAtomic VLSTerm: + // VLSAtomicConstant | VLSAtomicFunction | VLSVariable + // | VLSDefinedTerm //temporary solution. this is only valid for equality, not for != or := + // //| VLSEquality + //; + public VLSAtomicElements getVLSAtomicAccess() { + return pVLSAtomic; + } + + public ParserRule getVLSAtomicRule() { + return getVLSAtomicAccess().getRule(); + } + + //VLSAtomicConstant VLSTerm: + // {VLSConstant} name=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) | {VLSTrue} '$true' | + // {VLSFalse} '$false'; + public VLSAtomicConstantElements getVLSAtomicConstantAccess() { + return pVLSAtomicConstant; + } + + public ParserRule getVLSAtomicConstantRule() { + return getVLSAtomicConstantAccess().getRule(); + } + + //VLSAtomicFunction VLSTerm: + // {VLSFunction} constant=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) ('(' terms+=VLSFofTerm + // (',' terms+=VLSFofTerm)* ')') | {VLSLess} name='$less' '(' terms+=VLSFofTerm ',' terms+=VLSFofTerm ')'; + public VLSAtomicFunctionElements getVLSAtomicFunctionAccess() { + return pVLSAtomicFunction; + } + + public ParserRule getVLSAtomicFunctionRule() { + return getVLSAtomicFunctionAccess().getRule(); + } + + //VLSVariable: + // name=UPPER_WORD_ID; + public VLSVariableElements getVLSVariableAccess() { + return pVLSVariable; + } + + public ParserRule getVLSVariableRule() { + return getVLSVariableAccess().getRule(); + } + + //VLSFofTerm VLSTerm: + // VLSVariable | VLSFunctionAsTerm | VLSDefinedTerm; + public VLSFofTermElements getVLSFofTermAccess() { + return pVLSFofTerm; + } + + public ParserRule getVLSFofTermRule() { + return getVLSFofTermAccess().getRule(); + } + + //VLSFunctionAsTerm: + // functor=(LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID) ('(' terms+=VLSFofTerm (',' terms+=VLSFofTerm)* + // ')')?; + public VLSFunctionAsTermElements getVLSFunctionAsTermAccess() { + return pVLSFunctionAsTerm; + } + + public ParserRule getVLSFunctionAsTermRule() { + return getVLSFunctionAsTermAccess().getRule(); + } + + //VLSDefinedTerm: + // {VLSInt} value=SIGNED_LITERAL | {VLSDoubleQuote} value=DOUBLE_QUOTE; + public VLSDefinedTermElements getVLSDefinedTermAccess() { + return pVLSDefinedTerm; + } + + public ParserRule getVLSDefinedTermRule() { + return getVLSDefinedTermAccess().getRule(); + } + + //terminal ID: + // '^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*; + public TerminalRule getIDRule() { + return gaTerminals.getIDRule(); + } + + //terminal INT returns ecore::EInt: + // '0'..'9'+; + public TerminalRule getINTRule() { + return gaTerminals.getINTRule(); + } + + //terminal STRING: + // '"' ('\\' . | !('\\' | '"'))* '"' | "'" ('\\' . | !('\\' | "'"))* "'"; + public TerminalRule getSTRINGRule() { + return gaTerminals.getSTRINGRule(); + } + + //terminal ML_COMMENT: + // '/*'->'*/'; + public TerminalRule getML_COMMENTRule() { + return gaTerminals.getML_COMMENTRule(); + } + + //terminal SL_COMMENT: + // '//' !('\n' | '\r')* ('\r'? '\n')?; + public TerminalRule getSL_COMMENTRule() { + return gaTerminals.getSL_COMMENTRule(); + } + + //terminal WS: + // ' ' | '\t' | '\r' | '\n'+; + public TerminalRule getWSRule() { + return gaTerminals.getWSRule(); + } + + //terminal ANY_OTHER: + // .; + public TerminalRule getANY_OTHERRule() { + return gaTerminals.getANY_OTHERRule(); + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/validation/AbstractVampireLanguageValidator.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/validation/AbstractVampireLanguageValidator.java new file mode 100644 index 000000000..8c94ec866 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/validation/AbstractVampireLanguageValidator.java @@ -0,0 +1,19 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.validation; + +import java.util.ArrayList; +import java.util.List; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.xtext.validation.AbstractDeclarativeValidator; + +public abstract class AbstractVampireLanguageValidator extends AbstractDeclarativeValidator { + + @Override + protected List getEPackages() { + List result = new ArrayList(); + result.add(ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage.eINSTANCE); + return result; + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageConfigurableIssueCodesProvider.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageConfigurableIssueCodesProvider.java new file mode 100644 index 000000000..1d504c4e9 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageConfigurableIssueCodesProvider.java @@ -0,0 +1,22 @@ +/* + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.validation; + +import org.eclipse.xtext.preferences.PreferenceKey; +import org.eclipse.xtext.util.IAcceptor; +import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider; +import org.eclipse.xtext.validation.SeverityConverter; + +@SuppressWarnings("restriction") +public class VampireLanguageConfigurableIssueCodesProvider extends ConfigurableIssueCodesProvider { + protected static final String ISSUE_CODE_PREFIX = "ca.mcgill.ecse.dslreasoner."; + + public static final String DEPRECATED_MODEL_PART = ISSUE_CODE_PREFIX + "deprecatedModelPart"; + + @Override + protected void initialize(IAcceptor acceptor) { + super.initialize(acceptor); + acceptor.accept(create(DEPRECATED_MODEL_PART, SeverityConverter.SEVERITY_WARNING)); + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAnd.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAnd.java new file mode 100644 index 000000000..f4b137c36 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAnd.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS And'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnd() + * @model + * @generated + */ +public interface VLSAnd extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnd_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnd_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSAnd diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAnnotation.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAnnotation.java new file mode 100644 index 000000000..10cba836b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAnnotation.java @@ -0,0 +1,98 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Annotation'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getFollowup Followup}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getTerms Terms}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnnotation() + * @model + * @generated + */ +public interface VLSAnnotation extends EObject +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnnotation_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Followup' containment reference. + * + *

+ * If the meaning of the 'Followup' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Followup' containment reference. + * @see #setFollowup(VLSAnnotation) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnnotation_Followup() + * @model containment="true" + * @generated + */ + VLSAnnotation getFollowup(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getFollowup Followup}' containment reference. + * + * + * @param value the new value of the 'Followup' containment reference. + * @see #getFollowup() + * @generated + */ + void setFollowup(VLSAnnotation value); + + /** + * Returns the value of the 'Terms' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation}. + * + *

+ * If the meaning of the 'Terms' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Terms' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAnnotation_Terms() + * @model containment="true" + * @generated + */ + EList getTerms(); + +} // VLSAnnotation diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAssignment.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAssignment.java new file mode 100644 index 000000000..24b65b519 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSAssignment.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Assignment'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAssignment() + * @model + * @generated + */ +public interface VLSAssignment extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAssignment_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSAssignment_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSAssignment diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSComment.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSComment.java new file mode 100644 index 000000000..203859a92 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSComment.java @@ -0,0 +1,52 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Comment'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment#getComment Comment}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSComment() + * @model + * @generated + */ +public interface VLSComment extends EObject +{ + /** + * Returns the value of the 'Comment' attribute. + * + *

+ * If the meaning of the 'Comment' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Comment' attribute. + * @see #setComment(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSComment_Comment() + * @model + * @generated + */ + String getComment(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment#getComment Comment}' attribute. + * + * + * @param value the new value of the 'Comment' attribute. + * @see #getComment() + * @generated + */ + void setComment(String value); + +} // VLSComment diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSConfirmations.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSConfirmations.java new file mode 100644 index 000000000..96ce4861e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSConfirmations.java @@ -0,0 +1,20 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Confirmations'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSConfirmations() + * @model + * @generated + */ +public interface VLSConfirmations extends EObject +{ +} // VLSConfirmations diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSConstant.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSConstant.java new file mode 100644 index 000000000..b252cced1 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSConstant.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Constant'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant#getName Name}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSConstant() + * @model + * @generated + */ +public interface VLSConstant extends VLSTerm +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSConstant_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + +} // VLSConstant diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDeclaration.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDeclaration.java new file mode 100644 index 000000000..4ff74235c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDeclaration.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Declaration'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration#getType Type}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSDeclaration() + * @model + * @generated + */ +public interface VLSDeclaration extends VLSTffTerm +{ + /** + * Returns the value of the 'Type' containment reference. + * + *

+ * If the meaning of the 'Type' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type' containment reference. + * @see #setType(VLSTypeDef) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSDeclaration_Type() + * @model containment="true" + * @generated + */ + VLSTypeDef getType(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration#getType Type}' containment reference. + * + * + * @param value the new value of the 'Type' containment reference. + * @see #getType() + * @generated + */ + void setType(VLSTypeDef value); + +} // VLSDeclaration diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDefinedTerm.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDefinedTerm.java new file mode 100644 index 000000000..4dc408e54 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDefinedTerm.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Defined Term'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm#getValue Value}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSDefinedTerm() + * @model + * @generated + */ +public interface VLSDefinedTerm extends VLSTerm +{ + /** + * Returns the value of the 'Value' attribute. + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSDefinedTerm_Value() + * @model + * @generated + */ + String getValue(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm#getValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(String value); + +} // VLSDefinedTerm diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDoubleQuote.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDoubleQuote.java new file mode 100644 index 000000000..e57028488 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSDoubleQuote.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Double Quote'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSDoubleQuote() + * @model + * @generated + */ +public interface VLSDoubleQuote extends VLSDefinedTerm +{ +} // VLSDoubleQuote diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSEquality.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSEquality.java new file mode 100644 index 000000000..db02f2c22 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSEquality.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Equality'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSEquality() + * @model + * @generated + */ +public interface VLSEquality extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSEquality_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSEquality_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSEquality diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSEquivalent.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSEquivalent.java new file mode 100644 index 000000000..25e6fbe1e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSEquivalent.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Equivalent'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSEquivalent() + * @model + * @generated + */ +public interface VLSEquivalent extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSEquivalent_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSEquivalent_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSEquivalent diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSExistentialQuantifier.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSExistentialQuantifier.java new file mode 100644 index 000000000..c70d312b5 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSExistentialQuantifier.java @@ -0,0 +1,69 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'VLS Existential Quantifier'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getVariables Variables}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getOperand Operand}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSExistentialQuantifier() + * @model + * @generated + */ +public interface VLSExistentialQuantifier extends VLSTerm +{ + /** + * Returns the value of the 'Variables' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm}. + * + *

+ * If the meaning of the 'Variables' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Variables' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSExistentialQuantifier_Variables() + * @model containment="true" + * @generated + */ + EList getVariables(); + + /** + * Returns the value of the 'Operand' containment reference. + * + *

+ * If the meaning of the 'Operand' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Operand' containment reference. + * @see #setOperand(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSExistentialQuantifier_Operand() + * @model containment="true" + * @generated + */ + VLSTerm getOperand(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getOperand Operand}' containment reference. + * + * + * @param value the new value of the 'Operand' containment reference. + * @see #getOperand() + * @generated + */ + void setOperand(VLSTerm value); + +} // VLSExistentialQuantifier diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFalse.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFalse.java new file mode 100644 index 000000000..33a5fba88 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFalse.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS False'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFalse() + * @model + * @generated + */ +public interface VLSFalse extends VLSTerm +{ +} // VLSFalse diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFiniteModel.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFiniteModel.java new file mode 100644 index 000000000..772a0871f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFiniteModel.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Finite Model'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFiniteModel() + * @model + * @generated + */ +public interface VLSFiniteModel extends VLSConfirmations +{ +} // VLSFiniteModel diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFofFormula.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFofFormula.java new file mode 100644 index 000000000..41479be99 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFofFormula.java @@ -0,0 +1,133 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Fof Formula'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofRole Fof Role}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofFormula Fof Formula}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getAnnotations Annotations}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFofFormula() + * @model + * @generated + */ +public interface VLSFofFormula extends EObject +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFofFormula_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Fof Role' attribute. + * + *

+ * If the meaning of the 'Fof Role' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Fof Role' attribute. + * @see #setFofRole(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFofFormula_FofRole() + * @model + * @generated + */ + String getFofRole(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofRole Fof Role}' attribute. + * + * + * @param value the new value of the 'Fof Role' attribute. + * @see #getFofRole() + * @generated + */ + void setFofRole(String value); + + /** + * Returns the value of the 'Fof Formula' containment reference. + * + *

+ * If the meaning of the 'Fof Formula' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Fof Formula' containment reference. + * @see #setFofFormula(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFofFormula_FofFormula() + * @model containment="true" + * @generated + */ + VLSTerm getFofFormula(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofFormula Fof Formula}' containment reference. + * + * + * @param value the new value of the 'Fof Formula' containment reference. + * @see #getFofFormula() + * @generated + */ + void setFofFormula(VLSTerm value); + + /** + * Returns the value of the 'Annotations' containment reference. + * + *

+ * If the meaning of the 'Annotations' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Annotations' containment reference. + * @see #setAnnotations(VLSAnnotation) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFofFormula_Annotations() + * @model containment="true" + * @generated + */ + VLSAnnotation getAnnotations(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getAnnotations Annotations}' containment reference. + * + * + * @param value the new value of the 'Annotations' containment reference. + * @see #getAnnotations() + * @generated + */ + void setAnnotations(VLSAnnotation value); + +} // VLSFofFormula diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFunction.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFunction.java new file mode 100644 index 000000000..e5bef1b53 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFunction.java @@ -0,0 +1,69 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'VLS Function'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getConstant Constant}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getTerms Terms}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFunction() + * @model + * @generated + */ +public interface VLSFunction extends VLSTerm +{ + /** + * Returns the value of the 'Constant' attribute. + * + *

+ * If the meaning of the 'Constant' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Constant' attribute. + * @see #setConstant(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFunction_Constant() + * @model + * @generated + */ + String getConstant(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getConstant Constant}' attribute. + * + * + * @param value the new value of the 'Constant' attribute. + * @see #getConstant() + * @generated + */ + void setConstant(String value); + + /** + * Returns the value of the 'Terms' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm}. + * + *

+ * If the meaning of the 'Terms' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Terms' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFunction_Terms() + * @model containment="true" + * @generated + */ + EList getTerms(); + +} // VLSFunction diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFunctionAsTerm.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFunctionAsTerm.java new file mode 100644 index 000000000..a3872bc64 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSFunctionAsTerm.java @@ -0,0 +1,69 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'VLS Function As Term'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getFunctor Functor}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getTerms Terms}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFunctionAsTerm() + * @model + * @generated + */ +public interface VLSFunctionAsTerm extends VLSTerm +{ + /** + * Returns the value of the 'Functor' attribute. + * + *

+ * If the meaning of the 'Functor' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Functor' attribute. + * @see #setFunctor(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFunctionAsTerm_Functor() + * @model + * @generated + */ + String getFunctor(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getFunctor Functor}' attribute. + * + * + * @param value the new value of the 'Functor' attribute. + * @see #getFunctor() + * @generated + */ + void setFunctor(String value); + + /** + * Returns the value of the 'Terms' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm}. + * + *

+ * If the meaning of the 'Terms' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Terms' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSFunctionAsTerm_Terms() + * @model containment="true" + * @generated + */ + EList getTerms(); + +} // VLSFunctionAsTerm diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSImplies.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSImplies.java new file mode 100644 index 000000000..860ab2428 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSImplies.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Implies'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSImplies() + * @model + * @generated + */ +public interface VLSImplies extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSImplies_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSImplies_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSImplies diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSInequality.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSInequality.java new file mode 100644 index 000000000..e739e4e0d --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSInequality.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Inequality'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSInequality() + * @model + * @generated + */ +public interface VLSInequality extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSInequality_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSInequality_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSInequality diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSInt.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSInt.java new file mode 100644 index 000000000..7639fe55e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSInt.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Int'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSInt() + * @model + * @generated + */ +public interface VLSInt extends VLSDefinedTerm +{ +} // VLSInt diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSLess.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSLess.java new file mode 100644 index 000000000..ae96339eb --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSLess.java @@ -0,0 +1,69 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'VLS Less'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getTerms Terms}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSLess() + * @model + * @generated + */ +public interface VLSLess extends VLSTerm +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSLess_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Terms' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm}. + * + *

+ * If the meaning of the 'Terms' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Terms' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSLess_Terms() + * @model containment="true" + * @generated + */ + EList getTerms(); + +} // VLSLess diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSNand.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSNand.java new file mode 100644 index 000000000..1b86f1bd0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSNand.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Nand'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSNand() + * @model + * @generated + */ +public interface VLSNand extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSNand_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSNand_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSNand diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSNor.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSNor.java new file mode 100644 index 000000000..d2f97d5c5 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSNor.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Nor'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSNor() + * @model + * @generated + */ +public interface VLSNor extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSNor_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSNor_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSNor diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSOr.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSOr.java new file mode 100644 index 000000000..6bb521d61 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSOr.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Or'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSOr() + * @model + * @generated + */ +public interface VLSOr extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSOr_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSOr_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSOr diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSOtherDeclaration.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSOtherDeclaration.java new file mode 100644 index 000000000..4e4e3d8bc --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSOtherDeclaration.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Other Declaration'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration#getName Name}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSOtherDeclaration() + * @model + * @generated + */ +public interface VLSOtherDeclaration extends VLSDeclaration +{ + /** + * Returns the value of the 'Name' containment reference. + * + *

+ * If the meaning of the 'Name' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' containment reference. + * @see #setName(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSOtherDeclaration_Name() + * @model containment="true" + * @generated + */ + VLSTerm getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration#getName Name}' containment reference. + * + * + * @param value the new value of the 'Name' containment reference. + * @see #getName() + * @generated + */ + void setName(VLSTerm value); + +} // VLSOtherDeclaration diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSRevImplies.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSRevImplies.java new file mode 100644 index 000000000..348acc5b6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSRevImplies.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Rev Implies'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSRevImplies() + * @model + * @generated + */ +public interface VLSRevImplies extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSRevImplies_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSRevImplies_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSRevImplies diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSSatisfiable.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSSatisfiable.java new file mode 100644 index 000000000..da645e630 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSSatisfiable.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Satisfiable'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSSatisfiable() + * @model + * @generated + */ +public interface VLSSatisfiable extends VLSConfirmations +{ +} // VLSSatisfiable diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTerm.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTerm.java new file mode 100644 index 000000000..83941c8b1 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTerm.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Term'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm#getComment Comment}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTerm() + * @model + * @generated + */ +public interface VLSTerm extends VLSTffTerm +{ + /** + * Returns the value of the 'Comment' attribute. + * + *

+ * If the meaning of the 'Comment' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Comment' attribute. + * @see #setComment(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTerm_Comment() + * @model + * @generated + */ + String getComment(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm#getComment Comment}' attribute. + * + * + * @param value the new value of the 'Comment' attribute. + * @see #getComment() + * @generated + */ + void setComment(String value); + +} // VLSTerm diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTffFormula.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTffFormula.java new file mode 100644 index 000000000..fa4741a04 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTffFormula.java @@ -0,0 +1,133 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Tff Formula'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getTffRole Tff Role}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getFofFormula Fof Formula}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getAnnotations Annotations}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTffFormula() + * @model + * @generated + */ +public interface VLSTffFormula extends EObject +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTffFormula_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the 'Tff Role' attribute. + * + *

+ * If the meaning of the 'Tff Role' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Tff Role' attribute. + * @see #setTffRole(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTffFormula_TffRole() + * @model + * @generated + */ + String getTffRole(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getTffRole Tff Role}' attribute. + * + * + * @param value the new value of the 'Tff Role' attribute. + * @see #getTffRole() + * @generated + */ + void setTffRole(String value); + + /** + * Returns the value of the 'Fof Formula' containment reference. + * + *

+ * If the meaning of the 'Fof Formula' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Fof Formula' containment reference. + * @see #setFofFormula(VLSTffTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTffFormula_FofFormula() + * @model containment="true" + * @generated + */ + VLSTffTerm getFofFormula(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getFofFormula Fof Formula}' containment reference. + * + * + * @param value the new value of the 'Fof Formula' containment reference. + * @see #getFofFormula() + * @generated + */ + void setFofFormula(VLSTffTerm value); + + /** + * Returns the value of the 'Annotations' containment reference. + * + *

+ * If the meaning of the 'Annotations' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Annotations' containment reference. + * @see #setAnnotations(VLSAnnotation) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTffFormula_Annotations() + * @model containment="true" + * @generated + */ + VLSAnnotation getAnnotations(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getAnnotations Annotations}' containment reference. + * + * + * @param value the new value of the 'Annotations' containment reference. + * @see #getAnnotations() + * @generated + */ + void setAnnotations(VLSAnnotation value); + +} // VLSTffFormula diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTffTerm.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTffTerm.java new file mode 100644 index 000000000..05de6deb6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTffTerm.java @@ -0,0 +1,20 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Tff Term'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTffTerm() + * @model + * @generated + */ +public interface VLSTffTerm extends EObject +{ +} // VLSTffTerm diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTrue.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTrue.java new file mode 100644 index 000000000..78aed8747 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTrue.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS True'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTrue() + * @model + * @generated + */ +public interface VLSTrue extends VLSTerm +{ +} // VLSTrue diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTrying.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTrying.java new file mode 100644 index 000000000..4b9cd4086 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTrying.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Trying'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying#getName Name}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTrying() + * @model + * @generated + */ +public interface VLSTrying extends VLSConfirmations +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTrying_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + +} // VLSTrying diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTypeDef.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTypeDef.java new file mode 100644 index 000000000..21cd9e0f6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSTypeDef.java @@ -0,0 +1,133 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'VLS Type Def'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getTypeSig Type Sig}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getMapsTo Maps To}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getInitType Init Type}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getNextType Next Type}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTypeDef() + * @model + * @generated + */ +public interface VLSTypeDef extends EObject +{ + /** + * Returns the value of the 'Type Sig' containment reference. + * + *

+ * If the meaning of the 'Type Sig' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type Sig' containment reference. + * @see #setTypeSig(VLSTypeDef) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTypeDef_TypeSig() + * @model containment="true" + * @generated + */ + VLSTypeDef getTypeSig(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getTypeSig Type Sig}' containment reference. + * + * + * @param value the new value of the 'Type Sig' containment reference. + * @see #getTypeSig() + * @generated + */ + void setTypeSig(VLSTypeDef value); + + /** + * Returns the value of the 'Maps To' containment reference. + * + *

+ * If the meaning of the 'Maps To' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Maps To' containment reference. + * @see #setMapsTo(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTypeDef_MapsTo() + * @model containment="true" + * @generated + */ + VLSTerm getMapsTo(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getMapsTo Maps To}' containment reference. + * + * + * @param value the new value of the 'Maps To' containment reference. + * @see #getMapsTo() + * @generated + */ + void setMapsTo(VLSTerm value); + + /** + * Returns the value of the 'Init Type' containment reference. + * + *

+ * If the meaning of the 'Init Type' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Init Type' containment reference. + * @see #setInitType(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTypeDef_InitType() + * @model containment="true" + * @generated + */ + VLSTerm getInitType(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getInitType Init Type}' containment reference. + * + * + * @param value the new value of the 'Init Type' containment reference. + * @see #getInitType() + * @generated + */ + void setInitType(VLSTerm value); + + /** + * Returns the value of the 'Next Type' containment reference. + * + *

+ * If the meaning of the 'Next Type' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Next Type' containment reference. + * @see #setNextType(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSTypeDef_NextType() + * @model containment="true" + * @generated + */ + VLSTerm getNextType(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getNextType Next Type}' containment reference. + * + * + * @param value the new value of the 'Next Type' containment reference. + * @see #getNextType() + * @generated + */ + void setNextType(VLSTerm value); + +} // VLSTypeDef diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSUnaryNegation.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSUnaryNegation.java new file mode 100644 index 000000000..cec6ca6dd --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSUnaryNegation.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Unary Negation'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation#getOperand Operand}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSUnaryNegation() + * @model + * @generated + */ +public interface VLSUnaryNegation extends VLSTerm +{ + /** + * Returns the value of the 'Operand' containment reference. + * + *

+ * If the meaning of the 'Operand' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Operand' containment reference. + * @see #setOperand(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSUnaryNegation_Operand() + * @model containment="true" + * @generated + */ + VLSTerm getOperand(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation#getOperand Operand}' containment reference. + * + * + * @param value the new value of the 'Operand' containment reference. + * @see #getOperand() + * @generated + */ + void setOperand(VLSTerm value); + +} // VLSUnaryNegation diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSUniversalQuantifier.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSUniversalQuantifier.java new file mode 100644 index 000000000..9e7da58a5 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSUniversalQuantifier.java @@ -0,0 +1,69 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'VLS Universal Quantifier'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getVariables Variables}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getOperand Operand}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSUniversalQuantifier() + * @model + * @generated + */ +public interface VLSUniversalQuantifier extends VLSTerm +{ + /** + * Returns the value of the 'Variables' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm}. + * + *

+ * If the meaning of the 'Variables' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Variables' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSUniversalQuantifier_Variables() + * @model containment="true" + * @generated + */ + EList getVariables(); + + /** + * Returns the value of the 'Operand' containment reference. + * + *

+ * If the meaning of the 'Operand' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Operand' containment reference. + * @see #setOperand(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSUniversalQuantifier_Operand() + * @model containment="true" + * @generated + */ + VLSTerm getOperand(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getOperand Operand}' containment reference. + * + * + * @param value the new value of the 'Operand' containment reference. + * @see #getOperand() + * @generated + */ + void setOperand(VLSTerm value); + +} // VLSUniversalQuantifier diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSVariable.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSVariable.java new file mode 100644 index 000000000..9750e4c58 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSVariable.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Variable'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable#getName Name}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSVariable() + * @model + * @generated + */ +public interface VLSVariable extends VLSTerm +{ + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSVariable_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + +} // VLSVariable diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSVariableDeclaration.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSVariableDeclaration.java new file mode 100644 index 000000000..a45aec5c2 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSVariableDeclaration.java @@ -0,0 +1,51 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Variable Declaration'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration#getName Name}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSVariableDeclaration() + * @model + * @generated + */ +public interface VLSVariableDeclaration extends VLSDeclaration +{ + /** + * Returns the value of the 'Name' containment reference. + * + *

+ * If the meaning of the 'Name' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' containment reference. + * @see #setName(VLSVariable) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSVariableDeclaration_Name() + * @model containment="true" + * @generated + */ + VLSVariable getName(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration#getName Name}' containment reference. + * + * + * @param value the new value of the 'Name' containment reference. + * @see #getName() + * @generated + */ + void setName(VLSVariable value); + +} // VLSVariableDeclaration diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSWarning.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSWarning.java new file mode 100644 index 000000000..7b2f85356 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSWarning.java @@ -0,0 +1,19 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Warning'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSWarning() + * @model + * @generated + */ +public interface VLSWarning extends VLSConfirmations +{ +} // VLSWarning diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSXnor.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSXnor.java new file mode 100644 index 000000000..64b1f584d --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VLSXnor.java @@ -0,0 +1,78 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + + +/** + * + * A representation of the model object 'VLS Xnor'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getRight Right}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSXnor() + * @model + * @generated + */ +public interface VLSXnor extends VLSTerm +{ + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSXnor_Left() + * @model containment="true" + * @generated + */ + VLSTerm getLeft(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(VLSTerm value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(VLSTerm) + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVLSXnor_Right() + * @model containment="true" + * @generated + */ + VLSTerm getRight(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(VLSTerm value); + +} // VLSXnor diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireLanguageFactory.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireLanguageFactory.java new file mode 100644 index 000000000..a137054e2 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireLanguageFactory.java @@ -0,0 +1,395 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage + * @generated + */ +public interface VampireLanguageFactory extends EFactory +{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + VampireLanguageFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl.init(); + + /** + * Returns a new object of class 'Vampire Model'. + * + * + * @return a new object of class 'Vampire Model'. + * @generated + */ + VampireModel createVampireModel(); + + /** + * Returns a new object of class 'VLS Comment'. + * + * + * @return a new object of class 'VLS Comment'. + * @generated + */ + VLSComment createVLSComment(); + + /** + * Returns a new object of class 'VLS Confirmations'. + * + * + * @return a new object of class 'VLS Confirmations'. + * @generated + */ + VLSConfirmations createVLSConfirmations(); + + /** + * Returns a new object of class 'VLS Fof Formula'. + * + * + * @return a new object of class 'VLS Fof Formula'. + * @generated + */ + VLSFofFormula createVLSFofFormula(); + + /** + * Returns a new object of class 'VLS Tff Formula'. + * + * + * @return a new object of class 'VLS Tff Formula'. + * @generated + */ + VLSTffFormula createVLSTffFormula(); + + /** + * Returns a new object of class 'VLS Annotation'. + * + * + * @return a new object of class 'VLS Annotation'. + * @generated + */ + VLSAnnotation createVLSAnnotation(); + + /** + * Returns a new object of class 'VLS Tff Term'. + * + * + * @return a new object of class 'VLS Tff Term'. + * @generated + */ + VLSTffTerm createVLSTffTerm(); + + /** + * Returns a new object of class 'VLS Term'. + * + * + * @return a new object of class 'VLS Term'. + * @generated + */ + VLSTerm createVLSTerm(); + + /** + * Returns a new object of class 'VLS Declaration'. + * + * + * @return a new object of class 'VLS Declaration'. + * @generated + */ + VLSDeclaration createVLSDeclaration(); + + /** + * Returns a new object of class 'VLS Other Declaration'. + * + * + * @return a new object of class 'VLS Other Declaration'. + * @generated + */ + VLSOtherDeclaration createVLSOtherDeclaration(); + + /** + * Returns a new object of class 'VLS Variable Declaration'. + * + * + * @return a new object of class 'VLS Variable Declaration'. + * @generated + */ + VLSVariableDeclaration createVLSVariableDeclaration(); + + /** + * Returns a new object of class 'VLS Type Def'. + * + * + * @return a new object of class 'VLS Type Def'. + * @generated + */ + VLSTypeDef createVLSTypeDef(); + + /** + * Returns a new object of class 'VLS Variable'. + * + * + * @return a new object of class 'VLS Variable'. + * @generated + */ + VLSVariable createVLSVariable(); + + /** + * Returns a new object of class 'VLS Function As Term'. + * + * + * @return a new object of class 'VLS Function As Term'. + * @generated + */ + VLSFunctionAsTerm createVLSFunctionAsTerm(); + + /** + * Returns a new object of class 'VLS Defined Term'. + * + * + * @return a new object of class 'VLS Defined Term'. + * @generated + */ + VLSDefinedTerm createVLSDefinedTerm(); + + /** + * Returns a new object of class 'VLS Satisfiable'. + * + * + * @return a new object of class 'VLS Satisfiable'. + * @generated + */ + VLSSatisfiable createVLSSatisfiable(); + + /** + * Returns a new object of class 'VLS Warning'. + * + * + * @return a new object of class 'VLS Warning'. + * @generated + */ + VLSWarning createVLSWarning(); + + /** + * Returns a new object of class 'VLS Trying'. + * + * + * @return a new object of class 'VLS Trying'. + * @generated + */ + VLSTrying createVLSTrying(); + + /** + * Returns a new object of class 'VLS Finite Model'. + * + * + * @return a new object of class 'VLS Finite Model'. + * @generated + */ + VLSFiniteModel createVLSFiniteModel(); + + /** + * Returns a new object of class 'VLS Equivalent'. + * + * + * @return a new object of class 'VLS Equivalent'. + * @generated + */ + VLSEquivalent createVLSEquivalent(); + + /** + * Returns a new object of class 'VLS Implies'. + * + * + * @return a new object of class 'VLS Implies'. + * @generated + */ + VLSImplies createVLSImplies(); + + /** + * Returns a new object of class 'VLS Rev Implies'. + * + * + * @return a new object of class 'VLS Rev Implies'. + * @generated + */ + VLSRevImplies createVLSRevImplies(); + + /** + * Returns a new object of class 'VLS Xnor'. + * + * + * @return a new object of class 'VLS Xnor'. + * @generated + */ + VLSXnor createVLSXnor(); + + /** + * Returns a new object of class 'VLS Nor'. + * + * + * @return a new object of class 'VLS Nor'. + * @generated + */ + VLSNor createVLSNor(); + + /** + * Returns a new object of class 'VLS Nand'. + * + * + * @return a new object of class 'VLS Nand'. + * @generated + */ + VLSNand createVLSNand(); + + /** + * Returns a new object of class 'VLS And'. + * + * + * @return a new object of class 'VLS And'. + * @generated + */ + VLSAnd createVLSAnd(); + + /** + * Returns a new object of class 'VLS Or'. + * + * + * @return a new object of class 'VLS Or'. + * @generated + */ + VLSOr createVLSOr(); + + /** + * Returns a new object of class 'VLS Universal Quantifier'. + * + * + * @return a new object of class 'VLS Universal Quantifier'. + * @generated + */ + VLSUniversalQuantifier createVLSUniversalQuantifier(); + + /** + * Returns a new object of class 'VLS Existential Quantifier'. + * + * + * @return a new object of class 'VLS Existential Quantifier'. + * @generated + */ + VLSExistentialQuantifier createVLSExistentialQuantifier(); + + /** + * Returns a new object of class 'VLS Unary Negation'. + * + * + * @return a new object of class 'VLS Unary Negation'. + * @generated + */ + VLSUnaryNegation createVLSUnaryNegation(); + + /** + * Returns a new object of class 'VLS Inequality'. + * + * + * @return a new object of class 'VLS Inequality'. + * @generated + */ + VLSInequality createVLSInequality(); + + /** + * Returns a new object of class 'VLS Equality'. + * + * + * @return a new object of class 'VLS Equality'. + * @generated + */ + VLSEquality createVLSEquality(); + + /** + * Returns a new object of class 'VLS Assignment'. + * + * + * @return a new object of class 'VLS Assignment'. + * @generated + */ + VLSAssignment createVLSAssignment(); + + /** + * Returns a new object of class 'VLS Constant'. + * + * + * @return a new object of class 'VLS Constant'. + * @generated + */ + VLSConstant createVLSConstant(); + + /** + * Returns a new object of class 'VLS True'. + * + * + * @return a new object of class 'VLS True'. + * @generated + */ + VLSTrue createVLSTrue(); + + /** + * Returns a new object of class 'VLS False'. + * + * + * @return a new object of class 'VLS False'. + * @generated + */ + VLSFalse createVLSFalse(); + + /** + * Returns a new object of class 'VLS Function'. + * + * + * @return a new object of class 'VLS Function'. + * @generated + */ + VLSFunction createVLSFunction(); + + /** + * Returns a new object of class 'VLS Less'. + * + * + * @return a new object of class 'VLS Less'. + * @generated + */ + VLSLess createVLSLess(); + + /** + * Returns a new object of class 'VLS Int'. + * + * + * @return a new object of class 'VLS Int'. + * @generated + */ + VLSInt createVLSInt(); + + /** + * Returns a new object of class 'VLS Double Quote'. + * + * + * @return a new object of class 'VLS Double Quote'. + * @generated + */ + VLSDoubleQuote createVLSDoubleQuote(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + VampireLanguagePackage getVampireLanguagePackage(); + +} //VampireLanguageFactory diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireLanguagePackage.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireLanguagePackage.java new file mode 100644 index 000000000..43327c646 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireLanguagePackage.java @@ -0,0 +1,3606 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory + * @model kind="package" + * @generated + */ +public interface VampireLanguagePackage extends EPackage +{ + /** + * The package name. + * + * + * @generated + */ + String eNAME = "vampireLanguage"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "vampireLanguage"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + VampireLanguagePackage eINSTANCE = ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl Vampire Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVampireModel() + * @generated + */ + int VAMPIRE_MODEL = 0; + + /** + * The feature id for the 'Comments' containment reference list. + * + * + * @generated + * @ordered + */ + int VAMPIRE_MODEL__COMMENTS = 0; + + /** + * The feature id for the 'Confirmations' containment reference list. + * + * + * @generated + * @ordered + */ + int VAMPIRE_MODEL__CONFIRMATIONS = 1; + + /** + * The feature id for the 'Formulas' containment reference list. + * + * + * @generated + * @ordered + */ + int VAMPIRE_MODEL__FORMULAS = 2; + + /** + * The feature id for the 'Tfformulas' containment reference list. + * + * + * @generated + * @ordered + */ + int VAMPIRE_MODEL__TFFORMULAS = 3; + + /** + * The number of structural features of the 'Vampire Model' class. + * + * + * @generated + * @ordered + */ + int VAMPIRE_MODEL_FEATURE_COUNT = 4; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSCommentImpl VLS Comment}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSCommentImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSComment() + * @generated + */ + int VLS_COMMENT = 1; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_COMMENT__COMMENT = 0; + + /** + * The number of structural features of the 'VLS Comment' class. + * + * + * @generated + * @ordered + */ + int VLS_COMMENT_FEATURE_COUNT = 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConfirmationsImpl VLS Confirmations}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConfirmationsImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSConfirmations() + * @generated + */ + int VLS_CONFIRMATIONS = 2; + + /** + * The number of structural features of the 'VLS Confirmations' class. + * + * + * @generated + * @ordered + */ + int VLS_CONFIRMATIONS_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl VLS Fof Formula}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFofFormula() + * @generated + */ + int VLS_FOF_FORMULA = 3; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FOF_FORMULA__NAME = 0; + + /** + * The feature id for the 'Fof Role' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FOF_FORMULA__FOF_ROLE = 1; + + /** + * The feature id for the 'Fof Formula' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_FOF_FORMULA__FOF_FORMULA = 2; + + /** + * The feature id for the 'Annotations' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_FOF_FORMULA__ANNOTATIONS = 3; + + /** + * The number of structural features of the 'VLS Fof Formula' class. + * + * + * @generated + * @ordered + */ + int VLS_FOF_FORMULA_FEATURE_COUNT = 4; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl VLS Tff Formula}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTffFormula() + * @generated + */ + int VLS_TFF_FORMULA = 4; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_TFF_FORMULA__NAME = 0; + + /** + * The feature id for the 'Tff Role' attribute. + * + * + * @generated + * @ordered + */ + int VLS_TFF_FORMULA__TFF_ROLE = 1; + + /** + * The feature id for the 'Fof Formula' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_TFF_FORMULA__FOF_FORMULA = 2; + + /** + * The feature id for the 'Annotations' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_TFF_FORMULA__ANNOTATIONS = 3; + + /** + * The number of structural features of the 'VLS Tff Formula' class. + * + * + * @generated + * @ordered + */ + int VLS_TFF_FORMULA_FEATURE_COUNT = 4; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl VLS Annotation}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSAnnotation() + * @generated + */ + int VLS_ANNOTATION = 5; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_ANNOTATION__NAME = 0; + + /** + * The feature id for the 'Followup' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_ANNOTATION__FOLLOWUP = 1; + + /** + * The feature id for the 'Terms' containment reference list. + * + * + * @generated + * @ordered + */ + int VLS_ANNOTATION__TERMS = 2; + + /** + * The number of structural features of the 'VLS Annotation' class. + * + * + * @generated + * @ordered + */ + int VLS_ANNOTATION_FEATURE_COUNT = 3; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffTermImpl VLS Tff Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTffTerm() + * @generated + */ + int VLS_TFF_TERM = 6; + + /** + * The number of structural features of the 'VLS Tff Term' class. + * + * + * @generated + * @ordered + */ + int VLS_TFF_TERM_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTermImpl VLS Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTerm() + * @generated + */ + int VLS_TERM = 7; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_TERM__COMMENT = VLS_TFF_TERM_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Term' class. + * + * + * @generated + * @ordered + */ + int VLS_TERM_FEATURE_COUNT = VLS_TFF_TERM_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDeclarationImpl VLS Declaration}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDeclarationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSDeclaration() + * @generated + */ + int VLS_DECLARATION = 8; + + /** + * The feature id for the 'Type' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_DECLARATION__TYPE = VLS_TFF_TERM_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Declaration' class. + * + * + * @generated + * @ordered + */ + int VLS_DECLARATION_FEATURE_COUNT = VLS_TFF_TERM_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOtherDeclarationImpl VLS Other Declaration}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOtherDeclarationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSOtherDeclaration() + * @generated + */ + int VLS_OTHER_DECLARATION = 9; + + /** + * The feature id for the 'Type' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_OTHER_DECLARATION__TYPE = VLS_DECLARATION__TYPE; + + /** + * The feature id for the 'Name' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_OTHER_DECLARATION__NAME = VLS_DECLARATION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Other Declaration' class. + * + * + * @generated + * @ordered + */ + int VLS_OTHER_DECLARATION_FEATURE_COUNT = VLS_DECLARATION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableDeclarationImpl VLS Variable Declaration}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableDeclarationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSVariableDeclaration() + * @generated + */ + int VLS_VARIABLE_DECLARATION = 10; + + /** + * The feature id for the 'Type' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_VARIABLE_DECLARATION__TYPE = VLS_DECLARATION__TYPE; + + /** + * The feature id for the 'Name' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_VARIABLE_DECLARATION__NAME = VLS_DECLARATION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Variable Declaration' class. + * + * + * @generated + * @ordered + */ + int VLS_VARIABLE_DECLARATION_FEATURE_COUNT = VLS_DECLARATION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl VLS Type Def}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTypeDef() + * @generated + */ + int VLS_TYPE_DEF = 11; + + /** + * The feature id for the 'Type Sig' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_TYPE_DEF__TYPE_SIG = 0; + + /** + * The feature id for the 'Maps To' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_TYPE_DEF__MAPS_TO = 1; + + /** + * The feature id for the 'Init Type' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_TYPE_DEF__INIT_TYPE = 2; + + /** + * The feature id for the 'Next Type' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_TYPE_DEF__NEXT_TYPE = 3; + + /** + * The number of structural features of the 'VLS Type Def' class. + * + * + * @generated + * @ordered + */ + int VLS_TYPE_DEF_FEATURE_COUNT = 4; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableImpl VLS Variable}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSVariable() + * @generated + */ + int VLS_VARIABLE = 12; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_VARIABLE__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_VARIABLE__NAME = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Variable' class. + * + * + * @generated + * @ordered + */ + int VLS_VARIABLE_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionAsTermImpl VLS Function As Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionAsTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFunctionAsTerm() + * @generated + */ + int VLS_FUNCTION_AS_TERM = 13; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION_AS_TERM__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Functor' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION_AS_TERM__FUNCTOR = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Terms' containment reference list. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION_AS_TERM__TERMS = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Function As Term' class. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION_AS_TERM_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDefinedTermImpl VLS Defined Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDefinedTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSDefinedTerm() + * @generated + */ + int VLS_DEFINED_TERM = 14; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_DEFINED_TERM__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int VLS_DEFINED_TERM__VALUE = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Defined Term' class. + * + * + * @generated + * @ordered + */ + int VLS_DEFINED_TERM_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSSatisfiableImpl VLS Satisfiable}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSSatisfiableImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSSatisfiable() + * @generated + */ + int VLS_SATISFIABLE = 15; + + /** + * The number of structural features of the 'VLS Satisfiable' class. + * + * + * @generated + * @ordered + */ + int VLS_SATISFIABLE_FEATURE_COUNT = VLS_CONFIRMATIONS_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSWarningImpl VLS Warning}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSWarningImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSWarning() + * @generated + */ + int VLS_WARNING = 16; + + /** + * The number of structural features of the 'VLS Warning' class. + * + * + * @generated + * @ordered + */ + int VLS_WARNING_FEATURE_COUNT = VLS_CONFIRMATIONS_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTryingImpl VLS Trying}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTryingImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTrying() + * @generated + */ + int VLS_TRYING = 17; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_TRYING__NAME = VLS_CONFIRMATIONS_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Trying' class. + * + * + * @generated + * @ordered + */ + int VLS_TRYING_FEATURE_COUNT = VLS_CONFIRMATIONS_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFiniteModelImpl VLS Finite Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFiniteModelImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFiniteModel() + * @generated + */ + int VLS_FINITE_MODEL = 18; + + /** + * The number of structural features of the 'VLS Finite Model' class. + * + * + * @generated + * @ordered + */ + int VLS_FINITE_MODEL_FEATURE_COUNT = VLS_CONFIRMATIONS_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEquivalentImpl VLS Equivalent}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEquivalentImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSEquivalent() + * @generated + */ + int VLS_EQUIVALENT = 19; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_EQUIVALENT__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_EQUIVALENT__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_EQUIVALENT__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Equivalent' class. + * + * + * @generated + * @ordered + */ + int VLS_EQUIVALENT_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSImpliesImpl VLS Implies}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSImpliesImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSImplies() + * @generated + */ + int VLS_IMPLIES = 20; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_IMPLIES__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_IMPLIES__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_IMPLIES__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Implies' class. + * + * + * @generated + * @ordered + */ + int VLS_IMPLIES_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSRevImpliesImpl VLS Rev Implies}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSRevImpliesImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSRevImplies() + * @generated + */ + int VLS_REV_IMPLIES = 21; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_REV_IMPLIES__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_REV_IMPLIES__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_REV_IMPLIES__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Rev Implies' class. + * + * + * @generated + * @ordered + */ + int VLS_REV_IMPLIES_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSXnorImpl VLS Xnor}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSXnorImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSXnor() + * @generated + */ + int VLS_XNOR = 22; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_XNOR__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_XNOR__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_XNOR__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Xnor' class. + * + * + * @generated + * @ordered + */ + int VLS_XNOR_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNorImpl VLS Nor}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNorImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSNor() + * @generated + */ + int VLS_NOR = 23; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_NOR__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_NOR__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_NOR__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Nor' class. + * + * + * @generated + * @ordered + */ + int VLS_NOR_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNandImpl VLS Nand}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNandImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSNand() + * @generated + */ + int VLS_NAND = 24; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_NAND__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_NAND__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_NAND__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Nand' class. + * + * + * @generated + * @ordered + */ + int VLS_NAND_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl VLS And}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSAnd() + * @generated + */ + int VLS_AND = 25; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_AND__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_AND__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_AND__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS And' class. + * + * + * @generated + * @ordered + */ + int VLS_AND_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl VLS Or}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSOr() + * @generated + */ + int VLS_OR = 26; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_OR__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_OR__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_OR__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Or' class. + * + * + * @generated + * @ordered + */ + int VLS_OR_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUniversalQuantifierImpl VLS Universal Quantifier}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUniversalQuantifierImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSUniversalQuantifier() + * @generated + */ + int VLS_UNIVERSAL_QUANTIFIER = 27; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_UNIVERSAL_QUANTIFIER__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Variables' containment reference list. + * + * + * @generated + * @ordered + */ + int VLS_UNIVERSAL_QUANTIFIER__VARIABLES = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_UNIVERSAL_QUANTIFIER__OPERAND = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Universal Quantifier' class. + * + * + * @generated + * @ordered + */ + int VLS_UNIVERSAL_QUANTIFIER_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSExistentialQuantifierImpl VLS Existential Quantifier}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSExistentialQuantifierImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSExistentialQuantifier() + * @generated + */ + int VLS_EXISTENTIAL_QUANTIFIER = 28; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_EXISTENTIAL_QUANTIFIER__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Variables' containment reference list. + * + * + * @generated + * @ordered + */ + int VLS_EXISTENTIAL_QUANTIFIER__VARIABLES = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_EXISTENTIAL_QUANTIFIER__OPERAND = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Existential Quantifier' class. + * + * + * @generated + * @ordered + */ + int VLS_EXISTENTIAL_QUANTIFIER_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUnaryNegationImpl VLS Unary Negation}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUnaryNegationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSUnaryNegation() + * @generated + */ + int VLS_UNARY_NEGATION = 29; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_UNARY_NEGATION__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_UNARY_NEGATION__OPERAND = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Unary Negation' class. + * + * + * @generated + * @ordered + */ + int VLS_UNARY_NEGATION_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSInequalityImpl VLS Inequality}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSInequalityImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSInequality() + * @generated + */ + int VLS_INEQUALITY = 30; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_INEQUALITY__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_INEQUALITY__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_INEQUALITY__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Inequality' class. + * + * + * @generated + * @ordered + */ + int VLS_INEQUALITY_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEqualityImpl VLS Equality}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEqualityImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSEquality() + * @generated + */ + int VLS_EQUALITY = 31; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_EQUALITY__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_EQUALITY__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_EQUALITY__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Equality' class. + * + * + * @generated + * @ordered + */ + int VLS_EQUALITY_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAssignmentImpl VLS Assignment}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAssignmentImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSAssignment() + * @generated + */ + int VLS_ASSIGNMENT = 32; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_ASSIGNMENT__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_ASSIGNMENT__LEFT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int VLS_ASSIGNMENT__RIGHT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Assignment' class. + * + * + * @generated + * @ordered + */ + int VLS_ASSIGNMENT_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConstantImpl VLS Constant}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConstantImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSConstant() + * @generated + */ + int VLS_CONSTANT = 33; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_CONSTANT__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_CONSTANT__NAME = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'VLS Constant' class. + * + * + * @generated + * @ordered + */ + int VLS_CONSTANT_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTrueImpl VLS True}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTrueImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTrue() + * @generated + */ + int VLS_TRUE = 34; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_TRUE__COMMENT = VLS_TERM__COMMENT; + + /** + * The number of structural features of the 'VLS True' class. + * + * + * @generated + * @ordered + */ + int VLS_TRUE_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFalseImpl VLS False}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFalseImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFalse() + * @generated + */ + int VLS_FALSE = 35; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FALSE__COMMENT = VLS_TERM__COMMENT; + + /** + * The number of structural features of the 'VLS False' class. + * + * + * @generated + * @ordered + */ + int VLS_FALSE_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionImpl VLS Function}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFunction() + * @generated + */ + int VLS_FUNCTION = 36; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Constant' attribute. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION__CONSTANT = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Terms' containment reference list. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION__TERMS = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Function' class. + * + * + * @generated + * @ordered + */ + int VLS_FUNCTION_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSLessImpl VLS Less}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSLessImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSLess() + * @generated + */ + int VLS_LESS = 37; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_LESS__COMMENT = VLS_TERM__COMMENT; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VLS_LESS__NAME = VLS_TERM_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Terms' containment reference list. + * + * + * @generated + * @ordered + */ + int VLS_LESS__TERMS = VLS_TERM_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'VLS Less' class. + * + * + * @generated + * @ordered + */ + int VLS_LESS_FEATURE_COUNT = VLS_TERM_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSIntImpl VLS Int}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSIntImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSInt() + * @generated + */ + int VLS_INT = 38; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_INT__COMMENT = VLS_DEFINED_TERM__COMMENT; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int VLS_INT__VALUE = VLS_DEFINED_TERM__VALUE; + + /** + * The number of structural features of the 'VLS Int' class. + * + * + * @generated + * @ordered + */ + int VLS_INT_FEATURE_COUNT = VLS_DEFINED_TERM_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDoubleQuoteImpl VLS Double Quote}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDoubleQuoteImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSDoubleQuote() + * @generated + */ + int VLS_DOUBLE_QUOTE = 39; + + /** + * The feature id for the 'Comment' attribute. + * + * + * @generated + * @ordered + */ + int VLS_DOUBLE_QUOTE__COMMENT = VLS_DEFINED_TERM__COMMENT; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int VLS_DOUBLE_QUOTE__VALUE = VLS_DEFINED_TERM__VALUE; + + /** + * The number of structural features of the 'VLS Double Quote' class. + * + * + * @generated + * @ordered + */ + int VLS_DOUBLE_QUOTE_FEATURE_COUNT = VLS_DEFINED_TERM_FEATURE_COUNT + 0; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel Vampire Model}'. + * + * + * @return the meta object for class 'Vampire Model'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel + * @generated + */ + EClass getVampireModel(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getComments Comments}'. + * + * + * @return the meta object for the containment reference list 'Comments'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getComments() + * @see #getVampireModel() + * @generated + */ + EReference getVampireModel_Comments(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getConfirmations Confirmations}'. + * + * + * @return the meta object for the containment reference list 'Confirmations'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getConfirmations() + * @see #getVampireModel() + * @generated + */ + EReference getVampireModel_Confirmations(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getFormulas Formulas}'. + * + * + * @return the meta object for the containment reference list 'Formulas'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getFormulas() + * @see #getVampireModel() + * @generated + */ + EReference getVampireModel_Formulas(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getTfformulas Tfformulas}'. + * + * + * @return the meta object for the containment reference list 'Tfformulas'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getTfformulas() + * @see #getVampireModel() + * @generated + */ + EReference getVampireModel_Tfformulas(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment VLS Comment}'. + * + * + * @return the meta object for class 'VLS Comment'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment + * @generated + */ + EClass getVLSComment(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment#getComment Comment}'. + * + * + * @return the meta object for the attribute 'Comment'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment#getComment() + * @see #getVLSComment() + * @generated + */ + EAttribute getVLSComment_Comment(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations VLS Confirmations}'. + * + * + * @return the meta object for class 'VLS Confirmations'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations + * @generated + */ + EClass getVLSConfirmations(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula VLS Fof Formula}'. + * + * + * @return the meta object for class 'VLS Fof Formula'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula + * @generated + */ + EClass getVLSFofFormula(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getName() + * @see #getVLSFofFormula() + * @generated + */ + EAttribute getVLSFofFormula_Name(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofRole Fof Role}'. + * + * + * @return the meta object for the attribute 'Fof Role'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofRole() + * @see #getVLSFofFormula() + * @generated + */ + EAttribute getVLSFofFormula_FofRole(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofFormula Fof Formula}'. + * + * + * @return the meta object for the containment reference 'Fof Formula'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getFofFormula() + * @see #getVLSFofFormula() + * @generated + */ + EReference getVLSFofFormula_FofFormula(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getAnnotations Annotations}'. + * + * + * @return the meta object for the containment reference 'Annotations'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula#getAnnotations() + * @see #getVLSFofFormula() + * @generated + */ + EReference getVLSFofFormula_Annotations(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula VLS Tff Formula}'. + * + * + * @return the meta object for class 'VLS Tff Formula'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula + * @generated + */ + EClass getVLSTffFormula(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getName() + * @see #getVLSTffFormula() + * @generated + */ + EAttribute getVLSTffFormula_Name(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getTffRole Tff Role}'. + * + * + * @return the meta object for the attribute 'Tff Role'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getTffRole() + * @see #getVLSTffFormula() + * @generated + */ + EAttribute getVLSTffFormula_TffRole(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getFofFormula Fof Formula}'. + * + * + * @return the meta object for the containment reference 'Fof Formula'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getFofFormula() + * @see #getVLSTffFormula() + * @generated + */ + EReference getVLSTffFormula_FofFormula(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getAnnotations Annotations}'. + * + * + * @return the meta object for the containment reference 'Annotations'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula#getAnnotations() + * @see #getVLSTffFormula() + * @generated + */ + EReference getVLSTffFormula_Annotations(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation VLS Annotation}'. + * + * + * @return the meta object for class 'VLS Annotation'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation + * @generated + */ + EClass getVLSAnnotation(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getName() + * @see #getVLSAnnotation() + * @generated + */ + EAttribute getVLSAnnotation_Name(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getFollowup Followup}'. + * + * + * @return the meta object for the containment reference 'Followup'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getFollowup() + * @see #getVLSAnnotation() + * @generated + */ + EReference getVLSAnnotation_Followup(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getTerms Terms}'. + * + * + * @return the meta object for the containment reference list 'Terms'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation#getTerms() + * @see #getVLSAnnotation() + * @generated + */ + EReference getVLSAnnotation_Terms(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm VLS Tff Term}'. + * + * + * @return the meta object for class 'VLS Tff Term'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm + * @generated + */ + EClass getVLSTffTerm(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm VLS Term}'. + * + * + * @return the meta object for class 'VLS Term'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm + * @generated + */ + EClass getVLSTerm(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm#getComment Comment}'. + * + * + * @return the meta object for the attribute 'Comment'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm#getComment() + * @see #getVLSTerm() + * @generated + */ + EAttribute getVLSTerm_Comment(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration VLS Declaration}'. + * + * + * @return the meta object for class 'VLS Declaration'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration + * @generated + */ + EClass getVLSDeclaration(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration#getType Type}'. + * + * + * @return the meta object for the containment reference 'Type'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration#getType() + * @see #getVLSDeclaration() + * @generated + */ + EReference getVLSDeclaration_Type(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration VLS Other Declaration}'. + * + * + * @return the meta object for class 'VLS Other Declaration'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration + * @generated + */ + EClass getVLSOtherDeclaration(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration#getName Name}'. + * + * + * @return the meta object for the containment reference 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration#getName() + * @see #getVLSOtherDeclaration() + * @generated + */ + EReference getVLSOtherDeclaration_Name(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration VLS Variable Declaration}'. + * + * + * @return the meta object for class 'VLS Variable Declaration'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration + * @generated + */ + EClass getVLSVariableDeclaration(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration#getName Name}'. + * + * + * @return the meta object for the containment reference 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration#getName() + * @see #getVLSVariableDeclaration() + * @generated + */ + EReference getVLSVariableDeclaration_Name(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef VLS Type Def}'. + * + * + * @return the meta object for class 'VLS Type Def'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef + * @generated + */ + EClass getVLSTypeDef(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getTypeSig Type Sig}'. + * + * + * @return the meta object for the containment reference 'Type Sig'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getTypeSig() + * @see #getVLSTypeDef() + * @generated + */ + EReference getVLSTypeDef_TypeSig(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getMapsTo Maps To}'. + * + * + * @return the meta object for the containment reference 'Maps To'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getMapsTo() + * @see #getVLSTypeDef() + * @generated + */ + EReference getVLSTypeDef_MapsTo(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getInitType Init Type}'. + * + * + * @return the meta object for the containment reference 'Init Type'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getInitType() + * @see #getVLSTypeDef() + * @generated + */ + EReference getVLSTypeDef_InitType(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getNextType Next Type}'. + * + * + * @return the meta object for the containment reference 'Next Type'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef#getNextType() + * @see #getVLSTypeDef() + * @generated + */ + EReference getVLSTypeDef_NextType(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable VLS Variable}'. + * + * + * @return the meta object for class 'VLS Variable'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable + * @generated + */ + EClass getVLSVariable(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable#getName() + * @see #getVLSVariable() + * @generated + */ + EAttribute getVLSVariable_Name(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm VLS Function As Term}'. + * + * + * @return the meta object for class 'VLS Function As Term'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm + * @generated + */ + EClass getVLSFunctionAsTerm(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getFunctor Functor}'. + * + * + * @return the meta object for the attribute 'Functor'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getFunctor() + * @see #getVLSFunctionAsTerm() + * @generated + */ + EAttribute getVLSFunctionAsTerm_Functor(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getTerms Terms}'. + * + * + * @return the meta object for the containment reference list 'Terms'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm#getTerms() + * @see #getVLSFunctionAsTerm() + * @generated + */ + EReference getVLSFunctionAsTerm_Terms(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm VLS Defined Term}'. + * + * + * @return the meta object for class 'VLS Defined Term'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm + * @generated + */ + EClass getVLSDefinedTerm(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm#getValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm#getValue() + * @see #getVLSDefinedTerm() + * @generated + */ + EAttribute getVLSDefinedTerm_Value(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable VLS Satisfiable}'. + * + * + * @return the meta object for class 'VLS Satisfiable'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable + * @generated + */ + EClass getVLSSatisfiable(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning VLS Warning}'. + * + * + * @return the meta object for class 'VLS Warning'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning + * @generated + */ + EClass getVLSWarning(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying VLS Trying}'. + * + * + * @return the meta object for class 'VLS Trying'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying + * @generated + */ + EClass getVLSTrying(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying#getName() + * @see #getVLSTrying() + * @generated + */ + EAttribute getVLSTrying_Name(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel VLS Finite Model}'. + * + * + * @return the meta object for class 'VLS Finite Model'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel + * @generated + */ + EClass getVLSFiniteModel(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent VLS Equivalent}'. + * + * + * @return the meta object for class 'VLS Equivalent'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent + * @generated + */ + EClass getVLSEquivalent(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getLeft() + * @see #getVLSEquivalent() + * @generated + */ + EReference getVLSEquivalent_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent#getRight() + * @see #getVLSEquivalent() + * @generated + */ + EReference getVLSEquivalent_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies VLS Implies}'. + * + * + * @return the meta object for class 'VLS Implies'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies + * @generated + */ + EClass getVLSImplies(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getLeft() + * @see #getVLSImplies() + * @generated + */ + EReference getVLSImplies_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies#getRight() + * @see #getVLSImplies() + * @generated + */ + EReference getVLSImplies_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies VLS Rev Implies}'. + * + * + * @return the meta object for class 'VLS Rev Implies'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies + * @generated + */ + EClass getVLSRevImplies(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getLeft() + * @see #getVLSRevImplies() + * @generated + */ + EReference getVLSRevImplies_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies#getRight() + * @see #getVLSRevImplies() + * @generated + */ + EReference getVLSRevImplies_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor VLS Xnor}'. + * + * + * @return the meta object for class 'VLS Xnor'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor + * @generated + */ + EClass getVLSXnor(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getLeft() + * @see #getVLSXnor() + * @generated + */ + EReference getVLSXnor_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor#getRight() + * @see #getVLSXnor() + * @generated + */ + EReference getVLSXnor_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor VLS Nor}'. + * + * + * @return the meta object for class 'VLS Nor'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor + * @generated + */ + EClass getVLSNor(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getLeft() + * @see #getVLSNor() + * @generated + */ + EReference getVLSNor_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor#getRight() + * @see #getVLSNor() + * @generated + */ + EReference getVLSNor_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand VLS Nand}'. + * + * + * @return the meta object for class 'VLS Nand'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand + * @generated + */ + EClass getVLSNand(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getLeft() + * @see #getVLSNand() + * @generated + */ + EReference getVLSNand_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand#getRight() + * @see #getVLSNand() + * @generated + */ + EReference getVLSNand_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd VLS And}'. + * + * + * @return the meta object for class 'VLS And'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd + * @generated + */ + EClass getVLSAnd(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getLeft() + * @see #getVLSAnd() + * @generated + */ + EReference getVLSAnd_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd#getRight() + * @see #getVLSAnd() + * @generated + */ + EReference getVLSAnd_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr VLS Or}'. + * + * + * @return the meta object for class 'VLS Or'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr + * @generated + */ + EClass getVLSOr(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getLeft() + * @see #getVLSOr() + * @generated + */ + EReference getVLSOr_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr#getRight() + * @see #getVLSOr() + * @generated + */ + EReference getVLSOr_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier VLS Universal Quantifier}'. + * + * + * @return the meta object for class 'VLS Universal Quantifier'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier + * @generated + */ + EClass getVLSUniversalQuantifier(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getVariables Variables}'. + * + * + * @return the meta object for the containment reference list 'Variables'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getVariables() + * @see #getVLSUniversalQuantifier() + * @generated + */ + EReference getVLSUniversalQuantifier_Variables(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getOperand Operand}'. + * + * + * @return the meta object for the containment reference 'Operand'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier#getOperand() + * @see #getVLSUniversalQuantifier() + * @generated + */ + EReference getVLSUniversalQuantifier_Operand(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier VLS Existential Quantifier}'. + * + * + * @return the meta object for class 'VLS Existential Quantifier'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier + * @generated + */ + EClass getVLSExistentialQuantifier(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getVariables Variables}'. + * + * + * @return the meta object for the containment reference list 'Variables'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getVariables() + * @see #getVLSExistentialQuantifier() + * @generated + */ + EReference getVLSExistentialQuantifier_Variables(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getOperand Operand}'. + * + * + * @return the meta object for the containment reference 'Operand'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier#getOperand() + * @see #getVLSExistentialQuantifier() + * @generated + */ + EReference getVLSExistentialQuantifier_Operand(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation VLS Unary Negation}'. + * + * + * @return the meta object for class 'VLS Unary Negation'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation + * @generated + */ + EClass getVLSUnaryNegation(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation#getOperand Operand}'. + * + * + * @return the meta object for the containment reference 'Operand'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation#getOperand() + * @see #getVLSUnaryNegation() + * @generated + */ + EReference getVLSUnaryNegation_Operand(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality VLS Inequality}'. + * + * + * @return the meta object for class 'VLS Inequality'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality + * @generated + */ + EClass getVLSInequality(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getLeft() + * @see #getVLSInequality() + * @generated + */ + EReference getVLSInequality_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality#getRight() + * @see #getVLSInequality() + * @generated + */ + EReference getVLSInequality_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality VLS Equality}'. + * + * + * @return the meta object for class 'VLS Equality'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality + * @generated + */ + EClass getVLSEquality(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getLeft() + * @see #getVLSEquality() + * @generated + */ + EReference getVLSEquality_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality#getRight() + * @see #getVLSEquality() + * @generated + */ + EReference getVLSEquality_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment VLS Assignment}'. + * + * + * @return the meta object for class 'VLS Assignment'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment + * @generated + */ + EClass getVLSAssignment(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getLeft() + * @see #getVLSAssignment() + * @generated + */ + EReference getVLSAssignment_Left(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment#getRight() + * @see #getVLSAssignment() + * @generated + */ + EReference getVLSAssignment_Right(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant VLS Constant}'. + * + * + * @return the meta object for class 'VLS Constant'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant + * @generated + */ + EClass getVLSConstant(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant#getName() + * @see #getVLSConstant() + * @generated + */ + EAttribute getVLSConstant_Name(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue VLS True}'. + * + * + * @return the meta object for class 'VLS True'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue + * @generated + */ + EClass getVLSTrue(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse VLS False}'. + * + * + * @return the meta object for class 'VLS False'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse + * @generated + */ + EClass getVLSFalse(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction VLS Function}'. + * + * + * @return the meta object for class 'VLS Function'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction + * @generated + */ + EClass getVLSFunction(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getConstant Constant}'. + * + * + * @return the meta object for the attribute 'Constant'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getConstant() + * @see #getVLSFunction() + * @generated + */ + EAttribute getVLSFunction_Constant(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getTerms Terms}'. + * + * + * @return the meta object for the containment reference list 'Terms'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction#getTerms() + * @see #getVLSFunction() + * @generated + */ + EReference getVLSFunction_Terms(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess VLS Less}'. + * + * + * @return the meta object for class 'VLS Less'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess + * @generated + */ + EClass getVLSLess(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getName() + * @see #getVLSLess() + * @generated + */ + EAttribute getVLSLess_Name(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getTerms Terms}'. + * + * + * @return the meta object for the containment reference list 'Terms'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess#getTerms() + * @see #getVLSLess() + * @generated + */ + EReference getVLSLess_Terms(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt VLS Int}'. + * + * + * @return the meta object for class 'VLS Int'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt + * @generated + */ + EClass getVLSInt(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote VLS Double Quote}'. + * + * + * @return the meta object for class 'VLS Double Quote'. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote + * @generated + */ + EClass getVLSDoubleQuote(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + VampireLanguageFactory getVampireLanguageFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals + { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl Vampire Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVampireModel() + * @generated + */ + EClass VAMPIRE_MODEL = eINSTANCE.getVampireModel(); + + /** + * The meta object literal for the 'Comments' containment reference list feature. + * + * + * @generated + */ + EReference VAMPIRE_MODEL__COMMENTS = eINSTANCE.getVampireModel_Comments(); + + /** + * The meta object literal for the 'Confirmations' containment reference list feature. + * + * + * @generated + */ + EReference VAMPIRE_MODEL__CONFIRMATIONS = eINSTANCE.getVampireModel_Confirmations(); + + /** + * The meta object literal for the 'Formulas' containment reference list feature. + * + * + * @generated + */ + EReference VAMPIRE_MODEL__FORMULAS = eINSTANCE.getVampireModel_Formulas(); + + /** + * The meta object literal for the 'Tfformulas' containment reference list feature. + * + * + * @generated + */ + EReference VAMPIRE_MODEL__TFFORMULAS = eINSTANCE.getVampireModel_Tfformulas(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSCommentImpl VLS Comment}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSCommentImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSComment() + * @generated + */ + EClass VLS_COMMENT = eINSTANCE.getVLSComment(); + + /** + * The meta object literal for the 'Comment' attribute feature. + * + * + * @generated + */ + EAttribute VLS_COMMENT__COMMENT = eINSTANCE.getVLSComment_Comment(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConfirmationsImpl VLS Confirmations}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConfirmationsImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSConfirmations() + * @generated + */ + EClass VLS_CONFIRMATIONS = eINSTANCE.getVLSConfirmations(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl VLS Fof Formula}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFofFormula() + * @generated + */ + EClass VLS_FOF_FORMULA = eINSTANCE.getVLSFofFormula(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_FOF_FORMULA__NAME = eINSTANCE.getVLSFofFormula_Name(); + + /** + * The meta object literal for the 'Fof Role' attribute feature. + * + * + * @generated + */ + EAttribute VLS_FOF_FORMULA__FOF_ROLE = eINSTANCE.getVLSFofFormula_FofRole(); + + /** + * The meta object literal for the 'Fof Formula' containment reference feature. + * + * + * @generated + */ + EReference VLS_FOF_FORMULA__FOF_FORMULA = eINSTANCE.getVLSFofFormula_FofFormula(); + + /** + * The meta object literal for the 'Annotations' containment reference feature. + * + * + * @generated + */ + EReference VLS_FOF_FORMULA__ANNOTATIONS = eINSTANCE.getVLSFofFormula_Annotations(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl VLS Tff Formula}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTffFormula() + * @generated + */ + EClass VLS_TFF_FORMULA = eINSTANCE.getVLSTffFormula(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_TFF_FORMULA__NAME = eINSTANCE.getVLSTffFormula_Name(); + + /** + * The meta object literal for the 'Tff Role' attribute feature. + * + * + * @generated + */ + EAttribute VLS_TFF_FORMULA__TFF_ROLE = eINSTANCE.getVLSTffFormula_TffRole(); + + /** + * The meta object literal for the 'Fof Formula' containment reference feature. + * + * + * @generated + */ + EReference VLS_TFF_FORMULA__FOF_FORMULA = eINSTANCE.getVLSTffFormula_FofFormula(); + + /** + * The meta object literal for the 'Annotations' containment reference feature. + * + * + * @generated + */ + EReference VLS_TFF_FORMULA__ANNOTATIONS = eINSTANCE.getVLSTffFormula_Annotations(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl VLS Annotation}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSAnnotation() + * @generated + */ + EClass VLS_ANNOTATION = eINSTANCE.getVLSAnnotation(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_ANNOTATION__NAME = eINSTANCE.getVLSAnnotation_Name(); + + /** + * The meta object literal for the 'Followup' containment reference feature. + * + * + * @generated + */ + EReference VLS_ANNOTATION__FOLLOWUP = eINSTANCE.getVLSAnnotation_Followup(); + + /** + * The meta object literal for the 'Terms' containment reference list feature. + * + * + * @generated + */ + EReference VLS_ANNOTATION__TERMS = eINSTANCE.getVLSAnnotation_Terms(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffTermImpl VLS Tff Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTffTerm() + * @generated + */ + EClass VLS_TFF_TERM = eINSTANCE.getVLSTffTerm(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTermImpl VLS Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTerm() + * @generated + */ + EClass VLS_TERM = eINSTANCE.getVLSTerm(); + + /** + * The meta object literal for the 'Comment' attribute feature. + * + * + * @generated + */ + EAttribute VLS_TERM__COMMENT = eINSTANCE.getVLSTerm_Comment(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDeclarationImpl VLS Declaration}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDeclarationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSDeclaration() + * @generated + */ + EClass VLS_DECLARATION = eINSTANCE.getVLSDeclaration(); + + /** + * The meta object literal for the 'Type' containment reference feature. + * + * + * @generated + */ + EReference VLS_DECLARATION__TYPE = eINSTANCE.getVLSDeclaration_Type(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOtherDeclarationImpl VLS Other Declaration}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOtherDeclarationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSOtherDeclaration() + * @generated + */ + EClass VLS_OTHER_DECLARATION = eINSTANCE.getVLSOtherDeclaration(); + + /** + * The meta object literal for the 'Name' containment reference feature. + * + * + * @generated + */ + EReference VLS_OTHER_DECLARATION__NAME = eINSTANCE.getVLSOtherDeclaration_Name(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableDeclarationImpl VLS Variable Declaration}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableDeclarationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSVariableDeclaration() + * @generated + */ + EClass VLS_VARIABLE_DECLARATION = eINSTANCE.getVLSVariableDeclaration(); + + /** + * The meta object literal for the 'Name' containment reference feature. + * + * + * @generated + */ + EReference VLS_VARIABLE_DECLARATION__NAME = eINSTANCE.getVLSVariableDeclaration_Name(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl VLS Type Def}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTypeDef() + * @generated + */ + EClass VLS_TYPE_DEF = eINSTANCE.getVLSTypeDef(); + + /** + * The meta object literal for the 'Type Sig' containment reference feature. + * + * + * @generated + */ + EReference VLS_TYPE_DEF__TYPE_SIG = eINSTANCE.getVLSTypeDef_TypeSig(); + + /** + * The meta object literal for the 'Maps To' containment reference feature. + * + * + * @generated + */ + EReference VLS_TYPE_DEF__MAPS_TO = eINSTANCE.getVLSTypeDef_MapsTo(); + + /** + * The meta object literal for the 'Init Type' containment reference feature. + * + * + * @generated + */ + EReference VLS_TYPE_DEF__INIT_TYPE = eINSTANCE.getVLSTypeDef_InitType(); + + /** + * The meta object literal for the 'Next Type' containment reference feature. + * + * + * @generated + */ + EReference VLS_TYPE_DEF__NEXT_TYPE = eINSTANCE.getVLSTypeDef_NextType(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableImpl VLS Variable}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSVariable() + * @generated + */ + EClass VLS_VARIABLE = eINSTANCE.getVLSVariable(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_VARIABLE__NAME = eINSTANCE.getVLSVariable_Name(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionAsTermImpl VLS Function As Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionAsTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFunctionAsTerm() + * @generated + */ + EClass VLS_FUNCTION_AS_TERM = eINSTANCE.getVLSFunctionAsTerm(); + + /** + * The meta object literal for the 'Functor' attribute feature. + * + * + * @generated + */ + EAttribute VLS_FUNCTION_AS_TERM__FUNCTOR = eINSTANCE.getVLSFunctionAsTerm_Functor(); + + /** + * The meta object literal for the 'Terms' containment reference list feature. + * + * + * @generated + */ + EReference VLS_FUNCTION_AS_TERM__TERMS = eINSTANCE.getVLSFunctionAsTerm_Terms(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDefinedTermImpl VLS Defined Term}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDefinedTermImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSDefinedTerm() + * @generated + */ + EClass VLS_DEFINED_TERM = eINSTANCE.getVLSDefinedTerm(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute VLS_DEFINED_TERM__VALUE = eINSTANCE.getVLSDefinedTerm_Value(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSSatisfiableImpl VLS Satisfiable}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSSatisfiableImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSSatisfiable() + * @generated + */ + EClass VLS_SATISFIABLE = eINSTANCE.getVLSSatisfiable(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSWarningImpl VLS Warning}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSWarningImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSWarning() + * @generated + */ + EClass VLS_WARNING = eINSTANCE.getVLSWarning(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTryingImpl VLS Trying}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTryingImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTrying() + * @generated + */ + EClass VLS_TRYING = eINSTANCE.getVLSTrying(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_TRYING__NAME = eINSTANCE.getVLSTrying_Name(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFiniteModelImpl VLS Finite Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFiniteModelImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFiniteModel() + * @generated + */ + EClass VLS_FINITE_MODEL = eINSTANCE.getVLSFiniteModel(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEquivalentImpl VLS Equivalent}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEquivalentImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSEquivalent() + * @generated + */ + EClass VLS_EQUIVALENT = eINSTANCE.getVLSEquivalent(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_EQUIVALENT__LEFT = eINSTANCE.getVLSEquivalent_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_EQUIVALENT__RIGHT = eINSTANCE.getVLSEquivalent_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSImpliesImpl VLS Implies}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSImpliesImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSImplies() + * @generated + */ + EClass VLS_IMPLIES = eINSTANCE.getVLSImplies(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_IMPLIES__LEFT = eINSTANCE.getVLSImplies_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_IMPLIES__RIGHT = eINSTANCE.getVLSImplies_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSRevImpliesImpl VLS Rev Implies}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSRevImpliesImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSRevImplies() + * @generated + */ + EClass VLS_REV_IMPLIES = eINSTANCE.getVLSRevImplies(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_REV_IMPLIES__LEFT = eINSTANCE.getVLSRevImplies_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_REV_IMPLIES__RIGHT = eINSTANCE.getVLSRevImplies_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSXnorImpl VLS Xnor}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSXnorImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSXnor() + * @generated + */ + EClass VLS_XNOR = eINSTANCE.getVLSXnor(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_XNOR__LEFT = eINSTANCE.getVLSXnor_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_XNOR__RIGHT = eINSTANCE.getVLSXnor_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNorImpl VLS Nor}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNorImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSNor() + * @generated + */ + EClass VLS_NOR = eINSTANCE.getVLSNor(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_NOR__LEFT = eINSTANCE.getVLSNor_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_NOR__RIGHT = eINSTANCE.getVLSNor_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNandImpl VLS Nand}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNandImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSNand() + * @generated + */ + EClass VLS_NAND = eINSTANCE.getVLSNand(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_NAND__LEFT = eINSTANCE.getVLSNand_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_NAND__RIGHT = eINSTANCE.getVLSNand_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl VLS And}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSAnd() + * @generated + */ + EClass VLS_AND = eINSTANCE.getVLSAnd(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_AND__LEFT = eINSTANCE.getVLSAnd_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_AND__RIGHT = eINSTANCE.getVLSAnd_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl VLS Or}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSOr() + * @generated + */ + EClass VLS_OR = eINSTANCE.getVLSOr(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_OR__LEFT = eINSTANCE.getVLSOr_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_OR__RIGHT = eINSTANCE.getVLSOr_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUniversalQuantifierImpl VLS Universal Quantifier}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUniversalQuantifierImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSUniversalQuantifier() + * @generated + */ + EClass VLS_UNIVERSAL_QUANTIFIER = eINSTANCE.getVLSUniversalQuantifier(); + + /** + * The meta object literal for the 'Variables' containment reference list feature. + * + * + * @generated + */ + EReference VLS_UNIVERSAL_QUANTIFIER__VARIABLES = eINSTANCE.getVLSUniversalQuantifier_Variables(); + + /** + * The meta object literal for the 'Operand' containment reference feature. + * + * + * @generated + */ + EReference VLS_UNIVERSAL_QUANTIFIER__OPERAND = eINSTANCE.getVLSUniversalQuantifier_Operand(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSExistentialQuantifierImpl VLS Existential Quantifier}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSExistentialQuantifierImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSExistentialQuantifier() + * @generated + */ + EClass VLS_EXISTENTIAL_QUANTIFIER = eINSTANCE.getVLSExistentialQuantifier(); + + /** + * The meta object literal for the 'Variables' containment reference list feature. + * + * + * @generated + */ + EReference VLS_EXISTENTIAL_QUANTIFIER__VARIABLES = eINSTANCE.getVLSExistentialQuantifier_Variables(); + + /** + * The meta object literal for the 'Operand' containment reference feature. + * + * + * @generated + */ + EReference VLS_EXISTENTIAL_QUANTIFIER__OPERAND = eINSTANCE.getVLSExistentialQuantifier_Operand(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUnaryNegationImpl VLS Unary Negation}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUnaryNegationImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSUnaryNegation() + * @generated + */ + EClass VLS_UNARY_NEGATION = eINSTANCE.getVLSUnaryNegation(); + + /** + * The meta object literal for the 'Operand' containment reference feature. + * + * + * @generated + */ + EReference VLS_UNARY_NEGATION__OPERAND = eINSTANCE.getVLSUnaryNegation_Operand(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSInequalityImpl VLS Inequality}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSInequalityImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSInequality() + * @generated + */ + EClass VLS_INEQUALITY = eINSTANCE.getVLSInequality(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_INEQUALITY__LEFT = eINSTANCE.getVLSInequality_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_INEQUALITY__RIGHT = eINSTANCE.getVLSInequality_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEqualityImpl VLS Equality}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEqualityImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSEquality() + * @generated + */ + EClass VLS_EQUALITY = eINSTANCE.getVLSEquality(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_EQUALITY__LEFT = eINSTANCE.getVLSEquality_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_EQUALITY__RIGHT = eINSTANCE.getVLSEquality_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAssignmentImpl VLS Assignment}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAssignmentImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSAssignment() + * @generated + */ + EClass VLS_ASSIGNMENT = eINSTANCE.getVLSAssignment(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference VLS_ASSIGNMENT__LEFT = eINSTANCE.getVLSAssignment_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference VLS_ASSIGNMENT__RIGHT = eINSTANCE.getVLSAssignment_Right(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConstantImpl VLS Constant}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConstantImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSConstant() + * @generated + */ + EClass VLS_CONSTANT = eINSTANCE.getVLSConstant(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_CONSTANT__NAME = eINSTANCE.getVLSConstant_Name(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTrueImpl VLS True}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTrueImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSTrue() + * @generated + */ + EClass VLS_TRUE = eINSTANCE.getVLSTrue(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFalseImpl VLS False}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFalseImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFalse() + * @generated + */ + EClass VLS_FALSE = eINSTANCE.getVLSFalse(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionImpl VLS Function}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSFunction() + * @generated + */ + EClass VLS_FUNCTION = eINSTANCE.getVLSFunction(); + + /** + * The meta object literal for the 'Constant' attribute feature. + * + * + * @generated + */ + EAttribute VLS_FUNCTION__CONSTANT = eINSTANCE.getVLSFunction_Constant(); + + /** + * The meta object literal for the 'Terms' containment reference list feature. + * + * + * @generated + */ + EReference VLS_FUNCTION__TERMS = eINSTANCE.getVLSFunction_Terms(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSLessImpl VLS Less}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSLessImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSLess() + * @generated + */ + EClass VLS_LESS = eINSTANCE.getVLSLess(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute VLS_LESS__NAME = eINSTANCE.getVLSLess_Name(); + + /** + * The meta object literal for the 'Terms' containment reference list feature. + * + * + * @generated + */ + EReference VLS_LESS__TERMS = eINSTANCE.getVLSLess_Terms(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSIntImpl VLS Int}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSIntImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSInt() + * @generated + */ + EClass VLS_INT = eINSTANCE.getVLSInt(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDoubleQuoteImpl VLS Double Quote}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDoubleQuoteImpl + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguagePackageImpl#getVLSDoubleQuote() + * @generated + */ + EClass VLS_DOUBLE_QUOTE = eINSTANCE.getVLSDoubleQuote(); + + } + +} //VampireLanguagePackage diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireModel.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireModel.java new file mode 100644 index 000000000..af1386f1c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/VampireModel.java @@ -0,0 +1,95 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Vampire Model'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getComments Comments}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getConfirmations Confirmations}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getFormulas Formulas}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel#getTfformulas Tfformulas}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVampireModel() + * @model + * @generated + */ +public interface VampireModel extends EObject +{ + /** + * Returns the value of the 'Comments' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment}. + * + *

+ * If the meaning of the 'Comments' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Comments' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVampireModel_Comments() + * @model containment="true" + * @generated + */ + EList getComments(); + + /** + * Returns the value of the 'Confirmations' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations}. + * + *

+ * If the meaning of the 'Confirmations' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Confirmations' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVampireModel_Confirmations() + * @model containment="true" + * @generated + */ + EList getConfirmations(); + + /** + * Returns the value of the 'Formulas' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula}. + * + *

+ * If the meaning of the 'Formulas' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Formulas' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVampireModel_Formulas() + * @model containment="true" + * @generated + */ + EList getFormulas(); + + /** + * Returns the value of the 'Tfformulas' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula}. + * + *

+ * If the meaning of the 'Tfformulas' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Tfformulas' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#getVampireModel_Tfformulas() + * @model containment="true" + * @generated + */ + EList getTfformulas(); + +} // VampireModel diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAndImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAndImpl.java new file mode 100644 index 000000000..bd0df2080 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAndImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS And'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSAndImpl extends VLSTermImpl implements VLSAnd +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSAndImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_AND; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_AND__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_AND__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_AND__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_AND__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_AND__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_AND__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_AND__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_AND__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_AND__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_AND__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_AND__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_AND__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_AND__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_AND__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_AND__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_AND__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_AND__LEFT: + return left != null; + case VampireLanguagePackage.VLS_AND__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSAndImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAnnotationImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAnnotationImpl.java new file mode 100644 index 000000000..b55f087ba --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAnnotationImpl.java @@ -0,0 +1,311 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'VLS Annotation'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl#getFollowup Followup}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAnnotationImpl#getTerms Terms}
  • + *
+ * + * @generated + */ +public class VLSAnnotationImpl extends MinimalEObjectImpl.Container implements VLSAnnotation +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getFollowup() Followup}' containment reference. + * + * + * @see #getFollowup() + * @generated + * @ordered + */ + protected VLSAnnotation followup; + + /** + * The cached value of the '{@link #getTerms() Terms}' containment reference list. + * + * + * @see #getTerms() + * @generated + * @ordered + */ + protected EList terms; + + /** + * + * + * @generated + */ + protected VLSAnnotationImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_ANNOTATION; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ANNOTATION__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + public VLSAnnotation getFollowup() + { + return followup; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetFollowup(VLSAnnotation newFollowup, NotificationChain msgs) + { + VLSAnnotation oldFollowup = followup; + followup = newFollowup; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP, oldFollowup, newFollowup); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setFollowup(VLSAnnotation newFollowup) + { + if (newFollowup != followup) + { + NotificationChain msgs = null; + if (followup != null) + msgs = ((InternalEObject)followup).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP, null, msgs); + if (newFollowup != null) + msgs = ((InternalEObject)newFollowup).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP, null, msgs); + msgs = basicSetFollowup(newFollowup, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP, newFollowup, newFollowup)); + } + + /** + * + * + * @generated + */ + public EList getTerms() + { + if (terms == null) + { + terms = new EObjectContainmentEList(VLSAnnotation.class, this, VampireLanguagePackage.VLS_ANNOTATION__TERMS); + } + return terms; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP: + return basicSetFollowup(null, msgs); + case VampireLanguagePackage.VLS_ANNOTATION__TERMS: + return ((InternalEList)getTerms()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ANNOTATION__NAME: + return getName(); + case VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP: + return getFollowup(); + case VampireLanguagePackage.VLS_ANNOTATION__TERMS: + return getTerms(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ANNOTATION__NAME: + setName((String)newValue); + return; + case VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP: + setFollowup((VLSAnnotation)newValue); + return; + case VampireLanguagePackage.VLS_ANNOTATION__TERMS: + getTerms().clear(); + getTerms().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ANNOTATION__NAME: + setName(NAME_EDEFAULT); + return; + case VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP: + setFollowup((VLSAnnotation)null); + return; + case VampireLanguagePackage.VLS_ANNOTATION__TERMS: + getTerms().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ANNOTATION__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case VampireLanguagePackage.VLS_ANNOTATION__FOLLOWUP: + return followup != null; + case VampireLanguagePackage.VLS_ANNOTATION__TERMS: + return terms != null && !terms.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //VLSAnnotationImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAssignmentImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAssignmentImpl.java new file mode 100644 index 000000000..76ea3ec93 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSAssignmentImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Assignment'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAssignmentImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAssignmentImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSAssignmentImpl extends VLSTermImpl implements VLSAssignment +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSAssignmentImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_ASSIGNMENT; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ASSIGNMENT__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_ASSIGNMENT__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_ASSIGNMENT__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ASSIGNMENT__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ASSIGNMENT__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ASSIGNMENT__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ASSIGNMENT__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ASSIGNMENT__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_ASSIGNMENT__LEFT: + return left != null; + case VampireLanguagePackage.VLS_ASSIGNMENT__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSAssignmentImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSCommentImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSCommentImpl.java new file mode 100644 index 000000000..6e9ab1ef7 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSCommentImpl.java @@ -0,0 +1,178 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'VLS Comment'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSCommentImpl#getComment Comment}
  • + *
+ * + * @generated + */ +public class VLSCommentImpl extends MinimalEObjectImpl.Container implements VLSComment +{ + /** + * The default value of the '{@link #getComment() Comment}' attribute. + * + * + * @see #getComment() + * @generated + * @ordered + */ + protected static final String COMMENT_EDEFAULT = null; + + /** + * The cached value of the '{@link #getComment() Comment}' attribute. + * + * + * @see #getComment() + * @generated + * @ordered + */ + protected String comment = COMMENT_EDEFAULT; + + /** + * + * + * @generated + */ + protected VLSCommentImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_COMMENT; + } + + /** + * + * + * @generated + */ + public String getComment() + { + return comment; + } + + /** + * + * + * @generated + */ + public void setComment(String newComment) + { + String oldComment = comment; + comment = newComment; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_COMMENT__COMMENT, oldComment, comment)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_COMMENT__COMMENT: + return getComment(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_COMMENT__COMMENT: + setComment((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_COMMENT__COMMENT: + setComment(COMMENT_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_COMMENT__COMMENT: + return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (comment: "); + result.append(comment); + result.append(')'); + return result.toString(); + } + +} //VLSCommentImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSConfirmationsImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSConfirmationsImpl.java new file mode 100644 index 000000000..bfa10db2b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSConfirmationsImpl.java @@ -0,0 +1,43 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'VLS Confirmations'. + * + * + * @generated + */ +public class VLSConfirmationsImpl extends MinimalEObjectImpl.Container implements VLSConfirmations +{ + /** + * + * + * @generated + */ + protected VLSConfirmationsImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_CONFIRMATIONS; + } + +} //VLSConfirmationsImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSConstantImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSConstantImpl.java new file mode 100644 index 000000000..d552dc2bd --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSConstantImpl.java @@ -0,0 +1,177 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Constant'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSConstantImpl#getName Name}
  • + *
+ * + * @generated + */ +public class VLSConstantImpl extends VLSTermImpl implements VLSConstant +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * + * + * @generated + */ + protected VLSConstantImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_CONSTANT; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_CONSTANT__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_CONSTANT__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_CONSTANT__NAME: + setName((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_CONSTANT__NAME: + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_CONSTANT__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //VLSConstantImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDeclarationImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDeclarationImpl.java new file mode 100644 index 000000000..894c76de2 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDeclarationImpl.java @@ -0,0 +1,194 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Declaration'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDeclarationImpl#getType Type}
  • + *
+ * + * @generated + */ +public class VLSDeclarationImpl extends VLSTffTermImpl implements VLSDeclaration +{ + /** + * The cached value of the '{@link #getType() Type}' containment reference. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected VLSTypeDef type; + + /** + * + * + * @generated + */ + protected VLSDeclarationImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_DECLARATION; + } + + /** + * + * + * @generated + */ + public VLSTypeDef getType() + { + return type; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetType(VLSTypeDef newType, NotificationChain msgs) + { + VLSTypeDef oldType = type; + type = newType; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_DECLARATION__TYPE, oldType, newType); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setType(VLSTypeDef newType) + { + if (newType != type) + { + NotificationChain msgs = null; + if (type != null) + msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_DECLARATION__TYPE, null, msgs); + if (newType != null) + msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_DECLARATION__TYPE, null, msgs); + msgs = basicSetType(newType, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_DECLARATION__TYPE, newType, newType)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DECLARATION__TYPE: + return basicSetType(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DECLARATION__TYPE: + return getType(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DECLARATION__TYPE: + setType((VLSTypeDef)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DECLARATION__TYPE: + setType((VLSTypeDef)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DECLARATION__TYPE: + return type != null; + } + return super.eIsSet(featureID); + } + +} //VLSDeclarationImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDefinedTermImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDefinedTermImpl.java new file mode 100644 index 000000000..eced6b578 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDefinedTermImpl.java @@ -0,0 +1,177 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Defined Term'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSDefinedTermImpl#getValue Value}
  • + *
+ * + * @generated + */ +public class VLSDefinedTermImpl extends VLSTermImpl implements VLSDefinedTerm +{ + /** + * The default value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final String VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected String value = VALUE_EDEFAULT; + + /** + * + * + * @generated + */ + protected VLSDefinedTermImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_DEFINED_TERM; + } + + /** + * + * + * @generated + */ + public String getValue() + { + return value; + } + + /** + * + * + * @generated + */ + public void setValue(String newValue) + { + String oldValue = value; + value = newValue; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_DEFINED_TERM__VALUE, oldValue, value)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DEFINED_TERM__VALUE: + return getValue(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DEFINED_TERM__VALUE: + setValue((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DEFINED_TERM__VALUE: + setValue(VALUE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_DEFINED_TERM__VALUE: + return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (value: "); + result.append(value); + result.append(')'); + return result.toString(); + } + +} //VLSDefinedTermImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDoubleQuoteImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDoubleQuoteImpl.java new file mode 100644 index 000000000..4eeb17579 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSDoubleQuoteImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS Double Quote'. + * + * + * @generated + */ +public class VLSDoubleQuoteImpl extends VLSDefinedTermImpl implements VLSDoubleQuote +{ + /** + * + * + * @generated + */ + protected VLSDoubleQuoteImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_DOUBLE_QUOTE; + } + +} //VLSDoubleQuoteImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSEqualityImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSEqualityImpl.java new file mode 100644 index 000000000..8ad728ad8 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSEqualityImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Equality'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEqualityImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEqualityImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSEqualityImpl extends VLSTermImpl implements VLSEquality +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSEqualityImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_EQUALITY; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUALITY__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUALITY__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUALITY__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUALITY__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUALITY__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUALITY__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUALITY__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUALITY__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUALITY__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_EQUALITY__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUALITY__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_EQUALITY__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUALITY__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_EQUALITY__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUALITY__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_EQUALITY__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUALITY__LEFT: + return left != null; + case VampireLanguagePackage.VLS_EQUALITY__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSEqualityImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSEquivalentImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSEquivalentImpl.java new file mode 100644 index 000000000..e90d4359e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSEquivalentImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Equivalent'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEquivalentImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSEquivalentImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSEquivalentImpl extends VLSTermImpl implements VLSEquivalent +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSEquivalentImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_EQUIVALENT; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUIVALENT__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUIVALENT__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUIVALENT__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUIVALENT__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUIVALENT__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUIVALENT__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EQUIVALENT__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EQUIVALENT__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUIVALENT__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_EQUIVALENT__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUIVALENT__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_EQUIVALENT__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUIVALENT__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_EQUIVALENT__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUIVALENT__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_EQUIVALENT__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EQUIVALENT__LEFT: + return left != null; + case VampireLanguagePackage.VLS_EQUIVALENT__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSEquivalentImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSExistentialQuantifierImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSExistentialQuantifierImpl.java new file mode 100644 index 000000000..6d71ec602 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSExistentialQuantifierImpl.java @@ -0,0 +1,241 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'VLS Existential Quantifier'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSExistentialQuantifierImpl#getVariables Variables}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSExistentialQuantifierImpl#getOperand Operand}
  • + *
+ * + * @generated + */ +public class VLSExistentialQuantifierImpl extends VLSTermImpl implements VLSExistentialQuantifier +{ + /** + * The cached value of the '{@link #getVariables() Variables}' containment reference list. + * + * + * @see #getVariables() + * @generated + * @ordered + */ + protected EList variables; + + /** + * The cached value of the '{@link #getOperand() Operand}' containment reference. + * + * + * @see #getOperand() + * @generated + * @ordered + */ + protected VLSTerm operand; + + /** + * + * + * @generated + */ + protected VLSExistentialQuantifierImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_EXISTENTIAL_QUANTIFIER; + } + + /** + * + * + * @generated + */ + public EList getVariables() + { + if (variables == null) + { + variables = new EObjectContainmentEList(VLSTffTerm.class, this, VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__VARIABLES); + } + return variables; + } + + /** + * + * + * @generated + */ + public VLSTerm getOperand() + { + return operand; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetOperand(VLSTerm newOperand, NotificationChain msgs) + { + VLSTerm oldOperand = operand; + operand = newOperand; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND, oldOperand, newOperand); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setOperand(VLSTerm newOperand) + { + if (newOperand != operand) + { + NotificationChain msgs = null; + if (operand != null) + msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND, null, msgs); + if (newOperand != null) + msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND, null, msgs); + msgs = basicSetOperand(newOperand, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND, newOperand, newOperand)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__VARIABLES: + return ((InternalEList)getVariables()).basicRemove(otherEnd, msgs); + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND: + return basicSetOperand(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__VARIABLES: + return getVariables(); + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND: + return getOperand(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__VARIABLES: + getVariables().clear(); + getVariables().addAll((Collection)newValue); + return; + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND: + setOperand((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__VARIABLES: + getVariables().clear(); + return; + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND: + setOperand((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__VARIABLES: + return variables != null && !variables.isEmpty(); + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER__OPERAND: + return operand != null; + } + return super.eIsSet(featureID); + } + +} //VLSExistentialQuantifierImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFalseImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFalseImpl.java new file mode 100644 index 000000000..43a4cc77b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFalseImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS False'. + * + * + * @generated + */ +public class VLSFalseImpl extends VLSTermImpl implements VLSFalse +{ + /** + * + * + * @generated + */ + protected VLSFalseImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_FALSE; + } + +} //VLSFalseImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFiniteModelImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFiniteModelImpl.java new file mode 100644 index 000000000..86416737b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFiniteModelImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS Finite Model'. + * + * + * @generated + */ +public class VLSFiniteModelImpl extends VLSConfirmationsImpl implements VLSFiniteModel +{ + /** + * + * + * @generated + */ + protected VLSFiniteModelImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_FINITE_MODEL; + } + +} //VLSFiniteModelImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFofFormulaImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFofFormulaImpl.java new file mode 100644 index 000000000..ac3817441 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFofFormulaImpl.java @@ -0,0 +1,394 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'VLS Fof Formula'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl#getFofRole Fof Role}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl#getFofFormula Fof Formula}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFofFormulaImpl#getAnnotations Annotations}
  • + *
+ * + * @generated + */ +public class VLSFofFormulaImpl extends MinimalEObjectImpl.Container implements VLSFofFormula +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getFofRole() Fof Role}' attribute. + * + * + * @see #getFofRole() + * @generated + * @ordered + */ + protected static final String FOF_ROLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getFofRole() Fof Role}' attribute. + * + * + * @see #getFofRole() + * @generated + * @ordered + */ + protected String fofRole = FOF_ROLE_EDEFAULT; + + /** + * The cached value of the '{@link #getFofFormula() Fof Formula}' containment reference. + * + * + * @see #getFofFormula() + * @generated + * @ordered + */ + protected VLSTerm fofFormula; + + /** + * The cached value of the '{@link #getAnnotations() Annotations}' containment reference. + * + * + * @see #getAnnotations() + * @generated + * @ordered + */ + protected VLSAnnotation annotations; + + /** + * + * + * @generated + */ + protected VLSFofFormulaImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_FOF_FORMULA; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FOF_FORMULA__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + public String getFofRole() + { + return fofRole; + } + + /** + * + * + * @generated + */ + public void setFofRole(String newFofRole) + { + String oldFofRole = fofRole; + fofRole = newFofRole; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FOF_FORMULA__FOF_ROLE, oldFofRole, fofRole)); + } + + /** + * + * + * @generated + */ + public VLSTerm getFofFormula() + { + return fofFormula; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetFofFormula(VLSTerm newFofFormula, NotificationChain msgs) + { + VLSTerm oldFofFormula = fofFormula; + fofFormula = newFofFormula; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA, oldFofFormula, newFofFormula); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setFofFormula(VLSTerm newFofFormula) + { + if (newFofFormula != fofFormula) + { + NotificationChain msgs = null; + if (fofFormula != null) + msgs = ((InternalEObject)fofFormula).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA, null, msgs); + if (newFofFormula != null) + msgs = ((InternalEObject)newFofFormula).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA, null, msgs); + msgs = basicSetFofFormula(newFofFormula, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA, newFofFormula, newFofFormula)); + } + + /** + * + * + * @generated + */ + public VLSAnnotation getAnnotations() + { + return annotations; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetAnnotations(VLSAnnotation newAnnotations, NotificationChain msgs) + { + VLSAnnotation oldAnnotations = annotations; + annotations = newAnnotations; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS, oldAnnotations, newAnnotations); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setAnnotations(VLSAnnotation newAnnotations) + { + if (newAnnotations != annotations) + { + NotificationChain msgs = null; + if (annotations != null) + msgs = ((InternalEObject)annotations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS, null, msgs); + if (newAnnotations != null) + msgs = ((InternalEObject)newAnnotations).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS, null, msgs); + msgs = basicSetAnnotations(newAnnotations, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS, newAnnotations, newAnnotations)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA: + return basicSetFofFormula(null, msgs); + case VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS: + return basicSetAnnotations(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FOF_FORMULA__NAME: + return getName(); + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_ROLE: + return getFofRole(); + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA: + return getFofFormula(); + case VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS: + return getAnnotations(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FOF_FORMULA__NAME: + setName((String)newValue); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_ROLE: + setFofRole((String)newValue); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA: + setFofFormula((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS: + setAnnotations((VLSAnnotation)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FOF_FORMULA__NAME: + setName(NAME_EDEFAULT); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_ROLE: + setFofRole(FOF_ROLE_EDEFAULT); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA: + setFofFormula((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS: + setAnnotations((VLSAnnotation)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FOF_FORMULA__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_ROLE: + return FOF_ROLE_EDEFAULT == null ? fofRole != null : !FOF_ROLE_EDEFAULT.equals(fofRole); + case VampireLanguagePackage.VLS_FOF_FORMULA__FOF_FORMULA: + return fofFormula != null; + case VampireLanguagePackage.VLS_FOF_FORMULA__ANNOTATIONS: + return annotations != null; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(", fofRole: "); + result.append(fofRole); + result.append(')'); + return result.toString(); + } + +} //VLSFofFormulaImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFunctionAsTermImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFunctionAsTermImpl.java new file mode 100644 index 000000000..1df29e68b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFunctionAsTermImpl.java @@ -0,0 +1,240 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'VLS Function As Term'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionAsTermImpl#getFunctor Functor}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionAsTermImpl#getTerms Terms}
  • + *
+ * + * @generated + */ +public class VLSFunctionAsTermImpl extends VLSTermImpl implements VLSFunctionAsTerm +{ + /** + * The default value of the '{@link #getFunctor() Functor}' attribute. + * + * + * @see #getFunctor() + * @generated + * @ordered + */ + protected static final String FUNCTOR_EDEFAULT = null; + + /** + * The cached value of the '{@link #getFunctor() Functor}' attribute. + * + * + * @see #getFunctor() + * @generated + * @ordered + */ + protected String functor = FUNCTOR_EDEFAULT; + + /** + * The cached value of the '{@link #getTerms() Terms}' containment reference list. + * + * + * @see #getTerms() + * @generated + * @ordered + */ + protected EList terms; + + /** + * + * + * @generated + */ + protected VLSFunctionAsTermImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_FUNCTION_AS_TERM; + } + + /** + * + * + * @generated + */ + public String getFunctor() + { + return functor; + } + + /** + * + * + * @generated + */ + public void setFunctor(String newFunctor) + { + String oldFunctor = functor; + functor = newFunctor; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FUNCTION_AS_TERM__FUNCTOR, oldFunctor, functor)); + } + + /** + * + * + * @generated + */ + public EList getTerms() + { + if (terms == null) + { + terms = new EObjectContainmentEList(VLSTerm.class, this, VampireLanguagePackage.VLS_FUNCTION_AS_TERM__TERMS); + } + return terms; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__TERMS: + return ((InternalEList)getTerms()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__FUNCTOR: + return getFunctor(); + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__TERMS: + return getTerms(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__FUNCTOR: + setFunctor((String)newValue); + return; + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__TERMS: + getTerms().clear(); + getTerms().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__FUNCTOR: + setFunctor(FUNCTOR_EDEFAULT); + return; + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__TERMS: + getTerms().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__FUNCTOR: + return FUNCTOR_EDEFAULT == null ? functor != null : !FUNCTOR_EDEFAULT.equals(functor); + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM__TERMS: + return terms != null && !terms.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (functor: "); + result.append(functor); + result.append(')'); + return result.toString(); + } + +} //VLSFunctionAsTermImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFunctionImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFunctionImpl.java new file mode 100644 index 000000000..219c0258a --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSFunctionImpl.java @@ -0,0 +1,240 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'VLS Function'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionImpl#getConstant Constant}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFunctionImpl#getTerms Terms}
  • + *
+ * + * @generated + */ +public class VLSFunctionImpl extends VLSTermImpl implements VLSFunction +{ + /** + * The default value of the '{@link #getConstant() Constant}' attribute. + * + * + * @see #getConstant() + * @generated + * @ordered + */ + protected static final String CONSTANT_EDEFAULT = null; + + /** + * The cached value of the '{@link #getConstant() Constant}' attribute. + * + * + * @see #getConstant() + * @generated + * @ordered + */ + protected String constant = CONSTANT_EDEFAULT; + + /** + * The cached value of the '{@link #getTerms() Terms}' containment reference list. + * + * + * @see #getTerms() + * @generated + * @ordered + */ + protected EList terms; + + /** + * + * + * @generated + */ + protected VLSFunctionImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_FUNCTION; + } + + /** + * + * + * @generated + */ + public String getConstant() + { + return constant; + } + + /** + * + * + * @generated + */ + public void setConstant(String newConstant) + { + String oldConstant = constant; + constant = newConstant; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_FUNCTION__CONSTANT, oldConstant, constant)); + } + + /** + * + * + * @generated + */ + public EList getTerms() + { + if (terms == null) + { + terms = new EObjectContainmentEList(VLSTerm.class, this, VampireLanguagePackage.VLS_FUNCTION__TERMS); + } + return terms; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION__TERMS: + return ((InternalEList)getTerms()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION__CONSTANT: + return getConstant(); + case VampireLanguagePackage.VLS_FUNCTION__TERMS: + return getTerms(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION__CONSTANT: + setConstant((String)newValue); + return; + case VampireLanguagePackage.VLS_FUNCTION__TERMS: + getTerms().clear(); + getTerms().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION__CONSTANT: + setConstant(CONSTANT_EDEFAULT); + return; + case VampireLanguagePackage.VLS_FUNCTION__TERMS: + getTerms().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_FUNCTION__CONSTANT: + return CONSTANT_EDEFAULT == null ? constant != null : !CONSTANT_EDEFAULT.equals(constant); + case VampireLanguagePackage.VLS_FUNCTION__TERMS: + return terms != null && !terms.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (constant: "); + result.append(constant); + result.append(')'); + return result.toString(); + } + +} //VLSFunctionImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSImpliesImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSImpliesImpl.java new file mode 100644 index 000000000..aabf8533c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSImpliesImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Implies'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSImpliesImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSImpliesImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSImpliesImpl extends VLSTermImpl implements VLSImplies +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSImpliesImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_IMPLIES; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_IMPLIES__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_IMPLIES__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_IMPLIES__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_IMPLIES__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_IMPLIES__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_IMPLIES__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_IMPLIES__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_IMPLIES__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_IMPLIES__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_IMPLIES__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_IMPLIES__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_IMPLIES__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_IMPLIES__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_IMPLIES__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_IMPLIES__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_IMPLIES__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_IMPLIES__LEFT: + return left != null; + case VampireLanguagePackage.VLS_IMPLIES__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSImpliesImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSInequalityImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSInequalityImpl.java new file mode 100644 index 000000000..326b473be --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSInequalityImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Inequality'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSInequalityImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSInequalityImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSInequalityImpl extends VLSTermImpl implements VLSInequality +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSInequalityImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_INEQUALITY; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_INEQUALITY__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_INEQUALITY__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_INEQUALITY__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_INEQUALITY__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_INEQUALITY__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_INEQUALITY__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_INEQUALITY__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_INEQUALITY__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_INEQUALITY__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_INEQUALITY__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_INEQUALITY__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_INEQUALITY__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_INEQUALITY__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_INEQUALITY__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_INEQUALITY__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_INEQUALITY__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_INEQUALITY__LEFT: + return left != null; + case VampireLanguagePackage.VLS_INEQUALITY__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSInequalityImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSIntImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSIntImpl.java new file mode 100644 index 000000000..44593a330 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSIntImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS Int'. + * + * + * @generated + */ +public class VLSIntImpl extends VLSDefinedTermImpl implements VLSInt +{ + /** + * + * + * @generated + */ + protected VLSIntImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_INT; + } + +} //VLSIntImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSLessImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSLessImpl.java new file mode 100644 index 000000000..a3571d349 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSLessImpl.java @@ -0,0 +1,240 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'VLS Less'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSLessImpl#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSLessImpl#getTerms Terms}
  • + *
+ * + * @generated + */ +public class VLSLessImpl extends VLSTermImpl implements VLSLess +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getTerms() Terms}' containment reference list. + * + * + * @see #getTerms() + * @generated + * @ordered + */ + protected EList terms; + + /** + * + * + * @generated + */ + protected VLSLessImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_LESS; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_LESS__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + public EList getTerms() + { + if (terms == null) + { + terms = new EObjectContainmentEList(VLSTerm.class, this, VampireLanguagePackage.VLS_LESS__TERMS); + } + return terms; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_LESS__TERMS: + return ((InternalEList)getTerms()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_LESS__NAME: + return getName(); + case VampireLanguagePackage.VLS_LESS__TERMS: + return getTerms(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_LESS__NAME: + setName((String)newValue); + return; + case VampireLanguagePackage.VLS_LESS__TERMS: + getTerms().clear(); + getTerms().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_LESS__NAME: + setName(NAME_EDEFAULT); + return; + case VampireLanguagePackage.VLS_LESS__TERMS: + getTerms().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_LESS__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case VampireLanguagePackage.VLS_LESS__TERMS: + return terms != null && !terms.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //VLSLessImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSNandImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSNandImpl.java new file mode 100644 index 000000000..2e12ec98f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSNandImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Nand'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNandImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNandImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSNandImpl extends VLSTermImpl implements VLSNand +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSNandImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_NAND; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NAND__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NAND__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NAND__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NAND__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NAND__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NAND__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NAND__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NAND__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NAND__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_NAND__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NAND__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_NAND__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NAND__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_NAND__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NAND__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_NAND__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NAND__LEFT: + return left != null; + case VampireLanguagePackage.VLS_NAND__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSNandImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSNorImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSNorImpl.java new file mode 100644 index 000000000..5bc1f7da6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSNorImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Nor'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNorImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSNorImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSNorImpl extends VLSTermImpl implements VLSNor +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSNorImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_NOR; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NOR__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NOR__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NOR__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NOR__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NOR__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NOR__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_NOR__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_NOR__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NOR__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_NOR__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NOR__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_NOR__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NOR__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_NOR__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NOR__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_NOR__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_NOR__LEFT: + return left != null; + case VampireLanguagePackage.VLS_NOR__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSNorImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSOrImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSOrImpl.java new file mode 100644 index 000000000..80dbe94b8 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSOrImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Or'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSOrImpl extends VLSTermImpl implements VLSOr +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSOrImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_OR; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_OR__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_OR__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_OR__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_OR__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_OR__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_OR__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_OR__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_OR__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OR__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_OR__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OR__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_OR__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OR__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_OR__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OR__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_OR__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OR__LEFT: + return left != null; + case VampireLanguagePackage.VLS_OR__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSOrImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSOtherDeclarationImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSOtherDeclarationImpl.java new file mode 100644 index 000000000..eb7afd3d7 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSOtherDeclarationImpl.java @@ -0,0 +1,194 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Other Declaration'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOtherDeclarationImpl#getName Name}
  • + *
+ * + * @generated + */ +public class VLSOtherDeclarationImpl extends VLSDeclarationImpl implements VLSOtherDeclaration +{ + /** + * The cached value of the '{@link #getName() Name}' containment reference. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected VLSTerm name; + + /** + * + * + * @generated + */ + protected VLSOtherDeclarationImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_OTHER_DECLARATION; + } + + /** + * + * + * @generated + */ + public VLSTerm getName() + { + return name; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetName(VLSTerm newName, NotificationChain msgs) + { + VLSTerm oldName = name; + name = newName; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME, oldName, newName); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setName(VLSTerm newName) + { + if (newName != name) + { + NotificationChain msgs = null; + if (name != null) + msgs = ((InternalEObject)name).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME, null, msgs); + if (newName != null) + msgs = ((InternalEObject)newName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME, null, msgs); + msgs = basicSetName(newName, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME, newName, newName)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME: + return basicSetName(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME: + setName((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME: + setName((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_OTHER_DECLARATION__NAME: + return name != null; + } + return super.eIsSet(featureID); + } + +} //VLSOtherDeclarationImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSRevImpliesImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSRevImpliesImpl.java new file mode 100644 index 000000000..97986a862 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSRevImpliesImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Rev Implies'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSRevImpliesImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSRevImpliesImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSRevImpliesImpl extends VLSTermImpl implements VLSRevImplies +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSRevImpliesImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_REV_IMPLIES; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_REV_IMPLIES__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_REV_IMPLIES__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_REV_IMPLIES__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_REV_IMPLIES__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_REV_IMPLIES__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_REV_IMPLIES__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_REV_IMPLIES__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_REV_IMPLIES__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_REV_IMPLIES__LEFT: + return left != null; + case VampireLanguagePackage.VLS_REV_IMPLIES__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSRevImpliesImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSSatisfiableImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSSatisfiableImpl.java new file mode 100644 index 000000000..49ef1e74f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSSatisfiableImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS Satisfiable'. + * + * + * @generated + */ +public class VLSSatisfiableImpl extends VLSConfirmationsImpl implements VLSSatisfiable +{ + /** + * + * + * @generated + */ + protected VLSSatisfiableImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_SATISFIABLE; + } + +} //VLSSatisfiableImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTermImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTermImpl.java new file mode 100644 index 000000000..9f1fa64f3 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTermImpl.java @@ -0,0 +1,177 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Term'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTermImpl#getComment Comment}
  • + *
+ * + * @generated + */ +public class VLSTermImpl extends VLSTffTermImpl implements VLSTerm +{ + /** + * The default value of the '{@link #getComment() Comment}' attribute. + * + * + * @see #getComment() + * @generated + * @ordered + */ + protected static final String COMMENT_EDEFAULT = null; + + /** + * The cached value of the '{@link #getComment() Comment}' attribute. + * + * + * @see #getComment() + * @generated + * @ordered + */ + protected String comment = COMMENT_EDEFAULT; + + /** + * + * + * @generated + */ + protected VLSTermImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_TERM; + } + + /** + * + * + * @generated + */ + public String getComment() + { + return comment; + } + + /** + * + * + * @generated + */ + public void setComment(String newComment) + { + String oldComment = comment; + comment = newComment; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TERM__COMMENT, oldComment, comment)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TERM__COMMENT: + return getComment(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TERM__COMMENT: + setComment((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TERM__COMMENT: + setComment(COMMENT_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TERM__COMMENT: + return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (comment: "); + result.append(comment); + result.append(')'); + return result.toString(); + } + +} //VLSTermImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTffFormulaImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTffFormulaImpl.java new file mode 100644 index 000000000..d1ab6e939 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTffFormulaImpl.java @@ -0,0 +1,394 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'VLS Tff Formula'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl#getName Name}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl#getTffRole Tff Role}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl#getFofFormula Fof Formula}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTffFormulaImpl#getAnnotations Annotations}
  • + *
+ * + * @generated + */ +public class VLSTffFormulaImpl extends MinimalEObjectImpl.Container implements VLSTffFormula +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The default value of the '{@link #getTffRole() Tff Role}' attribute. + * + * + * @see #getTffRole() + * @generated + * @ordered + */ + protected static final String TFF_ROLE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getTffRole() Tff Role}' attribute. + * + * + * @see #getTffRole() + * @generated + * @ordered + */ + protected String tffRole = TFF_ROLE_EDEFAULT; + + /** + * The cached value of the '{@link #getFofFormula() Fof Formula}' containment reference. + * + * + * @see #getFofFormula() + * @generated + * @ordered + */ + protected VLSTffTerm fofFormula; + + /** + * The cached value of the '{@link #getAnnotations() Annotations}' containment reference. + * + * + * @see #getAnnotations() + * @generated + * @ordered + */ + protected VLSAnnotation annotations; + + /** + * + * + * @generated + */ + protected VLSTffFormulaImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_TFF_FORMULA; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TFF_FORMULA__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + public String getTffRole() + { + return tffRole; + } + + /** + * + * + * @generated + */ + public void setTffRole(String newTffRole) + { + String oldTffRole = tffRole; + tffRole = newTffRole; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TFF_FORMULA__TFF_ROLE, oldTffRole, tffRole)); + } + + /** + * + * + * @generated + */ + public VLSTffTerm getFofFormula() + { + return fofFormula; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetFofFormula(VLSTffTerm newFofFormula, NotificationChain msgs) + { + VLSTffTerm oldFofFormula = fofFormula; + fofFormula = newFofFormula; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA, oldFofFormula, newFofFormula); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setFofFormula(VLSTffTerm newFofFormula) + { + if (newFofFormula != fofFormula) + { + NotificationChain msgs = null; + if (fofFormula != null) + msgs = ((InternalEObject)fofFormula).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA, null, msgs); + if (newFofFormula != null) + msgs = ((InternalEObject)newFofFormula).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA, null, msgs); + msgs = basicSetFofFormula(newFofFormula, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA, newFofFormula, newFofFormula)); + } + + /** + * + * + * @generated + */ + public VLSAnnotation getAnnotations() + { + return annotations; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetAnnotations(VLSAnnotation newAnnotations, NotificationChain msgs) + { + VLSAnnotation oldAnnotations = annotations; + annotations = newAnnotations; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS, oldAnnotations, newAnnotations); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setAnnotations(VLSAnnotation newAnnotations) + { + if (newAnnotations != annotations) + { + NotificationChain msgs = null; + if (annotations != null) + msgs = ((InternalEObject)annotations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS, null, msgs); + if (newAnnotations != null) + msgs = ((InternalEObject)newAnnotations).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS, null, msgs); + msgs = basicSetAnnotations(newAnnotations, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS, newAnnotations, newAnnotations)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA: + return basicSetFofFormula(null, msgs); + case VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS: + return basicSetAnnotations(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TFF_FORMULA__NAME: + return getName(); + case VampireLanguagePackage.VLS_TFF_FORMULA__TFF_ROLE: + return getTffRole(); + case VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA: + return getFofFormula(); + case VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS: + return getAnnotations(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TFF_FORMULA__NAME: + setName((String)newValue); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA__TFF_ROLE: + setTffRole((String)newValue); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA: + setFofFormula((VLSTffTerm)newValue); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS: + setAnnotations((VLSAnnotation)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TFF_FORMULA__NAME: + setName(NAME_EDEFAULT); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA__TFF_ROLE: + setTffRole(TFF_ROLE_EDEFAULT); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA: + setFofFormula((VLSTffTerm)null); + return; + case VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS: + setAnnotations((VLSAnnotation)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TFF_FORMULA__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case VampireLanguagePackage.VLS_TFF_FORMULA__TFF_ROLE: + return TFF_ROLE_EDEFAULT == null ? tffRole != null : !TFF_ROLE_EDEFAULT.equals(tffRole); + case VampireLanguagePackage.VLS_TFF_FORMULA__FOF_FORMULA: + return fofFormula != null; + case VampireLanguagePackage.VLS_TFF_FORMULA__ANNOTATIONS: + return annotations != null; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(", tffRole: "); + result.append(tffRole); + result.append(')'); + return result.toString(); + } + +} //VLSTffFormulaImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTffTermImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTffTermImpl.java new file mode 100644 index 000000000..fc0743958 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTffTermImpl.java @@ -0,0 +1,43 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'VLS Tff Term'. + * + * + * @generated + */ +public class VLSTffTermImpl extends MinimalEObjectImpl.Container implements VLSTffTerm +{ + /** + * + * + * @generated + */ + protected VLSTffTermImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_TFF_TERM; + } + +} //VLSTffTermImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTrueImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTrueImpl.java new file mode 100644 index 000000000..859131391 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTrueImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS True'. + * + * + * @generated + */ +public class VLSTrueImpl extends VLSTermImpl implements VLSTrue +{ + /** + * + * + * @generated + */ + protected VLSTrueImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_TRUE; + } + +} //VLSTrueImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTryingImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTryingImpl.java new file mode 100644 index 000000000..77e5cc25c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTryingImpl.java @@ -0,0 +1,177 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Trying'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTryingImpl#getName Name}
  • + *
+ * + * @generated + */ +public class VLSTryingImpl extends VLSConfirmationsImpl implements VLSTrying +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * + * + * @generated + */ + protected VLSTryingImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_TRYING; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TRYING__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TRYING__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TRYING__NAME: + setName((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TRYING__NAME: + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TRYING__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //VLSTryingImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTypeDefImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTypeDefImpl.java new file mode 100644 index 000000000..d16f5fe4c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSTypeDefImpl.java @@ -0,0 +1,408 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'VLS Type Def'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl#getTypeSig Type Sig}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl#getMapsTo Maps To}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl#getInitType Init Type}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTypeDefImpl#getNextType Next Type}
  • + *
+ * + * @generated + */ +public class VLSTypeDefImpl extends MinimalEObjectImpl.Container implements VLSTypeDef +{ + /** + * The cached value of the '{@link #getTypeSig() Type Sig}' containment reference. + * + * + * @see #getTypeSig() + * @generated + * @ordered + */ + protected VLSTypeDef typeSig; + + /** + * The cached value of the '{@link #getMapsTo() Maps To}' containment reference. + * + * + * @see #getMapsTo() + * @generated + * @ordered + */ + protected VLSTerm mapsTo; + + /** + * The cached value of the '{@link #getInitType() Init Type}' containment reference. + * + * + * @see #getInitType() + * @generated + * @ordered + */ + protected VLSTerm initType; + + /** + * The cached value of the '{@link #getNextType() Next Type}' containment reference. + * + * + * @see #getNextType() + * @generated + * @ordered + */ + protected VLSTerm nextType; + + /** + * + * + * @generated + */ + protected VLSTypeDefImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_TYPE_DEF; + } + + /** + * + * + * @generated + */ + public VLSTypeDef getTypeSig() + { + return typeSig; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetTypeSig(VLSTypeDef newTypeSig, NotificationChain msgs) + { + VLSTypeDef oldTypeSig = typeSig; + typeSig = newTypeSig; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG, oldTypeSig, newTypeSig); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setTypeSig(VLSTypeDef newTypeSig) + { + if (newTypeSig != typeSig) + { + NotificationChain msgs = null; + if (typeSig != null) + msgs = ((InternalEObject)typeSig).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG, null, msgs); + if (newTypeSig != null) + msgs = ((InternalEObject)newTypeSig).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG, null, msgs); + msgs = basicSetTypeSig(newTypeSig, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG, newTypeSig, newTypeSig)); + } + + /** + * + * + * @generated + */ + public VLSTerm getMapsTo() + { + return mapsTo; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetMapsTo(VLSTerm newMapsTo, NotificationChain msgs) + { + VLSTerm oldMapsTo = mapsTo; + mapsTo = newMapsTo; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO, oldMapsTo, newMapsTo); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setMapsTo(VLSTerm newMapsTo) + { + if (newMapsTo != mapsTo) + { + NotificationChain msgs = null; + if (mapsTo != null) + msgs = ((InternalEObject)mapsTo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO, null, msgs); + if (newMapsTo != null) + msgs = ((InternalEObject)newMapsTo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO, null, msgs); + msgs = basicSetMapsTo(newMapsTo, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO, newMapsTo, newMapsTo)); + } + + /** + * + * + * @generated + */ + public VLSTerm getInitType() + { + return initType; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetInitType(VLSTerm newInitType, NotificationChain msgs) + { + VLSTerm oldInitType = initType; + initType = newInitType; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE, oldInitType, newInitType); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setInitType(VLSTerm newInitType) + { + if (newInitType != initType) + { + NotificationChain msgs = null; + if (initType != null) + msgs = ((InternalEObject)initType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE, null, msgs); + if (newInitType != null) + msgs = ((InternalEObject)newInitType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE, null, msgs); + msgs = basicSetInitType(newInitType, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE, newInitType, newInitType)); + } + + /** + * + * + * @generated + */ + public VLSTerm getNextType() + { + return nextType; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetNextType(VLSTerm newNextType, NotificationChain msgs) + { + VLSTerm oldNextType = nextType; + nextType = newNextType; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE, oldNextType, newNextType); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setNextType(VLSTerm newNextType) + { + if (newNextType != nextType) + { + NotificationChain msgs = null; + if (nextType != null) + msgs = ((InternalEObject)nextType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE, null, msgs); + if (newNextType != null) + msgs = ((InternalEObject)newNextType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE, null, msgs); + msgs = basicSetNextType(newNextType, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE, newNextType, newNextType)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG: + return basicSetTypeSig(null, msgs); + case VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO: + return basicSetMapsTo(null, msgs); + case VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE: + return basicSetInitType(null, msgs); + case VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE: + return basicSetNextType(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG: + return getTypeSig(); + case VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO: + return getMapsTo(); + case VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE: + return getInitType(); + case VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE: + return getNextType(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG: + setTypeSig((VLSTypeDef)newValue); + return; + case VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO: + setMapsTo((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE: + setInitType((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE: + setNextType((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG: + setTypeSig((VLSTypeDef)null); + return; + case VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO: + setMapsTo((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE: + setInitType((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE: + setNextType((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_TYPE_DEF__TYPE_SIG: + return typeSig != null; + case VampireLanguagePackage.VLS_TYPE_DEF__MAPS_TO: + return mapsTo != null; + case VampireLanguagePackage.VLS_TYPE_DEF__INIT_TYPE: + return initType != null; + case VampireLanguagePackage.VLS_TYPE_DEF__NEXT_TYPE: + return nextType != null; + } + return super.eIsSet(featureID); + } + +} //VLSTypeDefImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSUnaryNegationImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSUnaryNegationImpl.java new file mode 100644 index 000000000..c315f1895 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSUnaryNegationImpl.java @@ -0,0 +1,194 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Unary Negation'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUnaryNegationImpl#getOperand Operand}
  • + *
+ * + * @generated + */ +public class VLSUnaryNegationImpl extends VLSTermImpl implements VLSUnaryNegation +{ + /** + * The cached value of the '{@link #getOperand() Operand}' containment reference. + * + * + * @see #getOperand() + * @generated + * @ordered + */ + protected VLSTerm operand; + + /** + * + * + * @generated + */ + protected VLSUnaryNegationImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_UNARY_NEGATION; + } + + /** + * + * + * @generated + */ + public VLSTerm getOperand() + { + return operand; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetOperand(VLSTerm newOperand, NotificationChain msgs) + { + VLSTerm oldOperand = operand; + operand = newOperand; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND, oldOperand, newOperand); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setOperand(VLSTerm newOperand) + { + if (newOperand != operand) + { + NotificationChain msgs = null; + if (operand != null) + msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND, null, msgs); + if (newOperand != null) + msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND, null, msgs); + msgs = basicSetOperand(newOperand, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND, newOperand, newOperand)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND: + return basicSetOperand(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND: + return getOperand(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND: + setOperand((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND: + setOperand((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNARY_NEGATION__OPERAND: + return operand != null; + } + return super.eIsSet(featureID); + } + +} //VLSUnaryNegationImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSUniversalQuantifierImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSUniversalQuantifierImpl.java new file mode 100644 index 000000000..e3482fb80 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSUniversalQuantifierImpl.java @@ -0,0 +1,241 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'VLS Universal Quantifier'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUniversalQuantifierImpl#getVariables Variables}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUniversalQuantifierImpl#getOperand Operand}
  • + *
+ * + * @generated + */ +public class VLSUniversalQuantifierImpl extends VLSTermImpl implements VLSUniversalQuantifier +{ + /** + * The cached value of the '{@link #getVariables() Variables}' containment reference list. + * + * + * @see #getVariables() + * @generated + * @ordered + */ + protected EList variables; + + /** + * The cached value of the '{@link #getOperand() Operand}' containment reference. + * + * + * @see #getOperand() + * @generated + * @ordered + */ + protected VLSTerm operand; + + /** + * + * + * @generated + */ + protected VLSUniversalQuantifierImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_UNIVERSAL_QUANTIFIER; + } + + /** + * + * + * @generated + */ + public EList getVariables() + { + if (variables == null) + { + variables = new EObjectContainmentEList(VLSTffTerm.class, this, VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__VARIABLES); + } + return variables; + } + + /** + * + * + * @generated + */ + public VLSTerm getOperand() + { + return operand; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetOperand(VLSTerm newOperand, NotificationChain msgs) + { + VLSTerm oldOperand = operand; + operand = newOperand; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND, oldOperand, newOperand); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setOperand(VLSTerm newOperand) + { + if (newOperand != operand) + { + NotificationChain msgs = null; + if (operand != null) + msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND, null, msgs); + if (newOperand != null) + msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND, null, msgs); + msgs = basicSetOperand(newOperand, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND, newOperand, newOperand)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__VARIABLES: + return ((InternalEList)getVariables()).basicRemove(otherEnd, msgs); + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND: + return basicSetOperand(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__VARIABLES: + return getVariables(); + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND: + return getOperand(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__VARIABLES: + getVariables().clear(); + getVariables().addAll((Collection)newValue); + return; + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND: + setOperand((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__VARIABLES: + getVariables().clear(); + return; + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND: + setOperand((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__VARIABLES: + return variables != null && !variables.isEmpty(); + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER__OPERAND: + return operand != null; + } + return super.eIsSet(featureID); + } + +} //VLSUniversalQuantifierImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSVariableDeclarationImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSVariableDeclarationImpl.java new file mode 100644 index 000000000..5ebb84c7d --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSVariableDeclarationImpl.java @@ -0,0 +1,194 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Variable Declaration'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableDeclarationImpl#getName Name}
  • + *
+ * + * @generated + */ +public class VLSVariableDeclarationImpl extends VLSDeclarationImpl implements VLSVariableDeclaration +{ + /** + * The cached value of the '{@link #getName() Name}' containment reference. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected VLSVariable name; + + /** + * + * + * @generated + */ + protected VLSVariableDeclarationImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_VARIABLE_DECLARATION; + } + + /** + * + * + * @generated + */ + public VLSVariable getName() + { + return name; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetName(VLSVariable newName, NotificationChain msgs) + { + VLSVariable oldName = name; + name = newName; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME, oldName, newName); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setName(VLSVariable newName) + { + if (newName != name) + { + NotificationChain msgs = null; + if (name != null) + msgs = ((InternalEObject)name).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME, null, msgs); + if (newName != null) + msgs = ((InternalEObject)newName).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME, null, msgs); + msgs = basicSetName(newName, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME, newName, newName)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME: + return basicSetName(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME: + setName((VLSVariable)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME: + setName((VLSVariable)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION__NAME: + return name != null; + } + return super.eIsSet(featureID); + } + +} //VLSVariableDeclarationImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSVariableImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSVariableImpl.java new file mode 100644 index 000000000..9ebed3eb0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSVariableImpl.java @@ -0,0 +1,177 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Variable'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSVariableImpl#getName Name}
  • + *
+ * + * @generated + */ +public class VLSVariableImpl extends VLSTermImpl implements VLSVariable +{ + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * + * + * @generated + */ + protected VLSVariableImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_VARIABLE; + } + + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_VARIABLE__NAME, oldName, name)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE__NAME: + setName((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE__NAME: + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_VARIABLE__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() + { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //VLSVariableImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSWarningImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSWarningImpl.java new file mode 100644 index 000000000..34cb784d5 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSWarningImpl.java @@ -0,0 +1,41 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'VLS Warning'. + * + * + * @generated + */ +public class VLSWarningImpl extends VLSConfirmationsImpl implements VLSWarning +{ + /** + * + * + * @generated + */ + protected VLSWarningImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_WARNING; + } + +} //VLSWarningImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSXnorImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSXnorImpl.java new file mode 100644 index 000000000..06b6bd929 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VLSXnorImpl.java @@ -0,0 +1,265 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'VLS Xnor'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSXnorImpl#getLeft Left}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSXnorImpl#getRight Right}
  • + *
+ * + * @generated + */ +public class VLSXnorImpl extends VLSTermImpl implements VLSXnor +{ + /** + * The cached value of the '{@link #getLeft() Left}' containment reference. + * + * + * @see #getLeft() + * @generated + * @ordered + */ + protected VLSTerm left; + + /** + * The cached value of the '{@link #getRight() Right}' containment reference. + * + * + * @see #getRight() + * @generated + * @ordered + */ + protected VLSTerm right; + + /** + * + * + * @generated + */ + protected VLSXnorImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VLS_XNOR; + } + + /** + * + * + * @generated + */ + public VLSTerm getLeft() + { + return left; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetLeft(VLSTerm newLeft, NotificationChain msgs) + { + VLSTerm oldLeft = left; + left = newLeft; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_XNOR__LEFT, oldLeft, newLeft); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setLeft(VLSTerm newLeft) + { + if (newLeft != left) + { + NotificationChain msgs = null; + if (left != null) + msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_XNOR__LEFT, null, msgs); + if (newLeft != null) + msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_XNOR__LEFT, null, msgs); + msgs = basicSetLeft(newLeft, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_XNOR__LEFT, newLeft, newLeft)); + } + + /** + * + * + * @generated + */ + public VLSTerm getRight() + { + return right; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRight(VLSTerm newRight, NotificationChain msgs) + { + VLSTerm oldRight = right; + right = newRight; + if (eNotificationRequired()) + { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_XNOR__RIGHT, oldRight, newRight); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRight(VLSTerm newRight) + { + if (newRight != right) + { + NotificationChain msgs = null; + if (right != null) + msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_XNOR__RIGHT, null, msgs); + if (newRight != null) + msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VampireLanguagePackage.VLS_XNOR__RIGHT, null, msgs); + msgs = basicSetRight(newRight, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, VampireLanguagePackage.VLS_XNOR__RIGHT, newRight, newRight)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_XNOR__LEFT: + return basicSetLeft(null, msgs); + case VampireLanguagePackage.VLS_XNOR__RIGHT: + return basicSetRight(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_XNOR__LEFT: + return getLeft(); + case VampireLanguagePackage.VLS_XNOR__RIGHT: + return getRight(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_XNOR__LEFT: + setLeft((VLSTerm)newValue); + return; + case VampireLanguagePackage.VLS_XNOR__RIGHT: + setRight((VLSTerm)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_XNOR__LEFT: + setLeft((VLSTerm)null); + return; + case VampireLanguagePackage.VLS_XNOR__RIGHT: + setRight((VLSTerm)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VLS_XNOR__LEFT: + return left != null; + case VampireLanguagePackage.VLS_XNOR__RIGHT: + return right != null; + } + return super.eIsSet(featureID); + } + +} //VLSXnorImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireLanguageFactoryImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireLanguageFactoryImpl.java new file mode 100644 index 000000000..c87155c9c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireLanguageFactoryImpl.java @@ -0,0 +1,575 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class VampireLanguageFactoryImpl extends EFactoryImpl implements VampireLanguageFactory +{ + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static VampireLanguageFactory init() + { + try + { + VampireLanguageFactory theVampireLanguageFactory = (VampireLanguageFactory)EPackage.Registry.INSTANCE.getEFactory(VampireLanguagePackage.eNS_URI); + if (theVampireLanguageFactory != null) + { + return theVampireLanguageFactory; + } + } + catch (Exception exception) + { + EcorePlugin.INSTANCE.log(exception); + } + return new VampireLanguageFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public VampireLanguageFactoryImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) + { + switch (eClass.getClassifierID()) + { + case VampireLanguagePackage.VAMPIRE_MODEL: return createVampireModel(); + case VampireLanguagePackage.VLS_COMMENT: return createVLSComment(); + case VampireLanguagePackage.VLS_CONFIRMATIONS: return createVLSConfirmations(); + case VampireLanguagePackage.VLS_FOF_FORMULA: return createVLSFofFormula(); + case VampireLanguagePackage.VLS_TFF_FORMULA: return createVLSTffFormula(); + case VampireLanguagePackage.VLS_ANNOTATION: return createVLSAnnotation(); + case VampireLanguagePackage.VLS_TFF_TERM: return createVLSTffTerm(); + case VampireLanguagePackage.VLS_TERM: return createVLSTerm(); + case VampireLanguagePackage.VLS_DECLARATION: return createVLSDeclaration(); + case VampireLanguagePackage.VLS_OTHER_DECLARATION: return createVLSOtherDeclaration(); + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION: return createVLSVariableDeclaration(); + case VampireLanguagePackage.VLS_TYPE_DEF: return createVLSTypeDef(); + case VampireLanguagePackage.VLS_VARIABLE: return createVLSVariable(); + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM: return createVLSFunctionAsTerm(); + case VampireLanguagePackage.VLS_DEFINED_TERM: return createVLSDefinedTerm(); + case VampireLanguagePackage.VLS_SATISFIABLE: return createVLSSatisfiable(); + case VampireLanguagePackage.VLS_WARNING: return createVLSWarning(); + case VampireLanguagePackage.VLS_TRYING: return createVLSTrying(); + case VampireLanguagePackage.VLS_FINITE_MODEL: return createVLSFiniteModel(); + case VampireLanguagePackage.VLS_EQUIVALENT: return createVLSEquivalent(); + case VampireLanguagePackage.VLS_IMPLIES: return createVLSImplies(); + case VampireLanguagePackage.VLS_REV_IMPLIES: return createVLSRevImplies(); + case VampireLanguagePackage.VLS_XNOR: return createVLSXnor(); + case VampireLanguagePackage.VLS_NOR: return createVLSNor(); + case VampireLanguagePackage.VLS_NAND: return createVLSNand(); + case VampireLanguagePackage.VLS_AND: return createVLSAnd(); + case VampireLanguagePackage.VLS_OR: return createVLSOr(); + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER: return createVLSUniversalQuantifier(); + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER: return createVLSExistentialQuantifier(); + case VampireLanguagePackage.VLS_UNARY_NEGATION: return createVLSUnaryNegation(); + case VampireLanguagePackage.VLS_INEQUALITY: return createVLSInequality(); + case VampireLanguagePackage.VLS_EQUALITY: return createVLSEquality(); + case VampireLanguagePackage.VLS_ASSIGNMENT: return createVLSAssignment(); + case VampireLanguagePackage.VLS_CONSTANT: return createVLSConstant(); + case VampireLanguagePackage.VLS_TRUE: return createVLSTrue(); + case VampireLanguagePackage.VLS_FALSE: return createVLSFalse(); + case VampireLanguagePackage.VLS_FUNCTION: return createVLSFunction(); + case VampireLanguagePackage.VLS_LESS: return createVLSLess(); + case VampireLanguagePackage.VLS_INT: return createVLSInt(); + case VampireLanguagePackage.VLS_DOUBLE_QUOTE: return createVLSDoubleQuote(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public VampireModel createVampireModel() + { + VampireModelImpl vampireModel = new VampireModelImpl(); + return vampireModel; + } + + /** + * + * + * @generated + */ + public VLSComment createVLSComment() + { + VLSCommentImpl vlsComment = new VLSCommentImpl(); + return vlsComment; + } + + /** + * + * + * @generated + */ + public VLSConfirmations createVLSConfirmations() + { + VLSConfirmationsImpl vlsConfirmations = new VLSConfirmationsImpl(); + return vlsConfirmations; + } + + /** + * + * + * @generated + */ + public VLSFofFormula createVLSFofFormula() + { + VLSFofFormulaImpl vlsFofFormula = new VLSFofFormulaImpl(); + return vlsFofFormula; + } + + /** + * + * + * @generated + */ + public VLSTffFormula createVLSTffFormula() + { + VLSTffFormulaImpl vlsTffFormula = new VLSTffFormulaImpl(); + return vlsTffFormula; + } + + /** + * + * + * @generated + */ + public VLSAnnotation createVLSAnnotation() + { + VLSAnnotationImpl vlsAnnotation = new VLSAnnotationImpl(); + return vlsAnnotation; + } + + /** + * + * + * @generated + */ + public VLSTffTerm createVLSTffTerm() + { + VLSTffTermImpl vlsTffTerm = new VLSTffTermImpl(); + return vlsTffTerm; + } + + /** + * + * + * @generated + */ + public VLSTerm createVLSTerm() + { + VLSTermImpl vlsTerm = new VLSTermImpl(); + return vlsTerm; + } + + /** + * + * + * @generated + */ + public VLSDeclaration createVLSDeclaration() + { + VLSDeclarationImpl vlsDeclaration = new VLSDeclarationImpl(); + return vlsDeclaration; + } + + /** + * + * + * @generated + */ + public VLSOtherDeclaration createVLSOtherDeclaration() + { + VLSOtherDeclarationImpl vlsOtherDeclaration = new VLSOtherDeclarationImpl(); + return vlsOtherDeclaration; + } + + /** + * + * + * @generated + */ + public VLSVariableDeclaration createVLSVariableDeclaration() + { + VLSVariableDeclarationImpl vlsVariableDeclaration = new VLSVariableDeclarationImpl(); + return vlsVariableDeclaration; + } + + /** + * + * + * @generated + */ + public VLSTypeDef createVLSTypeDef() + { + VLSTypeDefImpl vlsTypeDef = new VLSTypeDefImpl(); + return vlsTypeDef; + } + + /** + * + * + * @generated + */ + public VLSVariable createVLSVariable() + { + VLSVariableImpl vlsVariable = new VLSVariableImpl(); + return vlsVariable; + } + + /** + * + * + * @generated + */ + public VLSFunctionAsTerm createVLSFunctionAsTerm() + { + VLSFunctionAsTermImpl vlsFunctionAsTerm = new VLSFunctionAsTermImpl(); + return vlsFunctionAsTerm; + } + + /** + * + * + * @generated + */ + public VLSDefinedTerm createVLSDefinedTerm() + { + VLSDefinedTermImpl vlsDefinedTerm = new VLSDefinedTermImpl(); + return vlsDefinedTerm; + } + + /** + * + * + * @generated + */ + public VLSSatisfiable createVLSSatisfiable() + { + VLSSatisfiableImpl vlsSatisfiable = new VLSSatisfiableImpl(); + return vlsSatisfiable; + } + + /** + * + * + * @generated + */ + public VLSWarning createVLSWarning() + { + VLSWarningImpl vlsWarning = new VLSWarningImpl(); + return vlsWarning; + } + + /** + * + * + * @generated + */ + public VLSTrying createVLSTrying() + { + VLSTryingImpl vlsTrying = new VLSTryingImpl(); + return vlsTrying; + } + + /** + * + * + * @generated + */ + public VLSFiniteModel createVLSFiniteModel() + { + VLSFiniteModelImpl vlsFiniteModel = new VLSFiniteModelImpl(); + return vlsFiniteModel; + } + + /** + * + * + * @generated + */ + public VLSEquivalent createVLSEquivalent() + { + VLSEquivalentImpl vlsEquivalent = new VLSEquivalentImpl(); + return vlsEquivalent; + } + + /** + * + * + * @generated + */ + public VLSImplies createVLSImplies() + { + VLSImpliesImpl vlsImplies = new VLSImpliesImpl(); + return vlsImplies; + } + + /** + * + * + * @generated + */ + public VLSRevImplies createVLSRevImplies() + { + VLSRevImpliesImpl vlsRevImplies = new VLSRevImpliesImpl(); + return vlsRevImplies; + } + + /** + * + * + * @generated + */ + public VLSXnor createVLSXnor() + { + VLSXnorImpl vlsXnor = new VLSXnorImpl(); + return vlsXnor; + } + + /** + * + * + * @generated + */ + public VLSNor createVLSNor() + { + VLSNorImpl vlsNor = new VLSNorImpl(); + return vlsNor; + } + + /** + * + * + * @generated + */ + public VLSNand createVLSNand() + { + VLSNandImpl vlsNand = new VLSNandImpl(); + return vlsNand; + } + + /** + * + * + * @generated + */ + public VLSAnd createVLSAnd() + { + VLSAndImpl vlsAnd = new VLSAndImpl(); + return vlsAnd; + } + + /** + * + * + * @generated + */ + public VLSOr createVLSOr() + { + VLSOrImpl vlsOr = new VLSOrImpl(); + return vlsOr; + } + + /** + * + * + * @generated + */ + public VLSUniversalQuantifier createVLSUniversalQuantifier() + { + VLSUniversalQuantifierImpl vlsUniversalQuantifier = new VLSUniversalQuantifierImpl(); + return vlsUniversalQuantifier; + } + + /** + * + * + * @generated + */ + public VLSExistentialQuantifier createVLSExistentialQuantifier() + { + VLSExistentialQuantifierImpl vlsExistentialQuantifier = new VLSExistentialQuantifierImpl(); + return vlsExistentialQuantifier; + } + + /** + * + * + * @generated + */ + public VLSUnaryNegation createVLSUnaryNegation() + { + VLSUnaryNegationImpl vlsUnaryNegation = new VLSUnaryNegationImpl(); + return vlsUnaryNegation; + } + + /** + * + * + * @generated + */ + public VLSInequality createVLSInequality() + { + VLSInequalityImpl vlsInequality = new VLSInequalityImpl(); + return vlsInequality; + } + + /** + * + * + * @generated + */ + public VLSEquality createVLSEquality() + { + VLSEqualityImpl vlsEquality = new VLSEqualityImpl(); + return vlsEquality; + } + + /** + * + * + * @generated + */ + public VLSAssignment createVLSAssignment() + { + VLSAssignmentImpl vlsAssignment = new VLSAssignmentImpl(); + return vlsAssignment; + } + + /** + * + * + * @generated + */ + public VLSConstant createVLSConstant() + { + VLSConstantImpl vlsConstant = new VLSConstantImpl(); + return vlsConstant; + } + + /** + * + * + * @generated + */ + public VLSTrue createVLSTrue() + { + VLSTrueImpl vlsTrue = new VLSTrueImpl(); + return vlsTrue; + } + + /** + * + * + * @generated + */ + public VLSFalse createVLSFalse() + { + VLSFalseImpl vlsFalse = new VLSFalseImpl(); + return vlsFalse; + } + + /** + * + * + * @generated + */ + public VLSFunction createVLSFunction() + { + VLSFunctionImpl vlsFunction = new VLSFunctionImpl(); + return vlsFunction; + } + + /** + * + * + * @generated + */ + public VLSLess createVLSLess() + { + VLSLessImpl vlsLess = new VLSLessImpl(); + return vlsLess; + } + + /** + * + * + * @generated + */ + public VLSInt createVLSInt() + { + VLSIntImpl vlsInt = new VLSIntImpl(); + return vlsInt; + } + + /** + * + * + * @generated + */ + public VLSDoubleQuote createVLSDoubleQuote() + { + VLSDoubleQuoteImpl vlsDoubleQuote = new VLSDoubleQuoteImpl(); + return vlsDoubleQuote; + } + + /** + * + * + * @generated + */ + public VampireLanguagePackage getVampireLanguagePackage() + { + return (VampireLanguagePackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static VampireLanguagePackage getPackage() + { + return VampireLanguagePackage.eINSTANCE; + } + +} //VampireLanguageFactoryImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireLanguagePackageImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireLanguagePackageImpl.java new file mode 100644 index 000000000..eae57e97c --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireLanguagePackageImpl.java @@ -0,0 +1,1797 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class VampireLanguagePackageImpl extends EPackageImpl implements VampireLanguagePackage +{ + /** + * + * + * @generated + */ + private EClass vampireModelEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsCommentEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsConfirmationsEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsFofFormulaEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsTffFormulaEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsAnnotationEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsTffTermEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsTermEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsDeclarationEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsOtherDeclarationEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsVariableDeclarationEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsTypeDefEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsVariableEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsFunctionAsTermEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsDefinedTermEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsSatisfiableEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsWarningEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsTryingEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsFiniteModelEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsEquivalentEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsImpliesEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsRevImpliesEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsXnorEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsNorEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsNandEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsAndEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsOrEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsUniversalQuantifierEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsExistentialQuantifierEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsUnaryNegationEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsInequalityEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsEqualityEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsAssignmentEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsConstantEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsTrueEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsFalseEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsFunctionEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsLessEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsIntEClass = null; + + /** + * + * + * @generated + */ + private EClass vlsDoubleQuoteEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage#eNS_URI + * @see #init() + * @generated + */ + private VampireLanguagePackageImpl() + { + super(eNS_URI, VampireLanguageFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link VampireLanguagePackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static VampireLanguagePackage init() + { + if (isInited) return (VampireLanguagePackage)EPackage.Registry.INSTANCE.getEPackage(VampireLanguagePackage.eNS_URI); + + // Obtain or create and register package + Object registeredVampireLanguagePackage = EPackage.Registry.INSTANCE.get(eNS_URI); + VampireLanguagePackageImpl theVampireLanguagePackage = registeredVampireLanguagePackage instanceof VampireLanguagePackageImpl ? (VampireLanguagePackageImpl)registeredVampireLanguagePackage : new VampireLanguagePackageImpl(); + + isInited = true; + + // Create package meta-data objects + theVampireLanguagePackage.createPackageContents(); + + // Initialize created meta-data + theVampireLanguagePackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theVampireLanguagePackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(VampireLanguagePackage.eNS_URI, theVampireLanguagePackage); + return theVampireLanguagePackage; + } + + /** + * + * + * @generated + */ + public EClass getVampireModel() + { + return vampireModelEClass; + } + + /** + * + * + * @generated + */ + public EReference getVampireModel_Comments() + { + return (EReference)vampireModelEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVampireModel_Confirmations() + { + return (EReference)vampireModelEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getVampireModel_Formulas() + { + return (EReference)vampireModelEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EReference getVampireModel_Tfformulas() + { + return (EReference)vampireModelEClass.getEStructuralFeatures().get(3); + } + + /** + * + * + * @generated + */ + public EClass getVLSComment() + { + return vlsCommentEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSComment_Comment() + { + return (EAttribute)vlsCommentEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSConfirmations() + { + return vlsConfirmationsEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSFofFormula() + { + return vlsFofFormulaEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSFofFormula_Name() + { + return (EAttribute)vlsFofFormulaEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getVLSFofFormula_FofRole() + { + return (EAttribute)vlsFofFormulaEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getVLSFofFormula_FofFormula() + { + return (EReference)vlsFofFormulaEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EReference getVLSFofFormula_Annotations() + { + return (EReference)vlsFofFormulaEClass.getEStructuralFeatures().get(3); + } + + /** + * + * + * @generated + */ + public EClass getVLSTffFormula() + { + return vlsTffFormulaEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSTffFormula_Name() + { + return (EAttribute)vlsTffFormulaEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getVLSTffFormula_TffRole() + { + return (EAttribute)vlsTffFormulaEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getVLSTffFormula_FofFormula() + { + return (EReference)vlsTffFormulaEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EReference getVLSTffFormula_Annotations() + { + return (EReference)vlsTffFormulaEClass.getEStructuralFeatures().get(3); + } + + /** + * + * + * @generated + */ + public EClass getVLSAnnotation() + { + return vlsAnnotationEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSAnnotation_Name() + { + return (EAttribute)vlsAnnotationEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSAnnotation_Followup() + { + return (EReference)vlsAnnotationEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getVLSAnnotation_Terms() + { + return (EReference)vlsAnnotationEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EClass getVLSTffTerm() + { + return vlsTffTermEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSTerm() + { + return vlsTermEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSTerm_Comment() + { + return (EAttribute)vlsTermEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSDeclaration() + { + return vlsDeclarationEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSDeclaration_Type() + { + return (EReference)vlsDeclarationEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSOtherDeclaration() + { + return vlsOtherDeclarationEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSOtherDeclaration_Name() + { + return (EReference)vlsOtherDeclarationEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSVariableDeclaration() + { + return vlsVariableDeclarationEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSVariableDeclaration_Name() + { + return (EReference)vlsVariableDeclarationEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSTypeDef() + { + return vlsTypeDefEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSTypeDef_TypeSig() + { + return (EReference)vlsTypeDefEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSTypeDef_MapsTo() + { + return (EReference)vlsTypeDefEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getVLSTypeDef_InitType() + { + return (EReference)vlsTypeDefEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EReference getVLSTypeDef_NextType() + { + return (EReference)vlsTypeDefEClass.getEStructuralFeatures().get(3); + } + + /** + * + * + * @generated + */ + public EClass getVLSVariable() + { + return vlsVariableEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSVariable_Name() + { + return (EAttribute)vlsVariableEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSFunctionAsTerm() + { + return vlsFunctionAsTermEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSFunctionAsTerm_Functor() + { + return (EAttribute)vlsFunctionAsTermEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSFunctionAsTerm_Terms() + { + return (EReference)vlsFunctionAsTermEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSDefinedTerm() + { + return vlsDefinedTermEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSDefinedTerm_Value() + { + return (EAttribute)vlsDefinedTermEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSSatisfiable() + { + return vlsSatisfiableEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSWarning() + { + return vlsWarningEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSTrying() + { + return vlsTryingEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSTrying_Name() + { + return (EAttribute)vlsTryingEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSFiniteModel() + { + return vlsFiniteModelEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSEquivalent() + { + return vlsEquivalentEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSEquivalent_Left() + { + return (EReference)vlsEquivalentEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSEquivalent_Right() + { + return (EReference)vlsEquivalentEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSImplies() + { + return vlsImpliesEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSImplies_Left() + { + return (EReference)vlsImpliesEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSImplies_Right() + { + return (EReference)vlsImpliesEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSRevImplies() + { + return vlsRevImpliesEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSRevImplies_Left() + { + return (EReference)vlsRevImpliesEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSRevImplies_Right() + { + return (EReference)vlsRevImpliesEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSXnor() + { + return vlsXnorEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSXnor_Left() + { + return (EReference)vlsXnorEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSXnor_Right() + { + return (EReference)vlsXnorEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSNor() + { + return vlsNorEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSNor_Left() + { + return (EReference)vlsNorEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSNor_Right() + { + return (EReference)vlsNorEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSNand() + { + return vlsNandEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSNand_Left() + { + return (EReference)vlsNandEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSNand_Right() + { + return (EReference)vlsNandEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSAnd() + { + return vlsAndEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSAnd_Left() + { + return (EReference)vlsAndEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSAnd_Right() + { + return (EReference)vlsAndEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSOr() + { + return vlsOrEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSOr_Left() + { + return (EReference)vlsOrEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSOr_Right() + { + return (EReference)vlsOrEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSUniversalQuantifier() + { + return vlsUniversalQuantifierEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSUniversalQuantifier_Variables() + { + return (EReference)vlsUniversalQuantifierEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSUniversalQuantifier_Operand() + { + return (EReference)vlsUniversalQuantifierEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSExistentialQuantifier() + { + return vlsExistentialQuantifierEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSExistentialQuantifier_Variables() + { + return (EReference)vlsExistentialQuantifierEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSExistentialQuantifier_Operand() + { + return (EReference)vlsExistentialQuantifierEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSUnaryNegation() + { + return vlsUnaryNegationEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSUnaryNegation_Operand() + { + return (EReference)vlsUnaryNegationEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSInequality() + { + return vlsInequalityEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSInequality_Left() + { + return (EReference)vlsInequalityEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSInequality_Right() + { + return (EReference)vlsInequalityEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSEquality() + { + return vlsEqualityEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSEquality_Left() + { + return (EReference)vlsEqualityEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSEquality_Right() + { + return (EReference)vlsEqualityEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSAssignment() + { + return vlsAssignmentEClass; + } + + /** + * + * + * @generated + */ + public EReference getVLSAssignment_Left() + { + return (EReference)vlsAssignmentEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSAssignment_Right() + { + return (EReference)vlsAssignmentEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSConstant() + { + return vlsConstantEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSConstant_Name() + { + return (EAttribute)vlsConstantEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVLSTrue() + { + return vlsTrueEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSFalse() + { + return vlsFalseEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSFunction() + { + return vlsFunctionEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSFunction_Constant() + { + return (EAttribute)vlsFunctionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSFunction_Terms() + { + return (EReference)vlsFunctionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSLess() + { + return vlsLessEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getVLSLess_Name() + { + return (EAttribute)vlsLessEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVLSLess_Terms() + { + return (EReference)vlsLessEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getVLSInt() + { + return vlsIntEClass; + } + + /** + * + * + * @generated + */ + public EClass getVLSDoubleQuote() + { + return vlsDoubleQuoteEClass; + } + + /** + * + * + * @generated + */ + public VampireLanguageFactory getVampireLanguageFactory() + { + return (VampireLanguageFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() + { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + vampireModelEClass = createEClass(VAMPIRE_MODEL); + createEReference(vampireModelEClass, VAMPIRE_MODEL__COMMENTS); + createEReference(vampireModelEClass, VAMPIRE_MODEL__CONFIRMATIONS); + createEReference(vampireModelEClass, VAMPIRE_MODEL__FORMULAS); + createEReference(vampireModelEClass, VAMPIRE_MODEL__TFFORMULAS); + + vlsCommentEClass = createEClass(VLS_COMMENT); + createEAttribute(vlsCommentEClass, VLS_COMMENT__COMMENT); + + vlsConfirmationsEClass = createEClass(VLS_CONFIRMATIONS); + + vlsFofFormulaEClass = createEClass(VLS_FOF_FORMULA); + createEAttribute(vlsFofFormulaEClass, VLS_FOF_FORMULA__NAME); + createEAttribute(vlsFofFormulaEClass, VLS_FOF_FORMULA__FOF_ROLE); + createEReference(vlsFofFormulaEClass, VLS_FOF_FORMULA__FOF_FORMULA); + createEReference(vlsFofFormulaEClass, VLS_FOF_FORMULA__ANNOTATIONS); + + vlsTffFormulaEClass = createEClass(VLS_TFF_FORMULA); + createEAttribute(vlsTffFormulaEClass, VLS_TFF_FORMULA__NAME); + createEAttribute(vlsTffFormulaEClass, VLS_TFF_FORMULA__TFF_ROLE); + createEReference(vlsTffFormulaEClass, VLS_TFF_FORMULA__FOF_FORMULA); + createEReference(vlsTffFormulaEClass, VLS_TFF_FORMULA__ANNOTATIONS); + + vlsAnnotationEClass = createEClass(VLS_ANNOTATION); + createEAttribute(vlsAnnotationEClass, VLS_ANNOTATION__NAME); + createEReference(vlsAnnotationEClass, VLS_ANNOTATION__FOLLOWUP); + createEReference(vlsAnnotationEClass, VLS_ANNOTATION__TERMS); + + vlsTffTermEClass = createEClass(VLS_TFF_TERM); + + vlsTermEClass = createEClass(VLS_TERM); + createEAttribute(vlsTermEClass, VLS_TERM__COMMENT); + + vlsDeclarationEClass = createEClass(VLS_DECLARATION); + createEReference(vlsDeclarationEClass, VLS_DECLARATION__TYPE); + + vlsOtherDeclarationEClass = createEClass(VLS_OTHER_DECLARATION); + createEReference(vlsOtherDeclarationEClass, VLS_OTHER_DECLARATION__NAME); + + vlsVariableDeclarationEClass = createEClass(VLS_VARIABLE_DECLARATION); + createEReference(vlsVariableDeclarationEClass, VLS_VARIABLE_DECLARATION__NAME); + + vlsTypeDefEClass = createEClass(VLS_TYPE_DEF); + createEReference(vlsTypeDefEClass, VLS_TYPE_DEF__TYPE_SIG); + createEReference(vlsTypeDefEClass, VLS_TYPE_DEF__MAPS_TO); + createEReference(vlsTypeDefEClass, VLS_TYPE_DEF__INIT_TYPE); + createEReference(vlsTypeDefEClass, VLS_TYPE_DEF__NEXT_TYPE); + + vlsVariableEClass = createEClass(VLS_VARIABLE); + createEAttribute(vlsVariableEClass, VLS_VARIABLE__NAME); + + vlsFunctionAsTermEClass = createEClass(VLS_FUNCTION_AS_TERM); + createEAttribute(vlsFunctionAsTermEClass, VLS_FUNCTION_AS_TERM__FUNCTOR); + createEReference(vlsFunctionAsTermEClass, VLS_FUNCTION_AS_TERM__TERMS); + + vlsDefinedTermEClass = createEClass(VLS_DEFINED_TERM); + createEAttribute(vlsDefinedTermEClass, VLS_DEFINED_TERM__VALUE); + + vlsSatisfiableEClass = createEClass(VLS_SATISFIABLE); + + vlsWarningEClass = createEClass(VLS_WARNING); + + vlsTryingEClass = createEClass(VLS_TRYING); + createEAttribute(vlsTryingEClass, VLS_TRYING__NAME); + + vlsFiniteModelEClass = createEClass(VLS_FINITE_MODEL); + + vlsEquivalentEClass = createEClass(VLS_EQUIVALENT); + createEReference(vlsEquivalentEClass, VLS_EQUIVALENT__LEFT); + createEReference(vlsEquivalentEClass, VLS_EQUIVALENT__RIGHT); + + vlsImpliesEClass = createEClass(VLS_IMPLIES); + createEReference(vlsImpliesEClass, VLS_IMPLIES__LEFT); + createEReference(vlsImpliesEClass, VLS_IMPLIES__RIGHT); + + vlsRevImpliesEClass = createEClass(VLS_REV_IMPLIES); + createEReference(vlsRevImpliesEClass, VLS_REV_IMPLIES__LEFT); + createEReference(vlsRevImpliesEClass, VLS_REV_IMPLIES__RIGHT); + + vlsXnorEClass = createEClass(VLS_XNOR); + createEReference(vlsXnorEClass, VLS_XNOR__LEFT); + createEReference(vlsXnorEClass, VLS_XNOR__RIGHT); + + vlsNorEClass = createEClass(VLS_NOR); + createEReference(vlsNorEClass, VLS_NOR__LEFT); + createEReference(vlsNorEClass, VLS_NOR__RIGHT); + + vlsNandEClass = createEClass(VLS_NAND); + createEReference(vlsNandEClass, VLS_NAND__LEFT); + createEReference(vlsNandEClass, VLS_NAND__RIGHT); + + vlsAndEClass = createEClass(VLS_AND); + createEReference(vlsAndEClass, VLS_AND__LEFT); + createEReference(vlsAndEClass, VLS_AND__RIGHT); + + vlsOrEClass = createEClass(VLS_OR); + createEReference(vlsOrEClass, VLS_OR__LEFT); + createEReference(vlsOrEClass, VLS_OR__RIGHT); + + vlsUniversalQuantifierEClass = createEClass(VLS_UNIVERSAL_QUANTIFIER); + createEReference(vlsUniversalQuantifierEClass, VLS_UNIVERSAL_QUANTIFIER__VARIABLES); + createEReference(vlsUniversalQuantifierEClass, VLS_UNIVERSAL_QUANTIFIER__OPERAND); + + vlsExistentialQuantifierEClass = createEClass(VLS_EXISTENTIAL_QUANTIFIER); + createEReference(vlsExistentialQuantifierEClass, VLS_EXISTENTIAL_QUANTIFIER__VARIABLES); + createEReference(vlsExistentialQuantifierEClass, VLS_EXISTENTIAL_QUANTIFIER__OPERAND); + + vlsUnaryNegationEClass = createEClass(VLS_UNARY_NEGATION); + createEReference(vlsUnaryNegationEClass, VLS_UNARY_NEGATION__OPERAND); + + vlsInequalityEClass = createEClass(VLS_INEQUALITY); + createEReference(vlsInequalityEClass, VLS_INEQUALITY__LEFT); + createEReference(vlsInequalityEClass, VLS_INEQUALITY__RIGHT); + + vlsEqualityEClass = createEClass(VLS_EQUALITY); + createEReference(vlsEqualityEClass, VLS_EQUALITY__LEFT); + createEReference(vlsEqualityEClass, VLS_EQUALITY__RIGHT); + + vlsAssignmentEClass = createEClass(VLS_ASSIGNMENT); + createEReference(vlsAssignmentEClass, VLS_ASSIGNMENT__LEFT); + createEReference(vlsAssignmentEClass, VLS_ASSIGNMENT__RIGHT); + + vlsConstantEClass = createEClass(VLS_CONSTANT); + createEAttribute(vlsConstantEClass, VLS_CONSTANT__NAME); + + vlsTrueEClass = createEClass(VLS_TRUE); + + vlsFalseEClass = createEClass(VLS_FALSE); + + vlsFunctionEClass = createEClass(VLS_FUNCTION); + createEAttribute(vlsFunctionEClass, VLS_FUNCTION__CONSTANT); + createEReference(vlsFunctionEClass, VLS_FUNCTION__TERMS); + + vlsLessEClass = createEClass(VLS_LESS); + createEAttribute(vlsLessEClass, VLS_LESS__NAME); + createEReference(vlsLessEClass, VLS_LESS__TERMS); + + vlsIntEClass = createEClass(VLS_INT); + + vlsDoubleQuoteEClass = createEClass(VLS_DOUBLE_QUOTE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() + { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + vlsTermEClass.getESuperTypes().add(this.getVLSTffTerm()); + vlsDeclarationEClass.getESuperTypes().add(this.getVLSTffTerm()); + vlsOtherDeclarationEClass.getESuperTypes().add(this.getVLSDeclaration()); + vlsVariableDeclarationEClass.getESuperTypes().add(this.getVLSDeclaration()); + vlsVariableEClass.getESuperTypes().add(this.getVLSTerm()); + vlsFunctionAsTermEClass.getESuperTypes().add(this.getVLSTerm()); + vlsDefinedTermEClass.getESuperTypes().add(this.getVLSTerm()); + vlsSatisfiableEClass.getESuperTypes().add(this.getVLSConfirmations()); + vlsWarningEClass.getESuperTypes().add(this.getVLSConfirmations()); + vlsTryingEClass.getESuperTypes().add(this.getVLSConfirmations()); + vlsFiniteModelEClass.getESuperTypes().add(this.getVLSConfirmations()); + vlsEquivalentEClass.getESuperTypes().add(this.getVLSTerm()); + vlsImpliesEClass.getESuperTypes().add(this.getVLSTerm()); + vlsRevImpliesEClass.getESuperTypes().add(this.getVLSTerm()); + vlsXnorEClass.getESuperTypes().add(this.getVLSTerm()); + vlsNorEClass.getESuperTypes().add(this.getVLSTerm()); + vlsNandEClass.getESuperTypes().add(this.getVLSTerm()); + vlsAndEClass.getESuperTypes().add(this.getVLSTerm()); + vlsOrEClass.getESuperTypes().add(this.getVLSTerm()); + vlsUniversalQuantifierEClass.getESuperTypes().add(this.getVLSTerm()); + vlsExistentialQuantifierEClass.getESuperTypes().add(this.getVLSTerm()); + vlsUnaryNegationEClass.getESuperTypes().add(this.getVLSTerm()); + vlsInequalityEClass.getESuperTypes().add(this.getVLSTerm()); + vlsEqualityEClass.getESuperTypes().add(this.getVLSTerm()); + vlsAssignmentEClass.getESuperTypes().add(this.getVLSTerm()); + vlsConstantEClass.getESuperTypes().add(this.getVLSTerm()); + vlsTrueEClass.getESuperTypes().add(this.getVLSTerm()); + vlsFalseEClass.getESuperTypes().add(this.getVLSTerm()); + vlsFunctionEClass.getESuperTypes().add(this.getVLSTerm()); + vlsLessEClass.getESuperTypes().add(this.getVLSTerm()); + vlsIntEClass.getESuperTypes().add(this.getVLSDefinedTerm()); + vlsDoubleQuoteEClass.getESuperTypes().add(this.getVLSDefinedTerm()); + + // Initialize classes and features; add operations and parameters + initEClass(vampireModelEClass, VampireModel.class, "VampireModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVampireModel_Comments(), this.getVLSComment(), null, "comments", null, 0, -1, VampireModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVampireModel_Confirmations(), this.getVLSConfirmations(), null, "confirmations", null, 0, -1, VampireModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVampireModel_Formulas(), this.getVLSFofFormula(), null, "formulas", null, 0, -1, VampireModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVampireModel_Tfformulas(), this.getVLSTffFormula(), null, "tfformulas", null, 0, -1, VampireModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsCommentEClass, VLSComment.class, "VLSComment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSComment_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, VLSComment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsConfirmationsEClass, VLSConfirmations.class, "VLSConfirmations", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsFofFormulaEClass, VLSFofFormula.class, "VLSFofFormula", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSFofFormula_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSFofFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getVLSFofFormula_FofRole(), ecorePackage.getEString(), "fofRole", null, 0, 1, VLSFofFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSFofFormula_FofFormula(), this.getVLSTerm(), null, "fofFormula", null, 0, 1, VLSFofFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSFofFormula_Annotations(), this.getVLSAnnotation(), null, "annotations", null, 0, 1, VLSFofFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsTffFormulaEClass, VLSTffFormula.class, "VLSTffFormula", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSTffFormula_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSTffFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getVLSTffFormula_TffRole(), ecorePackage.getEString(), "tffRole", null, 0, 1, VLSTffFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSTffFormula_FofFormula(), this.getVLSTffTerm(), null, "fofFormula", null, 0, 1, VLSTffFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSTffFormula_Annotations(), this.getVLSAnnotation(), null, "annotations", null, 0, 1, VLSTffFormula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsAnnotationEClass, VLSAnnotation.class, "VLSAnnotation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSAnnotation_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSAnnotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSAnnotation_Followup(), this.getVLSAnnotation(), null, "followup", null, 0, 1, VLSAnnotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSAnnotation_Terms(), this.getVLSAnnotation(), null, "terms", null, 0, -1, VLSAnnotation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsTffTermEClass, VLSTffTerm.class, "VLSTffTerm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsTermEClass, VLSTerm.class, "VLSTerm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSTerm_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, VLSTerm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsDeclarationEClass, VLSDeclaration.class, "VLSDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSDeclaration_Type(), this.getVLSTypeDef(), null, "type", null, 0, 1, VLSDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsOtherDeclarationEClass, VLSOtherDeclaration.class, "VLSOtherDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSOtherDeclaration_Name(), this.getVLSTerm(), null, "name", null, 0, 1, VLSOtherDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsVariableDeclarationEClass, VLSVariableDeclaration.class, "VLSVariableDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSVariableDeclaration_Name(), this.getVLSVariable(), null, "name", null, 0, 1, VLSVariableDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsTypeDefEClass, VLSTypeDef.class, "VLSTypeDef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSTypeDef_TypeSig(), this.getVLSTypeDef(), null, "typeSig", null, 0, 1, VLSTypeDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSTypeDef_MapsTo(), this.getVLSTerm(), null, "mapsTo", null, 0, 1, VLSTypeDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSTypeDef_InitType(), this.getVLSTerm(), null, "initType", null, 0, 1, VLSTypeDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSTypeDef_NextType(), this.getVLSTerm(), null, "nextType", null, 0, 1, VLSTypeDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsVariableEClass, VLSVariable.class, "VLSVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSVariable_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsFunctionAsTermEClass, VLSFunctionAsTerm.class, "VLSFunctionAsTerm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSFunctionAsTerm_Functor(), ecorePackage.getEString(), "functor", null, 0, 1, VLSFunctionAsTerm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSFunctionAsTerm_Terms(), this.getVLSTerm(), null, "terms", null, 0, -1, VLSFunctionAsTerm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsDefinedTermEClass, VLSDefinedTerm.class, "VLSDefinedTerm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSDefinedTerm_Value(), ecorePackage.getEString(), "value", null, 0, 1, VLSDefinedTerm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsSatisfiableEClass, VLSSatisfiable.class, "VLSSatisfiable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsWarningEClass, VLSWarning.class, "VLSWarning", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsTryingEClass, VLSTrying.class, "VLSTrying", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSTrying_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSTrying.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsFiniteModelEClass, VLSFiniteModel.class, "VLSFiniteModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsEquivalentEClass, VLSEquivalent.class, "VLSEquivalent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSEquivalent_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSEquivalent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSEquivalent_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSEquivalent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsImpliesEClass, VLSImplies.class, "VLSImplies", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSImplies_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSImplies.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSImplies_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSImplies.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsRevImpliesEClass, VLSRevImplies.class, "VLSRevImplies", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSRevImplies_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSRevImplies.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSRevImplies_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSRevImplies.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsXnorEClass, VLSXnor.class, "VLSXnor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSXnor_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSXnor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSXnor_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSXnor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsNorEClass, VLSNor.class, "VLSNor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSNor_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSNor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSNor_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSNor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsNandEClass, VLSNand.class, "VLSNand", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSNand_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSNand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSNand_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSNand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsAndEClass, VLSAnd.class, "VLSAnd", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSAnd_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSAnd.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSAnd_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSAnd.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsOrEClass, VLSOr.class, "VLSOr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSOr_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSOr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSOr_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSOr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsUniversalQuantifierEClass, VLSUniversalQuantifier.class, "VLSUniversalQuantifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSUniversalQuantifier_Variables(), this.getVLSTffTerm(), null, "variables", null, 0, -1, VLSUniversalQuantifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSUniversalQuantifier_Operand(), this.getVLSTerm(), null, "operand", null, 0, 1, VLSUniversalQuantifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsExistentialQuantifierEClass, VLSExistentialQuantifier.class, "VLSExistentialQuantifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSExistentialQuantifier_Variables(), this.getVLSTffTerm(), null, "variables", null, 0, -1, VLSExistentialQuantifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSExistentialQuantifier_Operand(), this.getVLSTerm(), null, "operand", null, 0, 1, VLSExistentialQuantifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsUnaryNegationEClass, VLSUnaryNegation.class, "VLSUnaryNegation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSUnaryNegation_Operand(), this.getVLSTerm(), null, "operand", null, 0, 1, VLSUnaryNegation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsInequalityEClass, VLSInequality.class, "VLSInequality", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSInequality_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSInequality.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSInequality_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSInequality.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsEqualityEClass, VLSEquality.class, "VLSEquality", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSEquality_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSEquality.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSEquality_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSEquality.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsAssignmentEClass, VLSAssignment.class, "VLSAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVLSAssignment_Left(), this.getVLSTerm(), null, "left", null, 0, 1, VLSAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSAssignment_Right(), this.getVLSTerm(), null, "right", null, 0, 1, VLSAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsConstantEClass, VLSConstant.class, "VLSConstant", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSConstant_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSConstant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsTrueEClass, VLSTrue.class, "VLSTrue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsFalseEClass, VLSFalse.class, "VLSFalse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsFunctionEClass, VLSFunction.class, "VLSFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSFunction_Constant(), ecorePackage.getEString(), "constant", null, 0, 1, VLSFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSFunction_Terms(), this.getVLSTerm(), null, "terms", null, 0, -1, VLSFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsLessEClass, VLSLess.class, "VLSLess", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getVLSLess_Name(), ecorePackage.getEString(), "name", null, 0, 1, VLSLess.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getVLSLess_Terms(), this.getVLSTerm(), null, "terms", null, 0, -1, VLSLess.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(vlsIntEClass, VLSInt.class, "VLSInt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vlsDoubleQuoteEClass, VLSDoubleQuote.class, "VLSDoubleQuote", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + } + +} //VampireLanguagePackageImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireModelImpl.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireModelImpl.java new file mode 100644 index 000000000..1e26c7603 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/impl/VampireModelImpl.java @@ -0,0 +1,285 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.impl; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Vampire Model'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl#getComments Comments}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl#getConfirmations Confirmations}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl#getFormulas Formulas}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl#getTfformulas Tfformulas}
  • + *
+ * + * @generated + */ +public class VampireModelImpl extends MinimalEObjectImpl.Container implements VampireModel +{ + /** + * The cached value of the '{@link #getComments() Comments}' containment reference list. + * + * + * @see #getComments() + * @generated + * @ordered + */ + protected EList comments; + + /** + * The cached value of the '{@link #getConfirmations() Confirmations}' containment reference list. + * + * + * @see #getConfirmations() + * @generated + * @ordered + */ + protected EList confirmations; + + /** + * The cached value of the '{@link #getFormulas() Formulas}' containment reference list. + * + * + * @see #getFormulas() + * @generated + * @ordered + */ + protected EList formulas; + + /** + * The cached value of the '{@link #getTfformulas() Tfformulas}' containment reference list. + * + * + * @see #getTfformulas() + * @generated + * @ordered + */ + protected EList tfformulas; + + /** + * + * + * @generated + */ + protected VampireModelImpl() + { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() + { + return VampireLanguagePackage.Literals.VAMPIRE_MODEL; + } + + /** + * + * + * @generated + */ + public EList getComments() + { + if (comments == null) + { + comments = new EObjectContainmentEList(VLSComment.class, this, VampireLanguagePackage.VAMPIRE_MODEL__COMMENTS); + } + return comments; + } + + /** + * + * + * @generated + */ + public EList getConfirmations() + { + if (confirmations == null) + { + confirmations = new EObjectContainmentEList(VLSConfirmations.class, this, VampireLanguagePackage.VAMPIRE_MODEL__CONFIRMATIONS); + } + return confirmations; + } + + /** + * + * + * @generated + */ + public EList getFormulas() + { + if (formulas == null) + { + formulas = new EObjectContainmentEList(VLSFofFormula.class, this, VampireLanguagePackage.VAMPIRE_MODEL__FORMULAS); + } + return formulas; + } + + /** + * + * + * @generated + */ + public EList getTfformulas() + { + if (tfformulas == null) + { + tfformulas = new EObjectContainmentEList(VLSTffFormula.class, this, VampireLanguagePackage.VAMPIRE_MODEL__TFFORMULAS); + } + return tfformulas; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case VampireLanguagePackage.VAMPIRE_MODEL__COMMENTS: + return ((InternalEList)getComments()).basicRemove(otherEnd, msgs); + case VampireLanguagePackage.VAMPIRE_MODEL__CONFIRMATIONS: + return ((InternalEList)getConfirmations()).basicRemove(otherEnd, msgs); + case VampireLanguagePackage.VAMPIRE_MODEL__FORMULAS: + return ((InternalEList)getFormulas()).basicRemove(otherEnd, msgs); + case VampireLanguagePackage.VAMPIRE_MODEL__TFFORMULAS: + return ((InternalEList)getTfformulas()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case VampireLanguagePackage.VAMPIRE_MODEL__COMMENTS: + return getComments(); + case VampireLanguagePackage.VAMPIRE_MODEL__CONFIRMATIONS: + return getConfirmations(); + case VampireLanguagePackage.VAMPIRE_MODEL__FORMULAS: + return getFormulas(); + case VampireLanguagePackage.VAMPIRE_MODEL__TFFORMULAS: + return getTfformulas(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case VampireLanguagePackage.VAMPIRE_MODEL__COMMENTS: + getComments().clear(); + getComments().addAll((Collection)newValue); + return; + case VampireLanguagePackage.VAMPIRE_MODEL__CONFIRMATIONS: + getConfirmations().clear(); + getConfirmations().addAll((Collection)newValue); + return; + case VampireLanguagePackage.VAMPIRE_MODEL__FORMULAS: + getFormulas().clear(); + getFormulas().addAll((Collection)newValue); + return; + case VampireLanguagePackage.VAMPIRE_MODEL__TFFORMULAS: + getTfformulas().clear(); + getTfformulas().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VAMPIRE_MODEL__COMMENTS: + getComments().clear(); + return; + case VampireLanguagePackage.VAMPIRE_MODEL__CONFIRMATIONS: + getConfirmations().clear(); + return; + case VampireLanguagePackage.VAMPIRE_MODEL__FORMULAS: + getFormulas().clear(); + return; + case VampireLanguagePackage.VAMPIRE_MODEL__TFFORMULAS: + getTfformulas().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case VampireLanguagePackage.VAMPIRE_MODEL__COMMENTS: + return comments != null && !comments.isEmpty(); + case VampireLanguagePackage.VAMPIRE_MODEL__CONFIRMATIONS: + return confirmations != null && !confirmations.isEmpty(); + case VampireLanguagePackage.VAMPIRE_MODEL__FORMULAS: + return formulas != null && !formulas.isEmpty(); + case VampireLanguagePackage.VAMPIRE_MODEL__TFFORMULAS: + return tfformulas != null && !tfformulas.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //VampireModelImpl diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/util/VampireLanguageAdapterFactory.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/util/VampireLanguageAdapterFactory.java new file mode 100644 index 000000000..9156e24fe --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/util/VampireLanguageAdapterFactory.java @@ -0,0 +1,913 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.util; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage + * @generated + */ +public class VampireLanguageAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * + * + * @generated + */ + protected static VampireLanguagePackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public VampireLanguageAdapterFactory() + { + if (modelPackage == null) + { + modelPackage = VampireLanguagePackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) + { + if (object == modelPackage) + { + return true; + } + if (object instanceof EObject) + { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected VampireLanguageSwitch modelSwitch = + new VampireLanguageSwitch() + { + @Override + public Adapter caseVampireModel(VampireModel object) + { + return createVampireModelAdapter(); + } + @Override + public Adapter caseVLSComment(VLSComment object) + { + return createVLSCommentAdapter(); + } + @Override + public Adapter caseVLSConfirmations(VLSConfirmations object) + { + return createVLSConfirmationsAdapter(); + } + @Override + public Adapter caseVLSFofFormula(VLSFofFormula object) + { + return createVLSFofFormulaAdapter(); + } + @Override + public Adapter caseVLSTffFormula(VLSTffFormula object) + { + return createVLSTffFormulaAdapter(); + } + @Override + public Adapter caseVLSAnnotation(VLSAnnotation object) + { + return createVLSAnnotationAdapter(); + } + @Override + public Adapter caseVLSTffTerm(VLSTffTerm object) + { + return createVLSTffTermAdapter(); + } + @Override + public Adapter caseVLSTerm(VLSTerm object) + { + return createVLSTermAdapter(); + } + @Override + public Adapter caseVLSDeclaration(VLSDeclaration object) + { + return createVLSDeclarationAdapter(); + } + @Override + public Adapter caseVLSOtherDeclaration(VLSOtherDeclaration object) + { + return createVLSOtherDeclarationAdapter(); + } + @Override + public Adapter caseVLSVariableDeclaration(VLSVariableDeclaration object) + { + return createVLSVariableDeclarationAdapter(); + } + @Override + public Adapter caseVLSTypeDef(VLSTypeDef object) + { + return createVLSTypeDefAdapter(); + } + @Override + public Adapter caseVLSVariable(VLSVariable object) + { + return createVLSVariableAdapter(); + } + @Override + public Adapter caseVLSFunctionAsTerm(VLSFunctionAsTerm object) + { + return createVLSFunctionAsTermAdapter(); + } + @Override + public Adapter caseVLSDefinedTerm(VLSDefinedTerm object) + { + return createVLSDefinedTermAdapter(); + } + @Override + public Adapter caseVLSSatisfiable(VLSSatisfiable object) + { + return createVLSSatisfiableAdapter(); + } + @Override + public Adapter caseVLSWarning(VLSWarning object) + { + return createVLSWarningAdapter(); + } + @Override + public Adapter caseVLSTrying(VLSTrying object) + { + return createVLSTryingAdapter(); + } + @Override + public Adapter caseVLSFiniteModel(VLSFiniteModel object) + { + return createVLSFiniteModelAdapter(); + } + @Override + public Adapter caseVLSEquivalent(VLSEquivalent object) + { + return createVLSEquivalentAdapter(); + } + @Override + public Adapter caseVLSImplies(VLSImplies object) + { + return createVLSImpliesAdapter(); + } + @Override + public Adapter caseVLSRevImplies(VLSRevImplies object) + { + return createVLSRevImpliesAdapter(); + } + @Override + public Adapter caseVLSXnor(VLSXnor object) + { + return createVLSXnorAdapter(); + } + @Override + public Adapter caseVLSNor(VLSNor object) + { + return createVLSNorAdapter(); + } + @Override + public Adapter caseVLSNand(VLSNand object) + { + return createVLSNandAdapter(); + } + @Override + public Adapter caseVLSAnd(VLSAnd object) + { + return createVLSAndAdapter(); + } + @Override + public Adapter caseVLSOr(VLSOr object) + { + return createVLSOrAdapter(); + } + @Override + public Adapter caseVLSUniversalQuantifier(VLSUniversalQuantifier object) + { + return createVLSUniversalQuantifierAdapter(); + } + @Override + public Adapter caseVLSExistentialQuantifier(VLSExistentialQuantifier object) + { + return createVLSExistentialQuantifierAdapter(); + } + @Override + public Adapter caseVLSUnaryNegation(VLSUnaryNegation object) + { + return createVLSUnaryNegationAdapter(); + } + @Override + public Adapter caseVLSInequality(VLSInequality object) + { + return createVLSInequalityAdapter(); + } + @Override + public Adapter caseVLSEquality(VLSEquality object) + { + return createVLSEqualityAdapter(); + } + @Override + public Adapter caseVLSAssignment(VLSAssignment object) + { + return createVLSAssignmentAdapter(); + } + @Override + public Adapter caseVLSConstant(VLSConstant object) + { + return createVLSConstantAdapter(); + } + @Override + public Adapter caseVLSTrue(VLSTrue object) + { + return createVLSTrueAdapter(); + } + @Override + public Adapter caseVLSFalse(VLSFalse object) + { + return createVLSFalseAdapter(); + } + @Override + public Adapter caseVLSFunction(VLSFunction object) + { + return createVLSFunctionAdapter(); + } + @Override + public Adapter caseVLSLess(VLSLess object) + { + return createVLSLessAdapter(); + } + @Override + public Adapter caseVLSInt(VLSInt object) + { + return createVLSIntAdapter(); + } + @Override + public Adapter caseVLSDoubleQuote(VLSDoubleQuote object) + { + return createVLSDoubleQuoteAdapter(); + } + @Override + public Adapter defaultCase(EObject object) + { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) + { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel Vampire Model}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel + * @generated + */ + public Adapter createVampireModelAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment VLS Comment}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment + * @generated + */ + public Adapter createVLSCommentAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations VLS Confirmations}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConfirmations + * @generated + */ + public Adapter createVLSConfirmationsAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula VLS Fof Formula}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula + * @generated + */ + public Adapter createVLSFofFormulaAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula VLS Tff Formula}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula + * @generated + */ + public Adapter createVLSTffFormulaAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation VLS Annotation}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation + * @generated + */ + public Adapter createVLSAnnotationAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm VLS Tff Term}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffTerm + * @generated + */ + public Adapter createVLSTffTermAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm VLS Term}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm + * @generated + */ + public Adapter createVLSTermAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration VLS Declaration}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDeclaration + * @generated + */ + public Adapter createVLSDeclarationAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration VLS Other Declaration}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOtherDeclaration + * @generated + */ + public Adapter createVLSOtherDeclarationAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration VLS Variable Declaration}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariableDeclaration + * @generated + */ + public Adapter createVLSVariableDeclarationAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef VLS Type Def}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTypeDef + * @generated + */ + public Adapter createVLSTypeDefAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable VLS Variable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable + * @generated + */ + public Adapter createVLSVariableAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm VLS Function As Term}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm + * @generated + */ + public Adapter createVLSFunctionAsTermAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm VLS Defined Term}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDefinedTerm + * @generated + */ + public Adapter createVLSDefinedTermAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable VLS Satisfiable}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSSatisfiable + * @generated + */ + public Adapter createVLSSatisfiableAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning VLS Warning}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSWarning + * @generated + */ + public Adapter createVLSWarningAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying VLS Trying}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrying + * @generated + */ + public Adapter createVLSTryingAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel VLS Finite Model}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFiniteModel + * @generated + */ + public Adapter createVLSFiniteModelAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent VLS Equivalent}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent + * @generated + */ + public Adapter createVLSEquivalentAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies VLS Implies}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSImplies + * @generated + */ + public Adapter createVLSImpliesAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies VLS Rev Implies}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSRevImplies + * @generated + */ + public Adapter createVLSRevImpliesAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor VLS Xnor}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSXnor + * @generated + */ + public Adapter createVLSXnorAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor VLS Nor}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNor + * @generated + */ + public Adapter createVLSNorAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand VLS Nand}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSNand + * @generated + */ + public Adapter createVLSNandAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd VLS And}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd + * @generated + */ + public Adapter createVLSAndAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr VLS Or}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr + * @generated + */ + public Adapter createVLSOrAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier VLS Universal Quantifier}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier + * @generated + */ + public Adapter createVLSUniversalQuantifierAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier VLS Existential Quantifier}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier + * @generated + */ + public Adapter createVLSExistentialQuantifierAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation VLS Unary Negation}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation + * @generated + */ + public Adapter createVLSUnaryNegationAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality VLS Inequality}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality + * @generated + */ + public Adapter createVLSInequalityAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality VLS Equality}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality + * @generated + */ + public Adapter createVLSEqualityAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment VLS Assignment}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAssignment + * @generated + */ + public Adapter createVLSAssignmentAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant VLS Constant}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant + * @generated + */ + public Adapter createVLSConstantAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue VLS True}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTrue + * @generated + */ + public Adapter createVLSTrueAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse VLS False}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFalse + * @generated + */ + public Adapter createVLSFalseAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction VLS Function}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction + * @generated + */ + public Adapter createVLSFunctionAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess VLS Less}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSLess + * @generated + */ + public Adapter createVLSLessAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt VLS Int}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInt + * @generated + */ + public Adapter createVLSIntAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote VLS Double Quote}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSDoubleQuote + * @generated + */ + public Adapter createVLSDoubleQuoteAdapter() + { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() + { + return null; + } + +} //VampireLanguageAdapterFactory diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/util/VampireLanguageSwitch.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/util/VampireLanguageSwitch.java new file mode 100644 index 000000000..e8c0fde10 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src-gen/ca/mcgill/ecse/dslreasoner/vampireLanguage/util/VampireLanguageSwitch.java @@ -0,0 +1,1077 @@ +/** + * generated by Xtext 2.14.0 + */ +package ca.mcgill.ecse.dslreasoner.vampireLanguage.util; + +import ca.mcgill.ecse.dslreasoner.vampireLanguage.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage + * @generated + */ +public class VampireLanguageSwitch extends Switch +{ + /** + * The cached model package + * + * + * @generated + */ + protected static VampireLanguagePackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public VampireLanguageSwitch() + { + if (modelPackage == null) + { + modelPackage = VampireLanguagePackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) + { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) + { + switch (classifierID) + { + case VampireLanguagePackage.VAMPIRE_MODEL: + { + VampireModel vampireModel = (VampireModel)theEObject; + T result = caseVampireModel(vampireModel); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_COMMENT: + { + VLSComment vlsComment = (VLSComment)theEObject; + T result = caseVLSComment(vlsComment); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_CONFIRMATIONS: + { + VLSConfirmations vlsConfirmations = (VLSConfirmations)theEObject; + T result = caseVLSConfirmations(vlsConfirmations); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_FOF_FORMULA: + { + VLSFofFormula vlsFofFormula = (VLSFofFormula)theEObject; + T result = caseVLSFofFormula(vlsFofFormula); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_TFF_FORMULA: + { + VLSTffFormula vlsTffFormula = (VLSTffFormula)theEObject; + T result = caseVLSTffFormula(vlsTffFormula); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_ANNOTATION: + { + VLSAnnotation vlsAnnotation = (VLSAnnotation)theEObject; + T result = caseVLSAnnotation(vlsAnnotation); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_TFF_TERM: + { + VLSTffTerm vlsTffTerm = (VLSTffTerm)theEObject; + T result = caseVLSTffTerm(vlsTffTerm); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_TERM: + { + VLSTerm vlsTerm = (VLSTerm)theEObject; + T result = caseVLSTerm(vlsTerm); + if (result == null) result = caseVLSTffTerm(vlsTerm); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_DECLARATION: + { + VLSDeclaration vlsDeclaration = (VLSDeclaration)theEObject; + T result = caseVLSDeclaration(vlsDeclaration); + if (result == null) result = caseVLSTffTerm(vlsDeclaration); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_OTHER_DECLARATION: + { + VLSOtherDeclaration vlsOtherDeclaration = (VLSOtherDeclaration)theEObject; + T result = caseVLSOtherDeclaration(vlsOtherDeclaration); + if (result == null) result = caseVLSDeclaration(vlsOtherDeclaration); + if (result == null) result = caseVLSTffTerm(vlsOtherDeclaration); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_VARIABLE_DECLARATION: + { + VLSVariableDeclaration vlsVariableDeclaration = (VLSVariableDeclaration)theEObject; + T result = caseVLSVariableDeclaration(vlsVariableDeclaration); + if (result == null) result = caseVLSDeclaration(vlsVariableDeclaration); + if (result == null) result = caseVLSTffTerm(vlsVariableDeclaration); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_TYPE_DEF: + { + VLSTypeDef vlsTypeDef = (VLSTypeDef)theEObject; + T result = caseVLSTypeDef(vlsTypeDef); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_VARIABLE: + { + VLSVariable vlsVariable = (VLSVariable)theEObject; + T result = caseVLSVariable(vlsVariable); + if (result == null) result = caseVLSTerm(vlsVariable); + if (result == null) result = caseVLSTffTerm(vlsVariable); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_FUNCTION_AS_TERM: + { + VLSFunctionAsTerm vlsFunctionAsTerm = (VLSFunctionAsTerm)theEObject; + T result = caseVLSFunctionAsTerm(vlsFunctionAsTerm); + if (result == null) result = caseVLSTerm(vlsFunctionAsTerm); + if (result == null) result = caseVLSTffTerm(vlsFunctionAsTerm); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_DEFINED_TERM: + { + VLSDefinedTerm vlsDefinedTerm = (VLSDefinedTerm)theEObject; + T result = caseVLSDefinedTerm(vlsDefinedTerm); + if (result == null) result = caseVLSTerm(vlsDefinedTerm); + if (result == null) result = caseVLSTffTerm(vlsDefinedTerm); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_SATISFIABLE: + { + VLSSatisfiable vlsSatisfiable = (VLSSatisfiable)theEObject; + T result = caseVLSSatisfiable(vlsSatisfiable); + if (result == null) result = caseVLSConfirmations(vlsSatisfiable); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_WARNING: + { + VLSWarning vlsWarning = (VLSWarning)theEObject; + T result = caseVLSWarning(vlsWarning); + if (result == null) result = caseVLSConfirmations(vlsWarning); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_TRYING: + { + VLSTrying vlsTrying = (VLSTrying)theEObject; + T result = caseVLSTrying(vlsTrying); + if (result == null) result = caseVLSConfirmations(vlsTrying); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_FINITE_MODEL: + { + VLSFiniteModel vlsFiniteModel = (VLSFiniteModel)theEObject; + T result = caseVLSFiniteModel(vlsFiniteModel); + if (result == null) result = caseVLSConfirmations(vlsFiniteModel); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_EQUIVALENT: + { + VLSEquivalent vlsEquivalent = (VLSEquivalent)theEObject; + T result = caseVLSEquivalent(vlsEquivalent); + if (result == null) result = caseVLSTerm(vlsEquivalent); + if (result == null) result = caseVLSTffTerm(vlsEquivalent); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_IMPLIES: + { + VLSImplies vlsImplies = (VLSImplies)theEObject; + T result = caseVLSImplies(vlsImplies); + if (result == null) result = caseVLSTerm(vlsImplies); + if (result == null) result = caseVLSTffTerm(vlsImplies); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_REV_IMPLIES: + { + VLSRevImplies vlsRevImplies = (VLSRevImplies)theEObject; + T result = caseVLSRevImplies(vlsRevImplies); + if (result == null) result = caseVLSTerm(vlsRevImplies); + if (result == null) result = caseVLSTffTerm(vlsRevImplies); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_XNOR: + { + VLSXnor vlsXnor = (VLSXnor)theEObject; + T result = caseVLSXnor(vlsXnor); + if (result == null) result = caseVLSTerm(vlsXnor); + if (result == null) result = caseVLSTffTerm(vlsXnor); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_NOR: + { + VLSNor vlsNor = (VLSNor)theEObject; + T result = caseVLSNor(vlsNor); + if (result == null) result = caseVLSTerm(vlsNor); + if (result == null) result = caseVLSTffTerm(vlsNor); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_NAND: + { + VLSNand vlsNand = (VLSNand)theEObject; + T result = caseVLSNand(vlsNand); + if (result == null) result = caseVLSTerm(vlsNand); + if (result == null) result = caseVLSTffTerm(vlsNand); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_AND: + { + VLSAnd vlsAnd = (VLSAnd)theEObject; + T result = caseVLSAnd(vlsAnd); + if (result == null) result = caseVLSTerm(vlsAnd); + if (result == null) result = caseVLSTffTerm(vlsAnd); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_OR: + { + VLSOr vlsOr = (VLSOr)theEObject; + T result = caseVLSOr(vlsOr); + if (result == null) result = caseVLSTerm(vlsOr); + if (result == null) result = caseVLSTffTerm(vlsOr); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_UNIVERSAL_QUANTIFIER: + { + VLSUniversalQuantifier vlsUniversalQuantifier = (VLSUniversalQuantifier)theEObject; + T result = caseVLSUniversalQuantifier(vlsUniversalQuantifier); + if (result == null) result = caseVLSTerm(vlsUniversalQuantifier); + if (result == null) result = caseVLSTffTerm(vlsUniversalQuantifier); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_EXISTENTIAL_QUANTIFIER: + { + VLSExistentialQuantifier vlsExistentialQuantifier = (VLSExistentialQuantifier)theEObject; + T result = caseVLSExistentialQuantifier(vlsExistentialQuantifier); + if (result == null) result = caseVLSTerm(vlsExistentialQuantifier); + if (result == null) result = caseVLSTffTerm(vlsExistentialQuantifier); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_UNARY_NEGATION: + { + VLSUnaryNegation vlsUnaryNegation = (VLSUnaryNegation)theEObject; + T result = caseVLSUnaryNegation(vlsUnaryNegation); + if (result == null) result = caseVLSTerm(vlsUnaryNegation); + if (result == null) result = caseVLSTffTerm(vlsUnaryNegation); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_INEQUALITY: + { + VLSInequality vlsInequality = (VLSInequality)theEObject; + T result = caseVLSInequality(vlsInequality); + if (result == null) result = caseVLSTerm(vlsInequality); + if (result == null) result = caseVLSTffTerm(vlsInequality); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_EQUALITY: + { + VLSEquality vlsEquality = (VLSEquality)theEObject; + T result = caseVLSEquality(vlsEquality); + if (result == null) result = caseVLSTerm(vlsEquality); + if (result == null) result = caseVLSTffTerm(vlsEquality); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_ASSIGNMENT: + { + VLSAssignment vlsAssignment = (VLSAssignment)theEObject; + T result = caseVLSAssignment(vlsAssignment); + if (result == null) result = caseVLSTerm(vlsAssignment); + if (result == null) result = caseVLSTffTerm(vlsAssignment); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_CONSTANT: + { + VLSConstant vlsConstant = (VLSConstant)theEObject; + T result = caseVLSConstant(vlsConstant); + if (result == null) result = caseVLSTerm(vlsConstant); + if (result == null) result = caseVLSTffTerm(vlsConstant); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_TRUE: + { + VLSTrue vlsTrue = (VLSTrue)theEObject; + T result = caseVLSTrue(vlsTrue); + if (result == null) result = caseVLSTerm(vlsTrue); + if (result == null) result = caseVLSTffTerm(vlsTrue); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_FALSE: + { + VLSFalse vlsFalse = (VLSFalse)theEObject; + T result = caseVLSFalse(vlsFalse); + if (result == null) result = caseVLSTerm(vlsFalse); + if (result == null) result = caseVLSTffTerm(vlsFalse); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_FUNCTION: + { + VLSFunction vlsFunction = (VLSFunction)theEObject; + T result = caseVLSFunction(vlsFunction); + if (result == null) result = caseVLSTerm(vlsFunction); + if (result == null) result = caseVLSTffTerm(vlsFunction); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_LESS: + { + VLSLess vlsLess = (VLSLess)theEObject; + T result = caseVLSLess(vlsLess); + if (result == null) result = caseVLSTerm(vlsLess); + if (result == null) result = caseVLSTffTerm(vlsLess); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_INT: + { + VLSInt vlsInt = (VLSInt)theEObject; + T result = caseVLSInt(vlsInt); + if (result == null) result = caseVLSDefinedTerm(vlsInt); + if (result == null) result = caseVLSTerm(vlsInt); + if (result == null) result = caseVLSTffTerm(vlsInt); + if (result == null) result = defaultCase(theEObject); + return result; + } + case VampireLanguagePackage.VLS_DOUBLE_QUOTE: + { + VLSDoubleQuote vlsDoubleQuote = (VLSDoubleQuote)theEObject; + T result = caseVLSDoubleQuote(vlsDoubleQuote); + if (result == null) result = caseVLSDefinedTerm(vlsDoubleQuote); + if (result == null) result = caseVLSTerm(vlsDoubleQuote); + if (result == null) result = caseVLSTffTerm(vlsDoubleQuote); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Vampire Model'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Vampire Model'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVampireModel(VampireModel object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Comment'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Comment'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSComment(VLSComment object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Confirmations'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Confirmations'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSConfirmations(VLSConfirmations object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Fof Formula'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Fof Formula'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSFofFormula(VLSFofFormula object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Tff Formula'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Tff Formula'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSTffFormula(VLSTffFormula object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Annotation'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Annotation'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSAnnotation(VLSAnnotation object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Tff Term'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Tff Term'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSTffTerm(VLSTffTerm object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Term'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Term'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSTerm(VLSTerm object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Declaration'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Declaration'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSDeclaration(VLSDeclaration object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Other Declaration'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Other Declaration'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSOtherDeclaration(VLSOtherDeclaration object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Variable Declaration'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Variable Declaration'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSVariableDeclaration(VLSVariableDeclaration object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Type Def'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Type Def'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSTypeDef(VLSTypeDef object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Variable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Variable'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSVariable(VLSVariable object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Function As Term'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Function As Term'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSFunctionAsTerm(VLSFunctionAsTerm object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Defined Term'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Defined Term'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSDefinedTerm(VLSDefinedTerm object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Satisfiable'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Satisfiable'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSSatisfiable(VLSSatisfiable object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Warning'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Warning'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSWarning(VLSWarning object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Trying'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Trying'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSTrying(VLSTrying object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Finite Model'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Finite Model'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSFiniteModel(VLSFiniteModel object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Equivalent'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Equivalent'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSEquivalent(VLSEquivalent object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Implies'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Implies'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSImplies(VLSImplies object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Rev Implies'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Rev Implies'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSRevImplies(VLSRevImplies object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Xnor'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Xnor'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSXnor(VLSXnor object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Nor'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Nor'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSNor(VLSNor object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Nand'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Nand'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSNand(VLSNand object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS And'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS And'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSAnd(VLSAnd object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Or'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Or'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSOr(VLSOr object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Universal Quantifier'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Universal Quantifier'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSUniversalQuantifier(VLSUniversalQuantifier object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Existential Quantifier'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Existential Quantifier'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSExistentialQuantifier(VLSExistentialQuantifier object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Unary Negation'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Unary Negation'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSUnaryNegation(VLSUnaryNegation object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Inequality'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Inequality'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSInequality(VLSInequality object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Equality'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Equality'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSEquality(VLSEquality object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Assignment'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Assignment'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSAssignment(VLSAssignment object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Constant'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Constant'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSConstant(VLSConstant object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS True'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS True'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSTrue(VLSTrue object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS False'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS False'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSFalse(VLSFalse object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Function'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Function'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSFunction(VLSFunction object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Less'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Less'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSLess(VLSLess object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Int'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Int'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSInt(VLSInt object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'VLS Double Quote'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'VLS Double Quote'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVLSDoubleQuote(VLSDoubleQuote object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) + { + return null; + } + +} //VampireLanguageSwitch diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/GenerateVampireLanguage.mwe2 b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/GenerateVampireLanguage.mwe2 new file mode 100644 index 000000000..2fe824829 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/GenerateVampireLanguage.mwe2 @@ -0,0 +1,47 @@ +module ca.mcgill.ecse.dslreasoner.GenerateVampireLanguage + +import org.eclipse.xtext.xtext.generator.* +import org.eclipse.xtext.xtext.generator.model.project.* + +var rootPath = ".." + +Workflow { + //TODO + component = XtextGenerator { + configuration = { + project = StandardProjectConfig { + baseName = "ca.mcgill.ecse.dslreasoner.vampire.language" + rootPath = rootPath + runtimeTest = { + enabled = true + } + eclipsePlugin = { + enabled = true + } + eclipsePluginTest = { + enabled = true + } + createEclipseMetaData = true + } + code = { + encoding = "UTF-8" + lineDelimiter = "\r\n" + fileHeader = "/*\n * generated by Xtext \${version}\n */" + } + } + language = StandardLanguage { + name = "ca.mcgill.ecse.dslreasoner.VampireLanguage" + fileExtensions = "tptp" + + serializer = { + generateStub = false + } + validator = { + // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" + } + formatter={ + generateStub=true + } + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguage.xtext b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguage.xtext new file mode 100644 index 000000000..71655a32f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguage.xtext @@ -0,0 +1,355 @@ +grammar ca.mcgill.ecse.dslreasoner.VampireLanguage with org.eclipse.xtext.common.Terminals hidden (WS) + +generate vampireLanguage "http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage" + +//@@@@@@@@@@@ +//2 things TODO: +//1. fix anotations (ln77) +//2. can only use declared variables in formula (ln 158) + +//@@@@@@@@@@@ + +VampireModel: + ( +// includes += VLSInclude | + comments += VLSComment | + confirmations += VLSConfirmations| + formulas += VLSFofFormula | + tfformulas += VLSTffFormula + + )* +; + +////////////////////////////////// +// VLS terminals +////////////////////////////////// + +terminal ALPHA_NUMERIC: ( 'a'..'z' | 'A'..'Z' | '0'..'9' | '_'); +terminal UPPER_WORD_ID: ('A'..'Z') (ALPHA_NUMERIC)*; +terminal LOWER_WORD_ID: ('a'..'z') (ALPHA_NUMERIC)*; + + +//TODO MIGHT NEED TO IMPLEMENT SOME WAY TO ONLY CONSIDER WHAT IS INSIDE QUOTES AS NAME +//incorporate quotes in the line of calling. ex. "'" name=SINGLEQUOTE "'" +terminal DOUBLE_QUOTE: '"' ( '\\' ('"'|'\\') | !('\\'|'"') )* '"';//from terminal STRING rule, positive about this +terminal SINGLE_QUOTE: "'" ( '\\' ("'"|'\\') | !('\\'|"'") )+ "'";//from terminal STRING rule, positive about this + +terminal SIGN: ('+' | '-'); + +terminal DOLLAR_ID: ('$') (LOWER_WORD_ID); +terminal DOUBLE_DOLLAR_ID: ('$$') (LOWER_WORD_ID); + +terminal LITERAL: '0' | ('1'..'9') (INT)?; +terminal SIGNED_LITERAL: (SIGN)* (LITERAL); + +//terminal UNSIGNED_REAL_FRAC_ID: (LITERAL) ('.') (INT); +//terminal UNSIGNED_REAL_EXP_ID: (LITERAL | UNSIGNED_REAL_FRAC_ID) ('Ee') (SIGN)* (INT) ; +//terminal SIGNED_REAL_ID: (SIGN)* (UNSIGNED_REAL_FRAC_ID | UNSIGNED_REAL_EXP_ID); +// +//terminal UNSIGNED_RAT_ID: (LITERAL) ('/') ('1'..'9') (INT)? ; +//terminal SIGNED_RAT_ID: (SIGN)* (UNSIGNED_RAT_ID); + +//Overwriting is necessary +//terminal ID: (!('\n'|'\r'))* ('\r'? '\n')?; +//terminal ANY_OTHER: ; +terminal SINGLE_COMMENT: '%' (!('\n'|'\r'))* ('\r'? '\n')?; +//terminal ID: ( !('('|')'|'\r'|'\n') )+ ; + + +////////////////////////////////// +// VLS types +////////////////////////////////// + +// +//VLSInclude: +// 'include(' fileName = SINGLE_QUOTE ( ',[' names += VLSName (',' names += VLSName)* ']' )? +//; + +//VLSName: +// name = (LOWER_WORD_ID | SINGLE_QUOTE | LITERAL | SIGNED_LITERAL) +//; + +// +VLSComment: + comment = SINGLE_COMMENT + //need to add a new line at the end of the file for the case where the last line is a comment +; + +//VLSConstantDeclaration: name = (LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID ); + +VLSConfirmations: + {VLSSatisfiable} 'Satisfiable!' | + {VLSWarning} "WARNING!" "Could" "not" "set" "resource" "limit:" "Virtual" "memory." | + {VLSTrying} 'TRYING' '[' name = LITERAL ']' | + {VLSFiniteModel} 'Finite' 'Model' 'Found!' +; + +// +VLSFofFormula: + 'fof' '(' name = (LOWER_WORD_ID | SIGNED_LITERAL | SINGLE_QUOTE) ',' fofRole = VLSRole ',' fofFormula = VLSTerm (',' annotations = VLSAnnotation)? ')' '.' +; + + +VLSTffFormula: + 'tff' '(' name = VLSTffName ',' tffRole = VLSRole ',' fofFormula = VLSTffTerm (',' annotations = VLSAnnotation)? ')' '.' +; + +VLSTffName: + VLSTffDeclPred | VLSTffFinite | VLSTffDistinct +; + +VLSTffDistinct: + 'distinct_domain' +; + +VLSTffFinite: + 'finite_domain' +; + +VLSTffDeclPred: + 'declare_' DOLLAR_ID | LOWER_WORD_ID +; + + +/* +//NAME +VLSName: + //(atomic_Word = Atomic_Word | integer = Integer | single_quote_word = Single_Quote_Word) + name = (LOWER_WORD_ID | SIGNED_INT_ID | SINGLE_QUOTE) +; +*/ +// +VLSRole: + "axiom" | "conjecture" | "hypothesis" | "definition" | "assumption" | "lemma" + | "theorem" | "corollary" | "negated_conjecture" | "plain" | "type" | + "fi_domain" | "fi_functors" | "fi_predicates" | "unknown" +; + +/* +//VLSRole: +// VLSAxiom | VLSConjecture | VLSHypothesis | VLSDefinition | +// VLSAssumption | VLSLemma | VLSTheorem | VLSCorollary | VLSNegated_Conjecture | +// VLSPlain | VLSType |VLSFi_Domain | VLSFi_Functors | VLSFi_Predicates | VLSUnknown +//; +// +//VLSAxiom: +// "axiom" +//; +// +//VLSConjecture: +// "conjecture" +//; +// +//VLSHypothesis: +// "hypothesis" +//; +// +//VLSDefinition: +// "definition" +//; +// +//VLSAssumption: +// "assumption" +//; +// +//VLSLemma: +// "lemma" +//; +// +//VLSTheorem: +// "theorem" +//; +// +//VLSCorollary: +// "corollary" +//; +// +//VLSNegated_Conjecture: +// "negated_conjecture" +//; +// +//VLSPlain: +// "plain" +//; +// +//VLSType: +// "type" +//; +// +//VLSFi_Domain: +// "fi_domain" +//; +// +//VLSFi_Functors: +// "fi_functors" +//; +// +//VLSFi_Predicates: +// "fi_predicates" +//; +// +//VLSUnknown: +// "unknown" +//; +*/ + +// +// Not at all based on the website. based on what we think the output will be like +VLSAnnotation: + ('[')? (name = (LOWER_WORD_ID | SINGLE_QUOTE | VLSRole))? ( '(' followup = VLSAnnotationTerms ')' )? (']')? +; + +VLSAnnotationTerms returns VLSAnnotation: + terms += VLSAnnotation (',' terms += VLSAnnotation )* +; + +////////////////////////////////// +// VLS Terms +////////////////////////////////// +VLSTffTerm: + VLSTerm | + VLSDeclaration | + VLSCommentTerm +; + +VLSCommentTerm returns VLSTerm: + comment = SINGLE_COMMENT +; + +///////////////// +//TFF Specific +VLSDeclaration: + VLSVariableDeclaration | + VLSOtherDeclaration + +; + +VLSOtherDeclaration: + name = VLSAtomicConstant ':' type = VLSTypeDef +; + +VLSVariableDeclaration: + name = VLSVariable ':' type = VLSTypeDef +; + +VLSTypeDef: + typeSig = VLSUnitaryTerm ('>' mapsTo = VLSAtomicConstant)? //might need to make VLSAtomic to include VLSVariable +; + +VLSUnitaryTerm returns VLSTypeDef: + initType = VLSAtomic ('*' nextType = VLSAtomicConstant)* //might need to make VLSAtomic to include VLSVariable +; +//TFF Specific +///////////////// + +VLSTerm: + //( VLSLogic | VLSSequent) + VLSBinary +; +//* +//VLSBinaryFormula +VLSBinary returns VLSTerm: + VLSUnitaryFormula + ( + (({VLSEquivalent.left = current} "<=>" | + {VLSImplies.left = current} "=>" | + {VLSRevImplies.left = current} "<=" | + {VLSXnor.left = current} "<~>" | + {VLSNor.left = current} "~|" | + {VLSNand.left = current} "~&") right = VLSUnitaryFormula) + | + ({VLSAnd.left = current} '&' right = VLSUnitaryFormula)+ + | + ({VLSOr.left = current} '|' right = VLSUnitaryFormula)+ + )? +; + +//VLSUnitaryFormula +VLSUnitaryFormula returns VLSTerm: + VLSUniversalQuantifier | VLSExistentialQuantifier | VLSUnaryNegation | VLSUnaryInfix + //| VLSEquality + | '(' VLSTerm ')' +; + +VLSUniversalQuantifier returns VLSTerm: + {VLSUniversalQuantifier} (("!") '[' variables += (VLSVariable | VLSVariableDeclaration) + (',' variables += (VLSVariable | VLSVariableDeclaration))* ']' ':' + ) operand = VLSUnitaryFormula +; + +VLSExistentialQuantifier returns VLSTerm: + {VLSExistentialQuantifier} (("?") '[' variables += (VLSVariable | VLSVariableDeclaration) + (',' variables += (VLSVariable | VLSVariableDeclaration))* ']' ':' + ) operand = VLSUnitaryFormula +; + +VLSUnaryNegation returns VLSTerm: + {VLSUnaryNegation} ('~') operand = VLSUnitaryFormula +; + +VLSUnaryInfix returns VLSTerm: + VLSAtomic (({VLSInequality.left = current} "!=" | + {VLSEquality.left = current} "=" | + {VLSAssignment.left = current} ":=") + right = VLSAtomic)? +; + +//NOT SUREEEE +//VLSEquality returns VLSTerm: +// VLSFofTerm ({VLSEquality.left = current} "=" right = VLSFofTerm)? +// +//; + +/* +enum VLSDefinedFunctor: + UMINUS='$uminus' | SUM='$sum' | DIFFERENCE='$difference' | PRODUCT='$product' | QUOTIENT='$quotient' | + QUOTIENT_E='$quotient_e' | QUOTIENT_T='$quotient_t' | QUOTIENT_F='$quotient_f' | REMAINDER_E='$remainder_e' | + REMAINDER_T='$remainder_t' | REMAINDER_F='$remainder_f' | FLOOR='$floor' | CEILING='$ceiling' | + TRUNCATE='$truncate' | ROUND='$round' | TO_INT='$to_int' | TO_RAT='$to_rat' | TO_REAL='$to_real' + ; +*/ + +VLSAtomic returns VLSTerm: + VLSAtomicConstant | VLSAtomicFunction | VLSVariable + | VLSDefinedTerm //temporary solution. this is only valid for equality, not for != or := + //| VLSEquality +; + +VLSAtomicConstant returns VLSTerm: + //{VLSConstant} name = VLSConstantDeclaration | + {VLSConstant} name = (LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole) | + {VLSTrue} '$true' | + {VLSFalse} '$false' +; + +VLSAtomicFunction returns VLSTerm: + //? on next line causes warning + //TODO might need replace DOLLAR_ID with enum rule + //{VLSFunction} name = VLSConstantDeclaration ( '(' terms += VLSFofTerm (',' terms += VLSFofTerm)* ')' ) | + {VLSFunction} constant = (LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID | VLSRole ) ( '(' terms += VLSFofTerm (',' terms += VLSFofTerm)* ')') | + {VLSLess} name = '$less' '(' terms += VLSFofTerm ',' terms += VLSFofTerm ')' +; + +VLSVariable : + + name = UPPER_WORD_ID +; + +VLSFofTerm returns VLSTerm: + //(VLSVariable | VLSFunction | VLSTffConditional | VLSTffLet | VLSTffTuple) + (VLSVariable | VLSFunctionAsTerm | VLSDefinedTerm ) +; + +VLSFunctionAsTerm: + //? on next line causes warning + //TODO might need replace DOLLAR_ID with enum rule + functor = (LOWER_WORD_ID | SINGLE_QUOTE | DOLLAR_ID | DOUBLE_DOLLAR_ID ) ( '(' terms += VLSFofTerm (',' terms += VLSFofTerm)* ')')? +; + +VLSDefinedTerm: + {VLSInt} value = SIGNED_LITERAL | +// {VLSReal} value = SIGNED_REAL_ID | +// {VLSRational} value = SIGNED_RAT_ID | + {VLSDoubleQuote} value = DOUBLE_QUOTE +; + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguageRuntimeModule.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguageRuntimeModule.xtend new file mode 100644 index 000000000..162df1e2b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguageRuntimeModule.xtend @@ -0,0 +1,11 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner + + +/** + * Use this class to register components to be used at runtime / without the Equinox extension registry. + */ +class VampireLanguageRuntimeModule extends AbstractVampireLanguageRuntimeModule { +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguageStandaloneSetup.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguageStandaloneSetup.xtend new file mode 100644 index 000000000..38a05c512 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/VampireLanguageStandaloneSetup.xtend @@ -0,0 +1,15 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner + + +/** + * Initialization support for running Xtext languages without Equinox extension registry. + */ +class VampireLanguageStandaloneSetup extends VampireLanguageStandaloneSetupGenerated { + + def static void doSetup() { + new VampireLanguageStandaloneSetup().createInjectorAndDoEMFRegistration() + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/formatting2/VampireLanguageFormatter.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/formatting2/VampireLanguageFormatter.xtend new file mode 100644 index 000000000..fe1c852f6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/formatting2/VampireLanguageFormatter.xtend @@ -0,0 +1,46 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.formatting2 + +import ca.mcgill.ecse.dslreasoner.services.VampireLanguageGrammarAccess +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel +import com.google.inject.Inject +import org.eclipse.xtext.formatting2.AbstractFormatter2 +import org.eclipse.xtext.formatting2.IFormattableDocument + +class VampireLanguageFormatter extends AbstractFormatter2 { + + @Inject extension VampireLanguageGrammarAccess + + def dispatch void format(VampireModel vampireModel, extension IFormattableDocument document) { + // TODO: format HiddenRegions around keywords, attributes, cross references, etc. +// for (VLSInclude vLSInclude : vampireModel.getIncludes()) { +// vLSInclude.format; +// } + for (VLSComment vLSComment : vampireModel.getComments()) { + vLSComment.format; + } + for (VLSFofFormula vLSFofFormula : vampireModel.getFormulas()) { + vLSFofFormula.format; + } + } + +// def dispatch void format(VLSInclude vLSInclude, extension IFormattableDocument document) { +// // TODO: format HiddenRegions around keywords, attributes, cross references, etc. +// for (VLSName vLSName : vLSInclude.getNames()) { +// vLSName.format; +// } +// } + + def dispatch void format(VLSFofFormula formula, extension IFormattableDocument document){ + formula.append[newLine] + } + + def dispatch void format(VLSComment comment, extension IFormattableDocument document){ + comment.append[newLine] + } + // TODO: implement for VLSFofFormula, VLSAnnotation, VLSAnd, VLSOr, VLSUniversalQuantifier, VLSExistentialQuantifier, VLSUnaryNegation, VLSFunction, VLSLess, VLSFunctionFof, VLSEquivalent, VLSImplies, VLSRevImplies, VLSXnor, VLSNor, VLSNand, VLSInequality, VLSEquality, VLSAssignment +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/generator/VampireLanguageGenerator.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/generator/VampireLanguageGenerator.xtend new file mode 100644 index 000000000..f099486a2 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/generator/VampireLanguageGenerator.xtend @@ -0,0 +1,25 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.generator + +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.xtext.generator.AbstractGenerator +import org.eclipse.xtext.generator.IFileSystemAccess2 +import org.eclipse.xtext.generator.IGeneratorContext + +/** + * Generates code from your model files on save. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation + */ +class VampireLanguageGenerator extends AbstractGenerator { + + override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) { +// fsa.generateFile('greetings.txt', 'People to greet: ' + +// resource.allContents +// .filter(Greeting) +// .map[name] +// .join(', ')) + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/scoping/VampireLanguageScopeProvider.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/scoping/VampireLanguageScopeProvider.xtend new file mode 100644 index 000000000..fb967eeeb --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/scoping/VampireLanguageScopeProvider.xtend @@ -0,0 +1,15 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.scoping + + +/** + * This class contains custom scoping description. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping + * on how and when to use it. + */ +class VampireLanguageScopeProvider extends AbstractVampireLanguageScopeProvider { + //TODO +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageValidator.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageValidator.xtend new file mode 100644 index 000000000..8d7a9f76e --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.language/src/ca/mcgill/ecse/dslreasoner/validation/VampireLanguageValidator.xtend @@ -0,0 +1,25 @@ +/* + * generated by Xtext 2.12.0 + */ +package ca.mcgill.ecse.dslreasoner.validation + + +/** + * This class contains custom validation rules. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation + */ +class VampireLanguageValidator extends AbstractVampireLanguageValidator { + +// public static val INVALID_NAME = 'invalidName' +// +// @Check +// def checkGreetingStartsWithCapital(Greeting greeting) { +// if (!Character.isUpperCase(greeting.name.charAt(0))) { +// warning('Name should start with a capital', +// VampireLanguagePackage.Literals.GREETING__NAME, +// INVALID_NAME) +// } +// } + +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.classpath new file mode 100644 index 000000000..4cc715d53 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.gitignore new file mode 100644 index 000000000..39fc9cc5b --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/src-gen/ \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.project new file mode 100644 index 000000000..98be876b8 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.project @@ -0,0 +1,40 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.queries + + + + + + org.eclipse.viatra.query.tooling.ui.projectbuilder + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.viatra.query.projectnature + org.eclipse.xtext.ui.shared.xtextNature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/META-INF/MANIFEST.MF new file mode 100644 index 000000000..c1928ca0a --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Queries +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.queries;singleton:=true +Bundle-Version: 1.0.0.qualifier +Export-Package: ca.mcgill.ecse.dslreasoner.vampire.queries +Require-Bundle: org.eclipse.emf.ecore, + org.eclipse.viatra.query.runtime.rete, + org.eclipse.viatra.query.runtime.localsearch, + org.eclipse.xtext.xbase.lib, + ca.mcgill.ecse.dslreasoner.vampire.language;bundle-version="1.0.0", + org.eclipse.viatra.query.runtime;bundle-version="2.1.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: org.apache.log4j +Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.vampire.queries diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/build.properties new file mode 100644 index 000000000..88d3713e4 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/build.properties @@ -0,0 +1,6 @@ +bin.includes = META-INF/,\ + .,\ + plugin.xml +source.. = src/,\ + src-gen/ +output.. = bin/ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/plugin.xml b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/plugin.xml new file mode 100644 index 000000000..beaf54989 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/plugin.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/.gitignore new file mode 100644 index 000000000..f357d2aff --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/.gitignore @@ -0,0 +1,26 @@ +/.VLSAnd.java._trace +/.VLSAnnotation.java._trace +/.VLSComment.java._trace +/.VLSEquivalent.java._trace +/.VLSExistentialQuantifier.java._trace +/.VLSFofFormula.java._trace +/.VLSFunction.java._trace +/.VLSFunctionFof.java._trace +/.VLSInequality.java._trace +/.VLSOr.java._trace +/.VLSUnaryNegation.java._trace +/.VLSUniversalQuantifier.java._trace +/.VampireQueries.java._trace +/VLSAnd.java +/VLSAnnotation.java +/VLSComment.java +/VLSEquivalent.java +/VLSExistentialQuantifier.java +/VLSFofFormula.java +/VLSFunction.java +/VLSFunctionFof.java +/VLSInequality.java +/VLSOr.java +/VLSUnaryNegation.java +/VLSUniversalQuantifier.java +/VampireQueries.java diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/src/ca/mcgill/ecse/dslreasoner/vampire/queries/vampireQueries.vql b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/src/ca/mcgill/ecse/dslreasoner/vampire/queries/vampireQueries.vql new file mode 100644 index 000000000..ef61e4d11 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.queries/src/ca/mcgill/ecse/dslreasoner/vampire/queries/vampireQueries.vql @@ -0,0 +1,57 @@ +package ca.mcgill.ecse.dslreasoner.vampire.queries + +import "http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage" + +pattern VLSComment(term: VLSComment){ + VLSComment(term); +} + +pattern VLSFofFormula(term: VLSFofFormula){ + VLSFofFormula(term); +} + +pattern VLSAnnotation(term: VLSAnnotation){ + VLSAnnotation(term); +} + + +//VLSFormula +pattern VLSOr(term: VLSOr){ + VLSOr(term); +} + +pattern VLSAnd(term: VLSAnd){ + VLSAnd(term); +} + +pattern VLSEquivalent(term: VLSEquivalent){ + VLSEquivalent(term); +} + +pattern VLSFunction(term: VLSFunction){ + VLSFunction(term); +} + +pattern VLSExistentialQuantifier(term: VLSExistentialQuantifier){ + VLSExistentialQuantifier(term); +} + +pattern VLSUniversalQuantifier(term: VLSUniversalQuantifier){ + VLSUniversalQuantifier(term); +} + +pattern VLSUnaryNegation(term: VLSUnaryNegation){ + VLSUnaryNegation(term); +} + +pattern VLSInequality(term: VLSInequality){ + VLSInequality(term); +} + +//pattern VLSFunctionFof(term: VLSFunctionFof){ +// VLSFunctionFof(term); +//} + +//pattern VLSFofTerm(term: VLSFofTerm){ +// VLSFofTerm(term); +//} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.classpath b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.classpath new file mode 100644 index 000000000..f6de96818 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.classpath @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.gitignore new file mode 100644 index 000000000..8d2cfe73f --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/src-gen/ +/xtend-gen/ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.project b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.project new file mode 100644 index 000000000..e73fac6d3 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.project @@ -0,0 +1,40 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.reasoner + + + + + + org.eclipse.viatra.query.tooling.ui.projectbuilder + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.viatra.query.projectnature + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.settings/org.eclipse.jdt.core.prefs b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/META-INF/MANIFEST.MF b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/META-INF/MANIFEST.MF new file mode 100644 index 000000000..31a52d097 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/META-INF/MANIFEST.MF @@ -0,0 +1,22 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Reasoner +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.reasoner;singleton:=true +Bundle-Version: 1.0.0.qualifier +Export-Package: ca.mcgill.ecse.dslreasoner.vampire.reasoner, + ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder, + ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries +Require-Bundle: org.eclipse.emf.ecore, + org.eclipse.viatra.query.runtime.rete, + org.eclipse.viatra.query.runtime.localsearch, + org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib, + hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", + ca.mcgill.ecse.dslreasoner.vampire.language;bundle-version="1.0.0", + org.eclipse.viatra.query.runtime;bundle-version="2.1.0", + org.eclipse.viatra.query.runtime.base.itc;bundle-version="2.1.0", + org.apache.log4j;bundle-version="1.2.15" +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: org.apache.log4j +Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.vampire.reasoner diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties new file mode 100644 index 000000000..efae4b076 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/build.properties @@ -0,0 +1,6 @@ +bin.includes = META-INF/,\ + . +source.. = src/,\ + src-gen/,\ + src-gen/ +output.. = bin/ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/lib/putVampireHere b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/lib/putVampireHere new file mode 100644 index 000000000..cc0bca68a --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/lib/putVampireHere @@ -0,0 +1,2 @@ +put the Vampire executeable in this folder. +rename it to "vampire.exe" diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/lib/vampire.exe b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/lib/vampire.exe new file mode 100644 index 000000000..51b44f82c Binary files /dev/null and b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/lib/vampire.exe differ diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/plugin.xml b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/plugin.xml new file mode 100644 index 000000000..b2d1db970 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/plugin.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/signatureQueries.vql b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/signatureQueries.vql new file mode 100644 index 000000000..754b5ac75 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/signatureQueries.vql @@ -0,0 +1 @@ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/typeQueries.vql b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/typeQueries.vql new file mode 100644 index 000000000..754b5ac75 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/typeQueries.vql @@ -0,0 +1 @@ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql new file mode 100644 index 000000000..be5a7c1f6 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql @@ -0,0 +1,57 @@ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries + +import "http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage" + +pattern VLSComment(term: VLSComment){ + VLSComment(term); +} + +pattern VLSFofFormula(term: VLSFofFormula){ + VLSFofFormula(term); +} + +pattern VLSAnnotation(term: VLSAnnotation){ + VLSAnnotation(term); +} + + +//VLSFormula +pattern VLSOr(term: VLSOr){ + VLSOr(term); +} + +pattern VLSAnd(term: VLSAnd){ + VLSAnd(term); +} + +pattern VLSEquivalent(term: VLSEquivalent){ + VLSEquivalent(term); +} + +pattern VLSFunction(term: VLSFunction){ + VLSFunction(term); +} + +pattern VLSExistentialQuantifier(term: VLSExistentialQuantifier){ + VLSExistentialQuantifier(term); +} + +pattern VLSUniversalQuantifier(term: VLSUniversalQuantifier){ + VLSUniversalQuantifier(term); +} + +pattern VLSUnaryNegation(term: VLSUnaryNegation){ + VLSUnaryNegation(term); +} + +pattern VLSInequality(term: VLSInequality){ + VLSInequality(term); +} + +pattern VLSFunctionFof(term: VLSFunctionAsTerm){ + VLSFunctionAsTerm(term); +} + +//pattern VLSFofTerm(term: VLSFofTerm){ +// VLSFofTerm(term); +//} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/.gitignore b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/.gitignore new file mode 100644 index 000000000..f30ede2c3 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/.gitignore @@ -0,0 +1,13 @@ +/.VLSComment.java._trace +/.VLSAnd.java._trace +/.VLSAnnotation.java._trace +/.VLSEquivalent.java._trace +/.VLSExistentialQuantifier.java._trace +/.VLSFofFormula.java._trace +/.VLSFunction.java._trace +/.VLSFunctionFof.java._trace +/.VLSInequality.java._trace +/.VLSOr.java._trace +/.VLSUnaryNegation.java._trace +/.VLSUniversalQuantifier.java._trace +/.VampireQueries.java._trace diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSAnd.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSAnd.java new file mode 100644 index 000000000..553d455ca --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSAnd.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSAnd(term: VLSAnd){
+ *         	VLSAnd(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSAnd extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnd pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnd"; + } + + @Override + public List parameterNames() { + return VLSAnd.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSAnd.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSAnd.Match)) { + VLSAnd.Match other = (VLSAnd.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSAnd specification() { + return VLSAnd.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSAnd.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSAnd.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSAnd.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSAnd.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSAnd.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnd pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSAnd(term: VLSAnd){
+   * 	VLSAnd(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSAnd + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSAnd.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSAnd.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSAnd.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSAnd.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd pTerm) { + return VLSAnd.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSAnd.Match tupleToMatch(final Tuple t) { + try { + return VLSAnd.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSAnd.Match arrayToMatch(final Object[] match) { + try { + return VLSAnd.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSAnd.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSAnd.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSAnd.instance(); + } + } + + private VLSAnd() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSAnd instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSAnd.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSAnd.Matcher.on(engine); + } + + @Override + public VLSAnd.Matcher instantiate() { + return VLSAnd.Matcher.create(); + } + + @Override + public VLSAnd.Match newEmptyMatch() { + return VLSAnd.Match.newEmptyMatch(); + } + + @Override + public VLSAnd.Match newMatch(final Object... parameters) { + return VLSAnd.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSAnd} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSAnd#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSAnd INSTANCE = new VLSAnd(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSAnd.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSAnd")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnd"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSAnd"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSAnd(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSAnd"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSAnnotation.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSAnnotation.java new file mode 100644 index 000000000..3096531d1 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSAnnotation.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSAnnotation(term: VLSAnnotation){
+ *         	VLSAnnotation(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSAnnotation extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnnotation pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnnotation"; + } + + @Override + public List parameterNames() { + return VLSAnnotation.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSAnnotation.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSAnnotation.Match)) { + VLSAnnotation.Match other = (VLSAnnotation.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSAnnotation specification() { + return VLSAnnotation.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSAnnotation.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSAnnotation.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSAnnotation.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSAnnotation.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSAnnotation.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnnotation pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSAnnotation(term: VLSAnnotation){
+   * 	VLSAnnotation(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSAnnotation + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSAnnotation.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSAnnotation.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSAnnotation.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSAnnotation.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation pTerm) { + return VLSAnnotation.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSAnnotation.Match tupleToMatch(final Tuple t) { + try { + return VLSAnnotation.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSAnnotation.Match arrayToMatch(final Object[] match) { + try { + return VLSAnnotation.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSAnnotation.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSAnnotation.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSAnnotation.instance(); + } + } + + private VLSAnnotation() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSAnnotation instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSAnnotation.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSAnnotation.Matcher.on(engine); + } + + @Override + public VLSAnnotation.Matcher instantiate() { + return VLSAnnotation.Matcher.create(); + } + + @Override + public VLSAnnotation.Match newEmptyMatch() { + return VLSAnnotation.Match.newEmptyMatch(); + } + + @Override + public VLSAnnotation.Match newMatch(final Object... parameters) { + return VLSAnnotation.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSAnnotation} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSAnnotation#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSAnnotation INSTANCE = new VLSAnnotation(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSAnnotation.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnnotation", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSAnnotation")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnnotation"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSAnnotation"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSAnnotation(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSAnnotation"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSComment.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSComment.java new file mode 100644 index 000000000..f2b341209 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSComment.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSComment(term: VLSComment){
+ *         	VLSComment(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSComment extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSComment pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSComment"; + } + + @Override + public List parameterNames() { + return VLSComment.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSComment.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSComment.Match)) { + VLSComment.Match other = (VLSComment.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSComment specification() { + return VLSComment.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSComment.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSComment.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSComment.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSComment.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSComment.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSComment pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSComment(term: VLSComment){
+   * 	VLSComment(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSComment + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSComment.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSComment.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSComment.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSComment.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment pTerm) { + return VLSComment.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSComment.Match tupleToMatch(final Tuple t) { + try { + return VLSComment.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSComment.Match arrayToMatch(final Object[] match) { + try { + return VLSComment.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSComment.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSComment.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSComment.instance(); + } + } + + private VLSComment() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSComment instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSComment.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSComment.Matcher.on(engine); + } + + @Override + public VLSComment.Matcher instantiate() { + return VLSComment.Matcher.create(); + } + + @Override + public VLSComment.Match newEmptyMatch() { + return VLSComment.Match.newEmptyMatch(); + } + + @Override + public VLSComment.Match newMatch(final Object... parameters) { + return VLSComment.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSComment} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSComment#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSComment INSTANCE = new VLSComment(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSComment.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSComment", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSComment")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSComment"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSComment"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSComment(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSComment"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/MemberIsItsOwnParent.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSEquivalent.java similarity index 55% rename from Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/MemberIsItsOwnParent.java rename to Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSEquivalent.java index f51d65280..3ed03d343 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/MemberIsItsOwnParent.java +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSEquivalent.java @@ -1,9 +1,8 @@ /** - * Generated from platform:/resource/case.study.pledge.run/src/queries/familyTreeConstraints.vql + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql */ -package queries; +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; -import familytree.Member; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashSet; @@ -24,13 +23,9 @@ import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey; import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; @@ -45,11 +40,8 @@ * *

Original source: *

- *         {@literal @}Constraint(message="memberIsItsOwnParent", severity="error", key={m})
- *         pattern memberIsItsOwnParent(m: Member) = {
- *         	FamilyTree.members(_, m);
- *         	Member.parents(m, p);
- *         	m == p;
+ *         pattern VLSEquivalent(term: VLSEquivalent){
+ *         	VLSEquivalent(term);
  *         }
  * 
* @@ -58,9 +50,9 @@ * */ @SuppressWarnings("all") -public final class MemberIsItsOwnParent extends BaseGeneratedEMFQuerySpecification { +public final class VLSEquivalent extends BaseGeneratedEMFQuerySpecification { /** - * Pattern-specific match representation of the queries.memberIsItsOwnParent pattern, + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSEquivalent pattern, * to be used in conjunction with {@link Matcher}. * *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. @@ -72,18 +64,18 @@ public final class MemberIsItsOwnParent extends BaseGeneratedEMFQuerySpecificati * */ public static abstract class Match extends BasePatternMatch { - private Member fM; + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent fTerm; - private static List parameterNames = makeImmutableList("m"); + private static List parameterNames = makeImmutableList("term"); - private Match(final Member pM) { - this.fM = pM; + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + this.fTerm = pTerm; } @Override public Object get(final String parameterName) { switch(parameterName) { - case "m": return this.fM; + case "term": return this.fTerm; default: return null; } } @@ -91,60 +83,60 @@ public Object get(final String parameterName) { @Override public Object get(final int index) { switch(index) { - case 0: return this.fM; + case 0: return this.fTerm; default: return null; } } - public Member getM() { - return this.fM; + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent getTerm() { + return this.fTerm; } @Override public boolean set(final String parameterName, final Object newValue) { if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("m".equals(parameterName) ) { - this.fM = (Member) newValue; + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent) newValue; return true; } return false; } - public void setM(final Member pM) { + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fM = pM; + this.fTerm = pTerm; } @Override public String patternName() { - return "queries.memberIsItsOwnParent"; + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSEquivalent"; } @Override public List parameterNames() { - return MemberIsItsOwnParent.Match.parameterNames; + return VLSEquivalent.Match.parameterNames; } @Override public Object[] toArray() { - return new Object[]{fM}; + return new Object[]{fTerm}; } @Override - public MemberIsItsOwnParent.Match toImmutable() { - return isMutable() ? newMatch(fM) : this; + public VLSEquivalent.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; } @Override public String prettyPrint() { StringBuilder result = new StringBuilder(); - result.append("\"m\"=" + prettyPrintValue(fM)); + result.append("\"term\"=" + prettyPrintValue(fTerm)); return result.toString(); } @Override public int hashCode() { - return Objects.hash(fM); + return Objects.hash(fTerm); } @Override @@ -154,9 +146,9 @@ public boolean equals(final Object obj) { if (obj == null) { return false; } - if ((obj instanceof MemberIsItsOwnParent.Match)) { - MemberIsItsOwnParent.Match other = (MemberIsItsOwnParent.Match) obj; - return Objects.equals(fM, other.fM); + if ((obj instanceof VLSEquivalent.Match)) { + VLSEquivalent.Match other = (VLSEquivalent.Match) obj; + return Objects.equals(fTerm, other.fTerm); } else { // this should be infrequent if (!(obj instanceof IPatternMatch)) { @@ -168,8 +160,8 @@ public boolean equals(final Object obj) { } @Override - public MemberIsItsOwnParent specification() { - return MemberIsItsOwnParent.instance(); + public VLSEquivalent specification() { + return VLSEquivalent.instance(); } /** @@ -179,7 +171,7 @@ public MemberIsItsOwnParent specification() { * @return the empty match. * */ - public static MemberIsItsOwnParent.Match newEmptyMatch() { + public static VLSEquivalent.Match newEmptyMatch() { return new Mutable(null); } @@ -187,29 +179,29 @@ public static MemberIsItsOwnParent.Match newEmptyMatch() { * Returns a mutable (partial) match. * Fields of the mutable match can be filled to create a partial match, usable as matcher input. * - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the new, mutable (partial) match object. * */ - public static MemberIsItsOwnParent.Match newMutableMatch(final Member pM) { - return new Mutable(pM); + public static VLSEquivalent.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return new Mutable(pTerm); } /** * Returns a new (partial) match. * This can be used e.g. to call the matcher with a partial match. *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the (partial) match object. * */ - public static MemberIsItsOwnParent.Match newMatch(final Member pM) { - return new Immutable(pM); + public static VLSEquivalent.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return new Immutable(pTerm); } - private static final class Mutable extends MemberIsItsOwnParent.Match { - Mutable(final Member pM) { - super(pM); + private static final class Mutable extends VLSEquivalent.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + super(pTerm); } @Override @@ -218,9 +210,9 @@ public boolean isMutable() { } } - private static final class Immutable extends MemberIsItsOwnParent.Match { - Immutable(final Member pM) { - super(pM); + private static final class Immutable extends VLSEquivalent.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + super(pTerm); } @Override @@ -231,7 +223,7 @@ public boolean isMutable() { } /** - * Generated pattern matcher API of the queries.memberIsItsOwnParent pattern, + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSEquivalent pattern, * providing pattern-specific query methods. * *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, @@ -241,19 +233,16 @@ public boolean isMutable() { * *

Original source: *

-   * {@literal @}Constraint(message="memberIsItsOwnParent", severity="error", key={m})
-   * pattern memberIsItsOwnParent(m: Member) = {
-   * 	FamilyTree.members(_, m);
-   * 	Member.parents(m, p);
-   * 	m == p;
+   * pattern VLSEquivalent(term: VLSEquivalent){
+   * 	VLSEquivalent(term);
    * }
    * 
* * @see Match - * @see MemberIsItsOwnParent + * @see VLSEquivalent * */ - public static class Matcher extends BaseMatcher { + public static class Matcher extends BaseMatcher { /** * Initializes the pattern matcher within an existing VIATRA Query engine. * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. @@ -262,7 +251,7 @@ public static class Matcher extends BaseMatcher { * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation * */ - public static MemberIsItsOwnParent.Matcher on(final ViatraQueryEngine engine) { + public static VLSEquivalent.Matcher on(final ViatraQueryEngine engine) { // check if matcher already exists Matcher matcher = engine.getExistingMatcher(querySpecification()); if (matcher == null) { @@ -277,13 +266,13 @@ public static MemberIsItsOwnParent.Matcher on(final ViatraQueryEngine engine) { * @noreference This method is for internal matcher initialization by the framework, do not call it manually. * */ - public static MemberIsItsOwnParent.Matcher create() { + public static VLSEquivalent.Matcher create() { return new Matcher(); } - private static final int POSITION_M = 0; + private static final int POSITION_TERM = 0; - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(MemberIsItsOwnParent.Matcher.class); + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSEquivalent.Matcher.class); /** * Initializes the pattern matcher within an existing VIATRA Query engine. @@ -299,12 +288,12 @@ private Matcher() { /** * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return matches represented as a Match object. * */ - public Collection getAllMatches(final Member pM) { - return rawStreamAllMatches(new Object[]{pM}).collect(Collectors.toSet()); + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); } /** @@ -313,101 +302,101 @@ public Collection getAllMatches(final Member pM) { * NOTE: It is important not to modify the source model while the stream is being processed. * If the match set of the pattern changes during processing, the contents of the stream is undefined. * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return a stream of matches represented as a Match object. * */ - public Stream streamAllMatches(final Member pM) { - return rawStreamAllMatches(new Object[]{pM}); + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); } /** * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. * Neither determinism nor randomness of selection is guaranteed. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return a match represented as a Match object, or null if no match is found. * */ - public Optional getOneArbitraryMatch(final Member pM) { - return rawGetOneArbitraryMatch(new Object[]{pM}); + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); } /** * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, * under any possible substitution of the unspecified parameters (if any). - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return true if the input is a valid (partial) match of the pattern. * */ - public boolean hasMatch(final Member pM) { - return rawHasMatch(new Object[]{pM}); + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return rawHasMatch(new Object[]{pTerm}); } /** * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the number of pattern matches found. * */ - public int countMatches(final Member pM) { - return rawCountMatches(new Object[]{pM}); + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return rawCountMatches(new Object[]{pTerm}); } /** * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. * Neither determinism nor randomness of selection is guaranteed. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @param processor the action that will process the selected match. * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked * */ - public boolean forOneArbitraryMatch(final Member pM, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pM}, processor); + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); } /** * Returns a new (partial) match. * This can be used e.g. to call the matcher with a partial match. *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the (partial) match object. * */ - public MemberIsItsOwnParent.Match newMatch(final Member pM) { - return MemberIsItsOwnParent.Match.newMatch(pM); + public VLSEquivalent.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent pTerm) { + return VLSEquivalent.Match.newMatch(pTerm); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - protected Stream rawStreamAllValuesOfm(final Object[] parameters) { - return rawStreamAllValues(POSITION_M, parameters).map(Member.class::cast); + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent.class::cast); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - public Set getAllValuesOfm() { - return rawStreamAllValuesOfm(emptyArray()).collect(Collectors.toSet()); + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - public Stream streamAllValuesOfm() { - return rawStreamAllValuesOfm(emptyArray()); + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); } @Override - protected MemberIsItsOwnParent.Match tupleToMatch(final Tuple t) { + protected VLSEquivalent.Match tupleToMatch(final Tuple t) { try { - return MemberIsItsOwnParent.Match.newMatch((Member) t.get(POSITION_M)); + return VLSEquivalent.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent) t.get(POSITION_TERM)); } catch(ClassCastException e) { LOGGER.error("Element(s) in tuple not properly typed!",e); return null; @@ -415,9 +404,9 @@ protected MemberIsItsOwnParent.Match tupleToMatch(final Tuple t) { } @Override - protected MemberIsItsOwnParent.Match arrayToMatch(final Object[] match) { + protected VLSEquivalent.Match arrayToMatch(final Object[] match) { try { - return MemberIsItsOwnParent.Match.newMatch((Member) match[POSITION_M]); + return VLSEquivalent.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent) match[POSITION_TERM]); } catch(ClassCastException e) { LOGGER.error("Element(s) in array not properly typed!",e); return null; @@ -425,9 +414,9 @@ protected MemberIsItsOwnParent.Match arrayToMatch(final Object[] match) { } @Override - protected MemberIsItsOwnParent.Match arrayToMatchMutable(final Object[] match) { + protected VLSEquivalent.Match arrayToMatchMutable(final Object[] match) { try { - return MemberIsItsOwnParent.Match.newMutableMatch((Member) match[POSITION_M]); + return VLSEquivalent.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent) match[POSITION_TERM]); } catch(ClassCastException e) { LOGGER.error("Element(s) in array not properly typed!",e); return null; @@ -439,12 +428,12 @@ protected MemberIsItsOwnParent.Match arrayToMatchMutable(final Object[] match) { * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded * */ - public static IQuerySpecification querySpecification() { - return MemberIsItsOwnParent.instance(); + public static IQuerySpecification querySpecification() { + return VLSEquivalent.instance(); } } - private MemberIsItsOwnParent() { + private VLSEquivalent() { super(GeneratedPQuery.INSTANCE); } @@ -453,7 +442,7 @@ private MemberIsItsOwnParent() { * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded * */ - public static MemberIsItsOwnParent instance() { + public static VLSEquivalent instance() { try{ return LazyHolder.INSTANCE; } catch (ExceptionInInitializerError err) { @@ -462,35 +451,35 @@ public static MemberIsItsOwnParent instance() { } @Override - protected MemberIsItsOwnParent.Matcher instantiate(final ViatraQueryEngine engine) { - return MemberIsItsOwnParent.Matcher.on(engine); + protected VLSEquivalent.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSEquivalent.Matcher.on(engine); } @Override - public MemberIsItsOwnParent.Matcher instantiate() { - return MemberIsItsOwnParent.Matcher.create(); + public VLSEquivalent.Matcher instantiate() { + return VLSEquivalent.Matcher.create(); } @Override - public MemberIsItsOwnParent.Match newEmptyMatch() { - return MemberIsItsOwnParent.Match.newEmptyMatch(); + public VLSEquivalent.Match newEmptyMatch() { + return VLSEquivalent.Match.newEmptyMatch(); } @Override - public MemberIsItsOwnParent.Match newMatch(final Object... parameters) { - return MemberIsItsOwnParent.Match.newMatch((familytree.Member) parameters[0]); + public VLSEquivalent.Match newMatch(final Object... parameters) { + return VLSEquivalent.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent) parameters[0]); } /** - * Inner class allowing the singleton instance of {@link MemberIsItsOwnParent} to be created + * Inner class allowing the singleton instance of {@link VLSEquivalent} to be created * not at the class load time of the outer class, - * but rather at the first call to {@link MemberIsItsOwnParent#instance()}. + * but rather at the first call to {@link VLSEquivalent#instance()}. * *

This workaround is required e.g. to support recursion. * */ private static class LazyHolder { - private static final MemberIsItsOwnParent INSTANCE = new MemberIsItsOwnParent(); + private static final VLSEquivalent INSTANCE = new VLSEquivalent(); /** * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. @@ -508,11 +497,11 @@ public static Object ensureInitialized() { } private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final MemberIsItsOwnParent.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + private static final VLSEquivalent.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - private final PParameter parameter_m = new PParameter("m", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquivalent", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSEquivalent")), PParameterDirection.INOUT); - private final List parameters = Arrays.asList(parameter_m); + private final List parameters = Arrays.asList(parameter_term); private GeneratedPQuery() { super(PVisibility.PUBLIC); @@ -520,12 +509,12 @@ private GeneratedPQuery() { @Override public String getFullyQualifiedName() { - return "queries.memberIsItsOwnParent"; + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSEquivalent"; } @Override public List getParameterNames() { - return Arrays.asList("m"); + return Arrays.asList("term"); } @Override @@ -539,38 +528,15 @@ public Set doGetContainedBodies() { Set bodies = new LinkedHashSet<>(); { PBody body = new PBody(this); - PVariable var_m = body.getOrCreateVariableByName("m"); - PVariable var___0_ = body.getOrCreateVariableByName("_<0>"); - PVariable var_p = body.getOrCreateVariableByName("p"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSEquivalent"))); body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_m, parameter_m) + new ExportedParameter(body, var_term, parameter_term) )); - // FamilyTree.members(_, m) - new TypeConstraint(body, Tuples.flatTupleOf(var___0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "FamilyTree"))); - PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); - new TypeConstraint(body, Tuples.flatTupleOf(var___0_, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "FamilyTree", "members"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new Equality(body, var__virtual_0_, var_m); - // Member.parents(m, p) - new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "parents"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new Equality(body, var__virtual_1_, var_p); - // m == p - new Equality(body, var_m, var_p); + // VLSEquivalent(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSEquivalent"))); bodies.add(body); } - { - PAnnotation annotation = new PAnnotation("Constraint"); - annotation.addAttribute("message", "memberIsItsOwnParent"); - annotation.addAttribute("severity", "error"); - annotation.addAttribute("key", Arrays.asList(new Object[] { - new ParameterReference("m") - })); - addAnnotation(annotation); - } return bodies; } } diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSExistentialQuantifier.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSExistentialQuantifier.java new file mode 100644 index 000000000..643c2b609 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSExistentialQuantifier.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSExistentialQuantifier(term: VLSExistentialQuantifier){
+ *         	VLSExistentialQuantifier(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSExistentialQuantifier extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSExistentialQuantifier pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSExistentialQuantifier"; + } + + @Override + public List parameterNames() { + return VLSExistentialQuantifier.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSExistentialQuantifier.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSExistentialQuantifier.Match)) { + VLSExistentialQuantifier.Match other = (VLSExistentialQuantifier.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSExistentialQuantifier specification() { + return VLSExistentialQuantifier.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSExistentialQuantifier.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSExistentialQuantifier.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSExistentialQuantifier.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSExistentialQuantifier.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSExistentialQuantifier.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSExistentialQuantifier pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSExistentialQuantifier(term: VLSExistentialQuantifier){
+   * 	VLSExistentialQuantifier(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSExistentialQuantifier + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSExistentialQuantifier.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSExistentialQuantifier.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSExistentialQuantifier.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSExistentialQuantifier.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier pTerm) { + return VLSExistentialQuantifier.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSExistentialQuantifier.Match tupleToMatch(final Tuple t) { + try { + return VLSExistentialQuantifier.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSExistentialQuantifier.Match arrayToMatch(final Object[] match) { + try { + return VLSExistentialQuantifier.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSExistentialQuantifier.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSExistentialQuantifier.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSExistentialQuantifier.instance(); + } + } + + private VLSExistentialQuantifier() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSExistentialQuantifier instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSExistentialQuantifier.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSExistentialQuantifier.Matcher.on(engine); + } + + @Override + public VLSExistentialQuantifier.Matcher instantiate() { + return VLSExistentialQuantifier.Matcher.create(); + } + + @Override + public VLSExistentialQuantifier.Match newEmptyMatch() { + return VLSExistentialQuantifier.Match.newEmptyMatch(); + } + + @Override + public VLSExistentialQuantifier.Match newMatch(final Object... parameters) { + return VLSExistentialQuantifier.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSExistentialQuantifier} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSExistentialQuantifier#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSExistentialQuantifier INSTANCE = new VLSExistentialQuantifier(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSExistentialQuantifier.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSExistentialQuantifier", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSExistentialQuantifier")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSExistentialQuantifier"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSExistentialQuantifier"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSExistentialQuantifier(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSExistentialQuantifier"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFofFormula.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFofFormula.java new file mode 100644 index 000000000..666795b52 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFofFormula.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSFofFormula(term: VLSFofFormula){
+ *         	VLSFofFormula(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSFofFormula extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFofFormula pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFofFormula"; + } + + @Override + public List parameterNames() { + return VLSFofFormula.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSFofFormula.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSFofFormula.Match)) { + VLSFofFormula.Match other = (VLSFofFormula.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSFofFormula specification() { + return VLSFofFormula.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSFofFormula.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSFofFormula.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSFofFormula.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSFofFormula.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSFofFormula.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFofFormula pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSFofFormula(term: VLSFofFormula){
+   * 	VLSFofFormula(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSFofFormula + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSFofFormula.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSFofFormula.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSFofFormula.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSFofFormula.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula pTerm) { + return VLSFofFormula.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSFofFormula.Match tupleToMatch(final Tuple t) { + try { + return VLSFofFormula.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSFofFormula.Match arrayToMatch(final Object[] match) { + try { + return VLSFofFormula.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSFofFormula.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSFofFormula.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSFofFormula.instance(); + } + } + + private VLSFofFormula() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSFofFormula instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSFofFormula.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSFofFormula.Matcher.on(engine); + } + + @Override + public VLSFofFormula.Matcher instantiate() { + return VLSFofFormula.Matcher.create(); + } + + @Override + public VLSFofFormula.Match newEmptyMatch() { + return VLSFofFormula.Match.newEmptyMatch(); + } + + @Override + public VLSFofFormula.Match newMatch(final Object... parameters) { + return VLSFofFormula.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSFofFormula} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSFofFormula#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSFofFormula INSTANCE = new VLSFofFormula(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSFofFormula.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFofFormula")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFofFormula"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFofFormula"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSFofFormula(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFofFormula"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/NegativeAge.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFunction.java similarity index 56% rename from Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/NegativeAge.java rename to Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFunction.java index 0d60e8d85..8fff7789f 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/NegativeAge.java +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFunction.java @@ -1,9 +1,8 @@ /** - * Generated from platform:/resource/case.study.pledge.run/src/queries/familyTreeConstraints.vql + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql */ -package queries; +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; -import familytree.Member; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashSet; @@ -16,7 +15,6 @@ import java.util.stream.Stream; import org.apache.log4j.Logger; import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EDataType; import org.eclipse.viatra.query.runtime.api.IPatternMatch; import org.eclipse.viatra.query.runtime.api.IQuerySpecification; import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; @@ -25,18 +23,10 @@ import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey; -import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey; import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; -import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator; -import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation; import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; @@ -50,10 +40,8 @@ * *

Original source: *

- *         {@literal @}Constraint(message="negativeAge", severity="error",key={m})
- *         pattern negativeAge(m: Member) {
- *         	Member.age(m,mage);
- *         	check(mage{@literal <}0);
+ *         pattern VLSFunction(term: VLSFunction){
+ *         	VLSFunction(term);
  *         }
  * 
* @@ -62,9 +50,9 @@ * */ @SuppressWarnings("all") -public final class NegativeAge extends BaseGeneratedEMFQuerySpecification { +public final class VLSFunction extends BaseGeneratedEMFQuerySpecification { /** - * Pattern-specific match representation of the queries.negativeAge pattern, + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunction pattern, * to be used in conjunction with {@link Matcher}. * *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. @@ -76,18 +64,18 @@ public final class NegativeAge extends BaseGeneratedEMFQuerySpecification parameterNames = makeImmutableList("m"); + private static List parameterNames = makeImmutableList("term"); - private Match(final Member pM) { - this.fM = pM; + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + this.fTerm = pTerm; } @Override public Object get(final String parameterName) { switch(parameterName) { - case "m": return this.fM; + case "term": return this.fTerm; default: return null; } } @@ -95,60 +83,60 @@ public Object get(final String parameterName) { @Override public Object get(final int index) { switch(index) { - case 0: return this.fM; + case 0: return this.fTerm; default: return null; } } - public Member getM() { - return this.fM; + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction getTerm() { + return this.fTerm; } @Override public boolean set(final String parameterName, final Object newValue) { if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("m".equals(parameterName) ) { - this.fM = (Member) newValue; + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction) newValue; return true; } return false; } - public void setM(final Member pM) { + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fM = pM; + this.fTerm = pTerm; } @Override public String patternName() { - return "queries.negativeAge"; + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunction"; } @Override public List parameterNames() { - return NegativeAge.Match.parameterNames; + return VLSFunction.Match.parameterNames; } @Override public Object[] toArray() { - return new Object[]{fM}; + return new Object[]{fTerm}; } @Override - public NegativeAge.Match toImmutable() { - return isMutable() ? newMatch(fM) : this; + public VLSFunction.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; } @Override public String prettyPrint() { StringBuilder result = new StringBuilder(); - result.append("\"m\"=" + prettyPrintValue(fM)); + result.append("\"term\"=" + prettyPrintValue(fTerm)); return result.toString(); } @Override public int hashCode() { - return Objects.hash(fM); + return Objects.hash(fTerm); } @Override @@ -158,9 +146,9 @@ public boolean equals(final Object obj) { if (obj == null) { return false; } - if ((obj instanceof NegativeAge.Match)) { - NegativeAge.Match other = (NegativeAge.Match) obj; - return Objects.equals(fM, other.fM); + if ((obj instanceof VLSFunction.Match)) { + VLSFunction.Match other = (VLSFunction.Match) obj; + return Objects.equals(fTerm, other.fTerm); } else { // this should be infrequent if (!(obj instanceof IPatternMatch)) { @@ -172,8 +160,8 @@ public boolean equals(final Object obj) { } @Override - public NegativeAge specification() { - return NegativeAge.instance(); + public VLSFunction specification() { + return VLSFunction.instance(); } /** @@ -183,7 +171,7 @@ public NegativeAge specification() { * @return the empty match. * */ - public static NegativeAge.Match newEmptyMatch() { + public static VLSFunction.Match newEmptyMatch() { return new Mutable(null); } @@ -191,29 +179,29 @@ public static NegativeAge.Match newEmptyMatch() { * Returns a mutable (partial) match. * Fields of the mutable match can be filled to create a partial match, usable as matcher input. * - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the new, mutable (partial) match object. * */ - public static NegativeAge.Match newMutableMatch(final Member pM) { - return new Mutable(pM); + public static VLSFunction.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return new Mutable(pTerm); } /** * Returns a new (partial) match. * This can be used e.g. to call the matcher with a partial match. *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the (partial) match object. * */ - public static NegativeAge.Match newMatch(final Member pM) { - return new Immutable(pM); + public static VLSFunction.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return new Immutable(pTerm); } - private static final class Mutable extends NegativeAge.Match { - Mutable(final Member pM) { - super(pM); + private static final class Mutable extends VLSFunction.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + super(pTerm); } @Override @@ -222,9 +210,9 @@ public boolean isMutable() { } } - private static final class Immutable extends NegativeAge.Match { - Immutable(final Member pM) { - super(pM); + private static final class Immutable extends VLSFunction.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + super(pTerm); } @Override @@ -235,7 +223,7 @@ public boolean isMutable() { } /** - * Generated pattern matcher API of the queries.negativeAge pattern, + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunction pattern, * providing pattern-specific query methods. * *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, @@ -245,18 +233,16 @@ public boolean isMutable() { * *

Original source: *

-   * {@literal @}Constraint(message="negativeAge", severity="error",key={m})
-   * pattern negativeAge(m: Member) {
-   * 	Member.age(m,mage);
-   * 	check(mage{@literal <}0);
+   * pattern VLSFunction(term: VLSFunction){
+   * 	VLSFunction(term);
    * }
    * 
* * @see Match - * @see NegativeAge + * @see VLSFunction * */ - public static class Matcher extends BaseMatcher { + public static class Matcher extends BaseMatcher { /** * Initializes the pattern matcher within an existing VIATRA Query engine. * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. @@ -265,7 +251,7 @@ public static class Matcher extends BaseMatcher { * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation * */ - public static NegativeAge.Matcher on(final ViatraQueryEngine engine) { + public static VLSFunction.Matcher on(final ViatraQueryEngine engine) { // check if matcher already exists Matcher matcher = engine.getExistingMatcher(querySpecification()); if (matcher == null) { @@ -280,13 +266,13 @@ public static NegativeAge.Matcher on(final ViatraQueryEngine engine) { * @noreference This method is for internal matcher initialization by the framework, do not call it manually. * */ - public static NegativeAge.Matcher create() { + public static VLSFunction.Matcher create() { return new Matcher(); } - private static final int POSITION_M = 0; + private static final int POSITION_TERM = 0; - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(NegativeAge.Matcher.class); + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSFunction.Matcher.class); /** * Initializes the pattern matcher within an existing VIATRA Query engine. @@ -302,12 +288,12 @@ private Matcher() { /** * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return matches represented as a Match object. * */ - public Collection getAllMatches(final Member pM) { - return rawStreamAllMatches(new Object[]{pM}).collect(Collectors.toSet()); + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); } /** @@ -316,101 +302,101 @@ public Collection getAllMatches(final Member pM) { * NOTE: It is important not to modify the source model while the stream is being processed. * If the match set of the pattern changes during processing, the contents of the stream is undefined. * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return a stream of matches represented as a Match object. * */ - public Stream streamAllMatches(final Member pM) { - return rawStreamAllMatches(new Object[]{pM}); + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); } /** * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. * Neither determinism nor randomness of selection is guaranteed. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return a match represented as a Match object, or null if no match is found. * */ - public Optional getOneArbitraryMatch(final Member pM) { - return rawGetOneArbitraryMatch(new Object[]{pM}); + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); } /** * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, * under any possible substitution of the unspecified parameters (if any). - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return true if the input is a valid (partial) match of the pattern. * */ - public boolean hasMatch(final Member pM) { - return rawHasMatch(new Object[]{pM}); + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return rawHasMatch(new Object[]{pTerm}); } /** * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the number of pattern matches found. * */ - public int countMatches(final Member pM) { - return rawCountMatches(new Object[]{pM}); + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return rawCountMatches(new Object[]{pTerm}); } /** * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. * Neither determinism nor randomness of selection is guaranteed. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @param processor the action that will process the selected match. * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked * */ - public boolean forOneArbitraryMatch(final Member pM, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pM}, processor); + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); } /** * Returns a new (partial) match. * This can be used e.g. to call the matcher with a partial match. *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the (partial) match object. * */ - public NegativeAge.Match newMatch(final Member pM) { - return NegativeAge.Match.newMatch(pM); + public VLSFunction.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction pTerm) { + return VLSFunction.Match.newMatch(pTerm); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - protected Stream rawStreamAllValuesOfm(final Object[] parameters) { - return rawStreamAllValues(POSITION_M, parameters).map(Member.class::cast); + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction.class::cast); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - public Set getAllValuesOfm() { - return rawStreamAllValuesOfm(emptyArray()).collect(Collectors.toSet()); + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - public Stream streamAllValuesOfm() { - return rawStreamAllValuesOfm(emptyArray()); + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); } @Override - protected NegativeAge.Match tupleToMatch(final Tuple t) { + protected VLSFunction.Match tupleToMatch(final Tuple t) { try { - return NegativeAge.Match.newMatch((Member) t.get(POSITION_M)); + return VLSFunction.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction) t.get(POSITION_TERM)); } catch(ClassCastException e) { LOGGER.error("Element(s) in tuple not properly typed!",e); return null; @@ -418,9 +404,9 @@ protected NegativeAge.Match tupleToMatch(final Tuple t) { } @Override - protected NegativeAge.Match arrayToMatch(final Object[] match) { + protected VLSFunction.Match arrayToMatch(final Object[] match) { try { - return NegativeAge.Match.newMatch((Member) match[POSITION_M]); + return VLSFunction.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction) match[POSITION_TERM]); } catch(ClassCastException e) { LOGGER.error("Element(s) in array not properly typed!",e); return null; @@ -428,9 +414,9 @@ protected NegativeAge.Match arrayToMatch(final Object[] match) { } @Override - protected NegativeAge.Match arrayToMatchMutable(final Object[] match) { + protected VLSFunction.Match arrayToMatchMutable(final Object[] match) { try { - return NegativeAge.Match.newMutableMatch((Member) match[POSITION_M]); + return VLSFunction.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction) match[POSITION_TERM]); } catch(ClassCastException e) { LOGGER.error("Element(s) in array not properly typed!",e); return null; @@ -442,12 +428,12 @@ protected NegativeAge.Match arrayToMatchMutable(final Object[] match) { * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded * */ - public static IQuerySpecification querySpecification() { - return NegativeAge.instance(); + public static IQuerySpecification querySpecification() { + return VLSFunction.instance(); } } - private NegativeAge() { + private VLSFunction() { super(GeneratedPQuery.INSTANCE); } @@ -456,7 +442,7 @@ private NegativeAge() { * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded * */ - public static NegativeAge instance() { + public static VLSFunction instance() { try{ return LazyHolder.INSTANCE; } catch (ExceptionInInitializerError err) { @@ -465,35 +451,35 @@ public static NegativeAge instance() { } @Override - protected NegativeAge.Matcher instantiate(final ViatraQueryEngine engine) { - return NegativeAge.Matcher.on(engine); + protected VLSFunction.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSFunction.Matcher.on(engine); } @Override - public NegativeAge.Matcher instantiate() { - return NegativeAge.Matcher.create(); + public VLSFunction.Matcher instantiate() { + return VLSFunction.Matcher.create(); } @Override - public NegativeAge.Match newEmptyMatch() { - return NegativeAge.Match.newEmptyMatch(); + public VLSFunction.Match newEmptyMatch() { + return VLSFunction.Match.newEmptyMatch(); } @Override - public NegativeAge.Match newMatch(final Object... parameters) { - return NegativeAge.Match.newMatch((familytree.Member) parameters[0]); + public VLSFunction.Match newMatch(final Object... parameters) { + return VLSFunction.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction) parameters[0]); } /** - * Inner class allowing the singleton instance of {@link NegativeAge} to be created + * Inner class allowing the singleton instance of {@link VLSFunction} to be created * not at the class load time of the outer class, - * but rather at the first call to {@link NegativeAge#instance()}. + * but rather at the first call to {@link VLSFunction#instance()}. * *

This workaround is required e.g. to support recursion. * */ private static class LazyHolder { - private static final NegativeAge INSTANCE = new NegativeAge(); + private static final VLSFunction INSTANCE = new VLSFunction(); /** * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. @@ -511,11 +497,11 @@ public static Object ensureInitialized() { } private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final NegativeAge.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + private static final VLSFunction.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - private final PParameter parameter_m = new PParameter("m", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFunction")), PParameterDirection.INOUT); - private final List parameters = Arrays.asList(parameter_m); + private final List parameters = Arrays.asList(parameter_term); private GeneratedPQuery() { super(PVisibility.PUBLIC); @@ -523,12 +509,12 @@ private GeneratedPQuery() { @Override public String getFullyQualifiedName() { - return "queries.negativeAge"; + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunction"; } @Override public List getParameterNames() { - return Arrays.asList("m"); + return Arrays.asList("term"); } @Override @@ -542,52 +528,16 @@ public Set doGetContainedBodies() { Set bodies = new LinkedHashSet<>(); { PBody body = new PBody(this); - PVariable var_m = body.getOrCreateVariableByName("m"); - PVariable var_mage = body.getOrCreateVariableByName("mage"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFunction"))); body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_m, parameter_m) + new ExportedParameter(body, var_term, parameter_term) )); - // Member.age(m,mage) - new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "age"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt"))); - new Equality(body, var__virtual_0_, var_mage); - // check(mage<0) - new ExpressionEvaluation(body, new IExpressionEvaluator() { - - @Override - public String getShortDescription() { - return "Expression evaluation from pattern negativeAge"; - } - - @Override - public Iterable getInputParameterNames() { - return Arrays.asList("mage");} - - @Override - public Object evaluateExpression(IValueProvider provider) throws Exception { - Integer mage = (Integer) provider.getValue("mage"); - return evaluateExpression_1_1(mage); - } - }, null); + // VLSFunction(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFunction"))); bodies.add(body); } - { - PAnnotation annotation = new PAnnotation("Constraint"); - annotation.addAttribute("message", "negativeAge"); - annotation.addAttribute("severity", "error"); - annotation.addAttribute("key", Arrays.asList(new Object[] { - new ParameterReference("m") - })); - addAnnotation(annotation); - } return bodies; } } - - private static boolean evaluateExpression_1_1(final Integer mage) { - return ((mage).intValue() < 0); - } } diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/MemberHasParent.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFunctionFof.java similarity index 60% rename from Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/MemberHasParent.java rename to Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFunctionFof.java index 9d6eb3b34..e7a2295c4 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/MemberHasParent.java +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSFunctionFof.java @@ -1,9 +1,9 @@ /** - * Generated from platform:/resource/case.study.pledge.run/src/queries/familyTreeConstraints.vql + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql */ -package queries; +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; -import familytree.Member; +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashSet; @@ -24,11 +24,9 @@ import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey; import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; @@ -43,8 +41,8 @@ * *

Original source: *

- *         pattern memberHasParent(m: Member) = {
- *         	Member.parents(m, _);
+ *         pattern VLSFunctionFof(term: VLSFunctionAsTerm){
+ *         	VLSFunctionAsTerm(term);
  *         }
  * 
* @@ -53,9 +51,9 @@ * */ @SuppressWarnings("all") -public final class MemberHasParent extends BaseGeneratedEMFQuerySpecification { +public final class VLSFunctionFof extends BaseGeneratedEMFQuerySpecification { /** - * Pattern-specific match representation of the queries.memberHasParent pattern, + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunctionFof pattern, * to be used in conjunction with {@link Matcher}. * *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. @@ -67,18 +65,18 @@ public final class MemberHasParent extends BaseGeneratedEMFQuerySpecification parameterNames = makeImmutableList("m"); + private static List parameterNames = makeImmutableList("term"); - private Match(final Member pM) { - this.fM = pM; + private Match(final VLSFunctionAsTerm pTerm) { + this.fTerm = pTerm; } @Override public Object get(final String parameterName) { switch(parameterName) { - case "m": return this.fM; + case "term": return this.fTerm; default: return null; } } @@ -86,60 +84,60 @@ public Object get(final String parameterName) { @Override public Object get(final int index) { switch(index) { - case 0: return this.fM; + case 0: return this.fTerm; default: return null; } } - public Member getM() { - return this.fM; + public VLSFunctionAsTerm getTerm() { + return this.fTerm; } @Override public boolean set(final String parameterName, final Object newValue) { if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("m".equals(parameterName) ) { - this.fM = (Member) newValue; + if ("term".equals(parameterName) ) { + this.fTerm = (VLSFunctionAsTerm) newValue; return true; } return false; } - public void setM(final Member pM) { + public void setTerm(final VLSFunctionAsTerm pTerm) { if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fM = pM; + this.fTerm = pTerm; } @Override public String patternName() { - return "queries.memberHasParent"; + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunctionFof"; } @Override public List parameterNames() { - return MemberHasParent.Match.parameterNames; + return VLSFunctionFof.Match.parameterNames; } @Override public Object[] toArray() { - return new Object[]{fM}; + return new Object[]{fTerm}; } @Override - public MemberHasParent.Match toImmutable() { - return isMutable() ? newMatch(fM) : this; + public VLSFunctionFof.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; } @Override public String prettyPrint() { StringBuilder result = new StringBuilder(); - result.append("\"m\"=" + prettyPrintValue(fM)); + result.append("\"term\"=" + prettyPrintValue(fTerm)); return result.toString(); } @Override public int hashCode() { - return Objects.hash(fM); + return Objects.hash(fTerm); } @Override @@ -149,9 +147,9 @@ public boolean equals(final Object obj) { if (obj == null) { return false; } - if ((obj instanceof MemberHasParent.Match)) { - MemberHasParent.Match other = (MemberHasParent.Match) obj; - return Objects.equals(fM, other.fM); + if ((obj instanceof VLSFunctionFof.Match)) { + VLSFunctionFof.Match other = (VLSFunctionFof.Match) obj; + return Objects.equals(fTerm, other.fTerm); } else { // this should be infrequent if (!(obj instanceof IPatternMatch)) { @@ -163,8 +161,8 @@ public boolean equals(final Object obj) { } @Override - public MemberHasParent specification() { - return MemberHasParent.instance(); + public VLSFunctionFof specification() { + return VLSFunctionFof.instance(); } /** @@ -174,7 +172,7 @@ public MemberHasParent specification() { * @return the empty match. * */ - public static MemberHasParent.Match newEmptyMatch() { + public static VLSFunctionFof.Match newEmptyMatch() { return new Mutable(null); } @@ -182,29 +180,29 @@ public static MemberHasParent.Match newEmptyMatch() { * Returns a mutable (partial) match. * Fields of the mutable match can be filled to create a partial match, usable as matcher input. * - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the new, mutable (partial) match object. * */ - public static MemberHasParent.Match newMutableMatch(final Member pM) { - return new Mutable(pM); + public static VLSFunctionFof.Match newMutableMatch(final VLSFunctionAsTerm pTerm) { + return new Mutable(pTerm); } /** * Returns a new (partial) match. * This can be used e.g. to call the matcher with a partial match. *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the (partial) match object. * */ - public static MemberHasParent.Match newMatch(final Member pM) { - return new Immutable(pM); + public static VLSFunctionFof.Match newMatch(final VLSFunctionAsTerm pTerm) { + return new Immutable(pTerm); } - private static final class Mutable extends MemberHasParent.Match { - Mutable(final Member pM) { - super(pM); + private static final class Mutable extends VLSFunctionFof.Match { + Mutable(final VLSFunctionAsTerm pTerm) { + super(pTerm); } @Override @@ -213,9 +211,9 @@ public boolean isMutable() { } } - private static final class Immutable extends MemberHasParent.Match { - Immutable(final Member pM) { - super(pM); + private static final class Immutable extends VLSFunctionFof.Match { + Immutable(final VLSFunctionAsTerm pTerm) { + super(pTerm); } @Override @@ -226,7 +224,7 @@ public boolean isMutable() { } /** - * Generated pattern matcher API of the queries.memberHasParent pattern, + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunctionFof pattern, * providing pattern-specific query methods. * *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, @@ -236,16 +234,16 @@ public boolean isMutable() { * *

Original source: *

-   * pattern memberHasParent(m: Member) = {
-   * 	Member.parents(m, _);
+   * pattern VLSFunctionFof(term: VLSFunctionAsTerm){
+   * 	VLSFunctionAsTerm(term);
    * }
    * 
* * @see Match - * @see MemberHasParent + * @see VLSFunctionFof * */ - public static class Matcher extends BaseMatcher { + public static class Matcher extends BaseMatcher { /** * Initializes the pattern matcher within an existing VIATRA Query engine. * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. @@ -254,7 +252,7 @@ public static class Matcher extends BaseMatcher { * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation * */ - public static MemberHasParent.Matcher on(final ViatraQueryEngine engine) { + public static VLSFunctionFof.Matcher on(final ViatraQueryEngine engine) { // check if matcher already exists Matcher matcher = engine.getExistingMatcher(querySpecification()); if (matcher == null) { @@ -269,13 +267,13 @@ public static MemberHasParent.Matcher on(final ViatraQueryEngine engine) { * @noreference This method is for internal matcher initialization by the framework, do not call it manually. * */ - public static MemberHasParent.Matcher create() { + public static VLSFunctionFof.Matcher create() { return new Matcher(); } - private static final int POSITION_M = 0; + private static final int POSITION_TERM = 0; - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(MemberHasParent.Matcher.class); + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSFunctionFof.Matcher.class); /** * Initializes the pattern matcher within an existing VIATRA Query engine. @@ -291,12 +289,12 @@ private Matcher() { /** * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return matches represented as a Match object. * */ - public Collection getAllMatches(final Member pM) { - return rawStreamAllMatches(new Object[]{pM}).collect(Collectors.toSet()); + public Collection getAllMatches(final VLSFunctionAsTerm pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); } /** @@ -305,101 +303,101 @@ public Collection getAllMatches(final Member pM) { * NOTE: It is important not to modify the source model while the stream is being processed. * If the match set of the pattern changes during processing, the contents of the stream is undefined. * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return a stream of matches represented as a Match object. * */ - public Stream streamAllMatches(final Member pM) { - return rawStreamAllMatches(new Object[]{pM}); + public Stream streamAllMatches(final VLSFunctionAsTerm pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); } /** * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. * Neither determinism nor randomness of selection is guaranteed. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return a match represented as a Match object, or null if no match is found. * */ - public Optional getOneArbitraryMatch(final Member pM) { - return rawGetOneArbitraryMatch(new Object[]{pM}); + public Optional getOneArbitraryMatch(final VLSFunctionAsTerm pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); } /** * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, * under any possible substitution of the unspecified parameters (if any). - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return true if the input is a valid (partial) match of the pattern. * */ - public boolean hasMatch(final Member pM) { - return rawHasMatch(new Object[]{pM}); + public boolean hasMatch(final VLSFunctionAsTerm pTerm) { + return rawHasMatch(new Object[]{pTerm}); } /** * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the number of pattern matches found. * */ - public int countMatches(final Member pM) { - return rawCountMatches(new Object[]{pM}); + public int countMatches(final VLSFunctionAsTerm pTerm) { + return rawCountMatches(new Object[]{pTerm}); } /** * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. * Neither determinism nor randomness of selection is guaranteed. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @param processor the action that will process the selected match. * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked * */ - public boolean forOneArbitraryMatch(final Member pM, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pM}, processor); + public boolean forOneArbitraryMatch(final VLSFunctionAsTerm pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); } /** * Returns a new (partial) match. * This can be used e.g. to call the matcher with a partial match. *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM the fixed value of pattern parameter m, or null if not bound. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. * @return the (partial) match object. * */ - public MemberHasParent.Match newMatch(final Member pM) { - return MemberHasParent.Match.newMatch(pM); + public VLSFunctionFof.Match newMatch(final VLSFunctionAsTerm pTerm) { + return VLSFunctionFof.Match.newMatch(pTerm); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - protected Stream rawStreamAllValuesOfm(final Object[] parameters) { - return rawStreamAllValues(POSITION_M, parameters).map(Member.class::cast); + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(VLSFunctionAsTerm.class::cast); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - public Set getAllValuesOfm() { - return rawStreamAllValuesOfm(emptyArray()).collect(Collectors.toSet()); + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); } /** - * Retrieve the set of values that occur in matches for m. + * Retrieve the set of values that occur in matches for term. * @return the Set of all values or empty set if there are no matches * */ - public Stream streamAllValuesOfm() { - return rawStreamAllValuesOfm(emptyArray()); + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); } @Override - protected MemberHasParent.Match tupleToMatch(final Tuple t) { + protected VLSFunctionFof.Match tupleToMatch(final Tuple t) { try { - return MemberHasParent.Match.newMatch((Member) t.get(POSITION_M)); + return VLSFunctionFof.Match.newMatch((VLSFunctionAsTerm) t.get(POSITION_TERM)); } catch(ClassCastException e) { LOGGER.error("Element(s) in tuple not properly typed!",e); return null; @@ -407,9 +405,9 @@ protected MemberHasParent.Match tupleToMatch(final Tuple t) { } @Override - protected MemberHasParent.Match arrayToMatch(final Object[] match) { + protected VLSFunctionFof.Match arrayToMatch(final Object[] match) { try { - return MemberHasParent.Match.newMatch((Member) match[POSITION_M]); + return VLSFunctionFof.Match.newMatch((VLSFunctionAsTerm) match[POSITION_TERM]); } catch(ClassCastException e) { LOGGER.error("Element(s) in array not properly typed!",e); return null; @@ -417,9 +415,9 @@ protected MemberHasParent.Match arrayToMatch(final Object[] match) { } @Override - protected MemberHasParent.Match arrayToMatchMutable(final Object[] match) { + protected VLSFunctionFof.Match arrayToMatchMutable(final Object[] match) { try { - return MemberHasParent.Match.newMutableMatch((Member) match[POSITION_M]); + return VLSFunctionFof.Match.newMutableMatch((VLSFunctionAsTerm) match[POSITION_TERM]); } catch(ClassCastException e) { LOGGER.error("Element(s) in array not properly typed!",e); return null; @@ -431,12 +429,12 @@ protected MemberHasParent.Match arrayToMatchMutable(final Object[] match) { * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded * */ - public static IQuerySpecification querySpecification() { - return MemberHasParent.instance(); + public static IQuerySpecification querySpecification() { + return VLSFunctionFof.instance(); } } - private MemberHasParent() { + private VLSFunctionFof() { super(GeneratedPQuery.INSTANCE); } @@ -445,7 +443,7 @@ private MemberHasParent() { * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded * */ - public static MemberHasParent instance() { + public static VLSFunctionFof instance() { try{ return LazyHolder.INSTANCE; } catch (ExceptionInInitializerError err) { @@ -454,35 +452,35 @@ public static MemberHasParent instance() { } @Override - protected MemberHasParent.Matcher instantiate(final ViatraQueryEngine engine) { - return MemberHasParent.Matcher.on(engine); + protected VLSFunctionFof.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSFunctionFof.Matcher.on(engine); } @Override - public MemberHasParent.Matcher instantiate() { - return MemberHasParent.Matcher.create(); + public VLSFunctionFof.Matcher instantiate() { + return VLSFunctionFof.Matcher.create(); } @Override - public MemberHasParent.Match newEmptyMatch() { - return MemberHasParent.Match.newEmptyMatch(); + public VLSFunctionFof.Match newEmptyMatch() { + return VLSFunctionFof.Match.newEmptyMatch(); } @Override - public MemberHasParent.Match newMatch(final Object... parameters) { - return MemberHasParent.Match.newMatch((familytree.Member) parameters[0]); + public VLSFunctionFof.Match newMatch(final Object... parameters) { + return VLSFunctionFof.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm) parameters[0]); } /** - * Inner class allowing the singleton instance of {@link MemberHasParent} to be created + * Inner class allowing the singleton instance of {@link VLSFunctionFof} to be created * not at the class load time of the outer class, - * but rather at the first call to {@link MemberHasParent#instance()}. + * but rather at the first call to {@link VLSFunctionFof#instance()}. * *

This workaround is required e.g. to support recursion. * */ private static class LazyHolder { - private static final MemberHasParent INSTANCE = new MemberHasParent(); + private static final VLSFunctionFof INSTANCE = new VLSFunctionFof(); /** * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. @@ -500,11 +498,11 @@ public static Object ensureInitialized() { } private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final MemberHasParent.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + private static final VLSFunctionFof.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - private final PParameter parameter_m = new PParameter("m", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFunctionAsTerm")), PParameterDirection.INOUT); - private final List parameters = Arrays.asList(parameter_m); + private final List parameters = Arrays.asList(parameter_term); private GeneratedPQuery() { super(PVisibility.PUBLIC); @@ -512,12 +510,12 @@ private GeneratedPQuery() { @Override public String getFullyQualifiedName() { - return "queries.memberHasParent"; + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunctionFof"; } @Override public List getParameterNames() { - return Arrays.asList("m"); + return Arrays.asList("term"); } @Override @@ -531,18 +529,13 @@ public Set doGetContainedBodies() { Set bodies = new LinkedHashSet<>(); { PBody body = new PBody(this); - PVariable var_m = body.getOrCreateVariableByName("m"); - PVariable var___0_ = body.getOrCreateVariableByName("_<0>"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFunctionAsTerm"))); body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_m, parameter_m) + new ExportedParameter(body, var_term, parameter_term) )); - // Member.parents(m, _) - new TypeConstraint(body, Tuples.flatTupleOf(var_m), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "parents"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new Equality(body, var__virtual_0_, var___0_); + // VLSFunctionAsTerm(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSFunctionAsTerm"))); bodies.add(body); } return bodies; diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSInequality.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSInequality.java new file mode 100644 index 000000000..2a58e99c0 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSInequality.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSInequality(term: VLSInequality){
+ *         	VLSInequality(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSInequality extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSInequality pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSInequality"; + } + + @Override + public List parameterNames() { + return VLSInequality.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSInequality.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSInequality.Match)) { + VLSInequality.Match other = (VLSInequality.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSInequality specification() { + return VLSInequality.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSInequality.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSInequality.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSInequality.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSInequality.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSInequality.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSInequality pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSInequality(term: VLSInequality){
+   * 	VLSInequality(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSInequality + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSInequality.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSInequality.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSInequality.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSInequality.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality pTerm) { + return VLSInequality.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSInequality.Match tupleToMatch(final Tuple t) { + try { + return VLSInequality.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSInequality.Match arrayToMatch(final Object[] match) { + try { + return VLSInequality.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSInequality.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSInequality.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSInequality.instance(); + } + } + + private VLSInequality() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSInequality instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSInequality.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSInequality.Matcher.on(engine); + } + + @Override + public VLSInequality.Matcher instantiate() { + return VLSInequality.Matcher.create(); + } + + @Override + public VLSInequality.Match newEmptyMatch() { + return VLSInequality.Match.newEmptyMatch(); + } + + @Override + public VLSInequality.Match newMatch(final Object... parameters) { + return VLSInequality.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSInequality} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSInequality#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSInequality INSTANCE = new VLSInequality(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSInequality.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSInequality")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSInequality"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSInequality"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSInequality(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSInequality"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSOr.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSOr.java new file mode 100644 index 000000000..f254b92cc --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSOr.java @@ -0,0 +1,545 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         //VLSFormula
+ *         pattern VLSOr(term: VLSOr){
+ *         	VLSOr(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSOr extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSOr pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSOr"; + } + + @Override + public List parameterNames() { + return VLSOr.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSOr.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSOr.Match)) { + VLSOr.Match other = (VLSOr.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSOr specification() { + return VLSOr.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSOr.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSOr.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSOr.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSOr.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSOr.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSOr pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * //VLSFormula
+   * pattern VLSOr(term: VLSOr){
+   * 	VLSOr(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSOr + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSOr.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSOr.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSOr.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSOr.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr pTerm) { + return VLSOr.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSOr.Match tupleToMatch(final Tuple t) { + try { + return VLSOr.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSOr.Match arrayToMatch(final Object[] match) { + try { + return VLSOr.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSOr.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSOr.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSOr.instance(); + } + } + + private VLSOr() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSOr instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSOr.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSOr.Matcher.on(engine); + } + + @Override + public VLSOr.Matcher instantiate() { + return VLSOr.Matcher.create(); + } + + @Override + public VLSOr.Match newEmptyMatch() { + return VLSOr.Match.newEmptyMatch(); + } + + @Override + public VLSOr.Match newMatch(final Object... parameters) { + return VLSOr.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSOr} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSOr#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSOr INSTANCE = new VLSOr(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSOr.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSOr")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSOr"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSOr"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSOr(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSOr"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSUnaryNegation.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSUnaryNegation.java new file mode 100644 index 000000000..e8a1b3156 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSUnaryNegation.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSUnaryNegation(term: VLSUnaryNegation){
+ *         	VLSUnaryNegation(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSUnaryNegation extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUnaryNegation pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUnaryNegation"; + } + + @Override + public List parameterNames() { + return VLSUnaryNegation.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSUnaryNegation.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSUnaryNegation.Match)) { + VLSUnaryNegation.Match other = (VLSUnaryNegation.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSUnaryNegation specification() { + return VLSUnaryNegation.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSUnaryNegation.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSUnaryNegation.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSUnaryNegation.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSUnaryNegation.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSUnaryNegation.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUnaryNegation pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSUnaryNegation(term: VLSUnaryNegation){
+   * 	VLSUnaryNegation(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSUnaryNegation + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSUnaryNegation.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSUnaryNegation.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSUnaryNegation.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSUnaryNegation.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation pTerm) { + return VLSUnaryNegation.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSUnaryNegation.Match tupleToMatch(final Tuple t) { + try { + return VLSUnaryNegation.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSUnaryNegation.Match arrayToMatch(final Object[] match) { + try { + return VLSUnaryNegation.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSUnaryNegation.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSUnaryNegation.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSUnaryNegation.instance(); + } + } + + private VLSUnaryNegation() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSUnaryNegation instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSUnaryNegation.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSUnaryNegation.Matcher.on(engine); + } + + @Override + public VLSUnaryNegation.Matcher instantiate() { + return VLSUnaryNegation.Matcher.create(); + } + + @Override + public VLSUnaryNegation.Match newEmptyMatch() { + return VLSUnaryNegation.Match.newEmptyMatch(); + } + + @Override + public VLSUnaryNegation.Match newMatch(final Object... parameters) { + return VLSUnaryNegation.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSUnaryNegation} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSUnaryNegation#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSUnaryNegation INSTANCE = new VLSUnaryNegation(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSUnaryNegation.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUnaryNegation", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSUnaryNegation")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUnaryNegation"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSUnaryNegation"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSUnaryNegation(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSUnaryNegation"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSUniversalQuantifier.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSUniversalQuantifier.java new file mode 100644 index 000000000..39605b340 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VLSUniversalQuantifier.java @@ -0,0 +1,543 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; +import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; +import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; +import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; +import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; +import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; +import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; +import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; + +/** + * A pattern-specific query specification that can instantiate Matcher in a type-safe way. + * + *

Original source: + *

+ *         pattern VLSUniversalQuantifier(term: VLSUniversalQuantifier){
+ *         	VLSUniversalQuantifier(term);
+ *         }
+ * 
+ * + * @see Matcher + * @see Match + * + */ +@SuppressWarnings("all") +public final class VLSUniversalQuantifier extends BaseGeneratedEMFQuerySpecification { + /** + * Pattern-specific match representation of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUniversalQuantifier pattern, + * to be used in conjunction with {@link Matcher}. + * + *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. + * Each instance is a (possibly partial) substitution of pattern parameters, + * usable to represent a match of the pattern in the result of a query, + * or to specify the bound (fixed) input parameters when issuing a query. + * + * @see Matcher + * + */ + public static abstract class Match extends BasePatternMatch { + private ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier fTerm; + + private static List parameterNames = makeImmutableList("term"); + + private Match(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + this.fTerm = pTerm; + } + + @Override + public Object get(final String parameterName) { + switch(parameterName) { + case "term": return this.fTerm; + default: return null; + } + } + + @Override + public Object get(final int index) { + switch(index) { + case 0: return this.fTerm; + default: return null; + } + } + + public ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier getTerm() { + return this.fTerm; + } + + @Override + public boolean set(final String parameterName, final Object newValue) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + if ("term".equals(parameterName) ) { + this.fTerm = (ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier) newValue; + return true; + } + return false; + } + + public void setTerm(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + if (!isMutable()) throw new java.lang.UnsupportedOperationException(); + this.fTerm = pTerm; + } + + @Override + public String patternName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUniversalQuantifier"; + } + + @Override + public List parameterNames() { + return VLSUniversalQuantifier.Match.parameterNames; + } + + @Override + public Object[] toArray() { + return new Object[]{fTerm}; + } + + @Override + public VLSUniversalQuantifier.Match toImmutable() { + return isMutable() ? newMatch(fTerm) : this; + } + + @Override + public String prettyPrint() { + StringBuilder result = new StringBuilder(); + result.append("\"term\"=" + prettyPrintValue(fTerm)); + return result.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(fTerm); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) { + return false; + } + if ((obj instanceof VLSUniversalQuantifier.Match)) { + VLSUniversalQuantifier.Match other = (VLSUniversalQuantifier.Match) obj; + return Objects.equals(fTerm, other.fTerm); + } else { + // this should be infrequent + if (!(obj instanceof IPatternMatch)) { + return false; + } + IPatternMatch otherSig = (IPatternMatch) obj; + return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); + } + } + + @Override + public VLSUniversalQuantifier specification() { + return VLSUniversalQuantifier.instance(); + } + + /** + * Returns an empty, mutable match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @return the empty match. + * + */ + public static VLSUniversalQuantifier.Match newEmptyMatch() { + return new Mutable(null); + } + + /** + * Returns a mutable (partial) match. + * Fields of the mutable match can be filled to create a partial match, usable as matcher input. + * + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the new, mutable (partial) match object. + * + */ + public static VLSUniversalQuantifier.Match newMutableMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return new Mutable(pTerm); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public static VLSUniversalQuantifier.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return new Immutable(pTerm); + } + + private static final class Mutable extends VLSUniversalQuantifier.Match { + Mutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return true; + } + } + + private static final class Immutable extends VLSUniversalQuantifier.Match { + Immutable(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + super(pTerm); + } + + @Override + public boolean isMutable() { + return false; + } + } + } + + /** + * Generated pattern matcher API of the ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUniversalQuantifier pattern, + * providing pattern-specific query methods. + * + *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, + * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. + * + *

Matches of the pattern will be represented as {@link Match}. + * + *

Original source: + *

+   * pattern VLSUniversalQuantifier(term: VLSUniversalQuantifier){
+   * 	VLSUniversalQuantifier(term);
+   * }
+   * 
+ * + * @see Match + * @see VLSUniversalQuantifier + * + */ + public static class Matcher extends BaseMatcher { + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + public static VLSUniversalQuantifier.Matcher on(final ViatraQueryEngine engine) { + // check if matcher already exists + Matcher matcher = engine.getExistingMatcher(querySpecification()); + if (matcher == null) { + matcher = (Matcher)engine.getMatcher(querySpecification()); + } + return matcher; + } + + /** + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * @return an initialized matcher + * @noreference This method is for internal matcher initialization by the framework, do not call it manually. + * + */ + public static VLSUniversalQuantifier.Matcher create() { + return new Matcher(); + } + + private static final int POSITION_TERM = 0; + + private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(VLSUniversalQuantifier.Matcher.class); + + /** + * Initializes the pattern matcher within an existing VIATRA Query engine. + * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. + * + * @param engine the existing VIATRA Query engine in which this matcher will be created. + * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation + * + */ + private Matcher() { + super(querySpecification()); + } + + /** + * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return matches represented as a Match object. + * + */ + public Collection getAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}).collect(Collectors.toSet()); + } + + /** + * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. + *

+ * NOTE: It is important not to modify the source model while the stream is being processed. + * If the match set of the pattern changes during processing, the contents of the stream is undefined. + * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a stream of matches represented as a Match object. + * + */ + public Stream streamAllMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return rawStreamAllMatches(new Object[]{pTerm}); + } + + /** + * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return a match represented as a Match object, or null if no match is found. + * + */ + public Optional getOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return rawGetOneArbitraryMatch(new Object[]{pTerm}); + } + + /** + * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, + * under any possible substitution of the unspecified parameters (if any). + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return true if the input is a valid (partial) match of the pattern. + * + */ + public boolean hasMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return rawHasMatch(new Object[]{pTerm}); + } + + /** + * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the number of pattern matches found. + * + */ + public int countMatches(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return rawCountMatches(new Object[]{pTerm}); + } + + /** + * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. + * Neither determinism nor randomness of selection is guaranteed. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @param processor the action that will process the selected match. + * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked + * + */ + public boolean forOneArbitraryMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm, final Consumer processor) { + return rawForOneArbitraryMatch(new Object[]{pTerm}, processor); + } + + /** + * Returns a new (partial) match. + * This can be used e.g. to call the matcher with a partial match. + *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. + * @param pTerm the fixed value of pattern parameter term, or null if not bound. + * @return the (partial) match object. + * + */ + public VLSUniversalQuantifier.Match newMatch(final ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier pTerm) { + return VLSUniversalQuantifier.Match.newMatch(pTerm); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + protected Stream rawStreamAllValuesOfterm(final Object[] parameters) { + return rawStreamAllValues(POSITION_TERM, parameters).map(ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier.class::cast); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Set getAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()).collect(Collectors.toSet()); + } + + /** + * Retrieve the set of values that occur in matches for term. + * @return the Set of all values or empty set if there are no matches + * + */ + public Stream streamAllValuesOfterm() { + return rawStreamAllValuesOfterm(emptyArray()); + } + + @Override + protected VLSUniversalQuantifier.Match tupleToMatch(final Tuple t) { + try { + return VLSUniversalQuantifier.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier) t.get(POSITION_TERM)); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in tuple not properly typed!",e); + return null; + } + } + + @Override + protected VLSUniversalQuantifier.Match arrayToMatch(final Object[] match) { + try { + return VLSUniversalQuantifier.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + @Override + protected VLSUniversalQuantifier.Match arrayToMatchMutable(final Object[] match) { + try { + return VLSUniversalQuantifier.Match.newMutableMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier) match[POSITION_TERM]); + } catch(ClassCastException e) { + LOGGER.error("Element(s) in array not properly typed!",e); + return null; + } + } + + /** + * @return the singleton instance of the query specification of this pattern + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static IQuerySpecification querySpecification() { + return VLSUniversalQuantifier.instance(); + } + } + + private VLSUniversalQuantifier() { + super(GeneratedPQuery.INSTANCE); + } + + /** + * @return the singleton instance of the query specification + * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded + * + */ + public static VLSUniversalQuantifier instance() { + try{ + return LazyHolder.INSTANCE; + } catch (ExceptionInInitializerError err) { + throw processInitializerError(err); + } + } + + @Override + protected VLSUniversalQuantifier.Matcher instantiate(final ViatraQueryEngine engine) { + return VLSUniversalQuantifier.Matcher.on(engine); + } + + @Override + public VLSUniversalQuantifier.Matcher instantiate() { + return VLSUniversalQuantifier.Matcher.create(); + } + + @Override + public VLSUniversalQuantifier.Match newEmptyMatch() { + return VLSUniversalQuantifier.Match.newEmptyMatch(); + } + + @Override + public VLSUniversalQuantifier.Match newMatch(final Object... parameters) { + return VLSUniversalQuantifier.Match.newMatch((ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier) parameters[0]); + } + + /** + * Inner class allowing the singleton instance of {@link VLSUniversalQuantifier} to be created + * not at the class load time of the outer class, + * but rather at the first call to {@link VLSUniversalQuantifier#instance()}. + * + *

This workaround is required e.g. to support recursion. + * + */ + private static class LazyHolder { + private static final VLSUniversalQuantifier INSTANCE = new VLSUniversalQuantifier(); + + /** + * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. + * This initialization order is required to support indirect recursion. + * + *

The static initializer is defined using a helper field to work around limitations of the code generator. + * + */ + private static final Object STATIC_INITIALIZER = ensureInitialized(); + + public static Object ensureInitialized() { + INSTANCE.ensureInitializedInternal(); + return null; + } + } + + private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { + private static final VLSUniversalQuantifier.GeneratedPQuery INSTANCE = new GeneratedPQuery(); + + private final PParameter parameter_term = new PParameter("term", "ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSUniversalQuantifier")), PParameterDirection.INOUT); + + private final List parameters = Arrays.asList(parameter_term); + + private GeneratedPQuery() { + super(PVisibility.PUBLIC); + } + + @Override + public String getFullyQualifiedName() { + return "ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUniversalQuantifier"; + } + + @Override + public List getParameterNames() { + return Arrays.asList("term"); + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public Set doGetContainedBodies() { + setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); + Set bodies = new LinkedHashSet<>(); + { + PBody body = new PBody(this); + PVariable var_term = body.getOrCreateVariableByName("term"); + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSUniversalQuantifier"))); + body.setSymbolicParameters(Arrays.asList( + new ExportedParameter(body, var_term, parameter_term) + )); + // VLSUniversalQuantifier(term) + new TypeConstraint(body, Tuples.flatTupleOf(var_term), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.mcgill.ca/ecse/dslreasoner/VampireLanguage", "VLSUniversalQuantifier"))); + bodies.add(body); + } + return bodies; + } + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VampireQueries.java b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VampireQueries.java new file mode 100644 index 000000000..2366250b5 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src-gen/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/VampireQueries.java @@ -0,0 +1,174 @@ +/** + * Generated from platform:/resource/ca.mcgill.ecse.dslreasoner.vampire.reasoner/queries/ca/mcgill/ecse/dslreasoner/vampire/reasoner/queries/vampireQueries.vql + */ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries; + +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnd; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSAnnotation; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSComment; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSEquivalent; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSExistentialQuantifier; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFofFormula; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunction; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSFunctionFof; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSInequality; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSOr; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUnaryNegation; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries.VLSUniversalQuantifier; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup; + +/** + * A pattern group formed of all public patterns defined in vampireQueries.vql. + * + *

Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare + * a VIATRA Query engine for matching all patterns originally defined in file vampireQueries.vql, + * in order to achieve better performance than one-by-one on-demand matcher initialization. + * + *

From package ca.mcgill.ecse.dslreasoner.vampire.reasoner.queries, the group contains the definition of the following patterns:

    + *
  • VLSComment
  • + *
  • VLSFofFormula
  • + *
  • VLSAnnotation
  • + *
  • VLSOr
  • + *
  • VLSAnd
  • + *
  • VLSEquivalent
  • + *
  • VLSFunction
  • + *
  • VLSExistentialQuantifier
  • + *
  • VLSUniversalQuantifier
  • + *
  • VLSUnaryNegation
  • + *
  • VLSInequality
  • + *
  • VLSFunctionFof
  • + *
+ * + * @see IQueryGroup + * + */ +@SuppressWarnings("all") +public final class VampireQueries extends BaseGeneratedPatternGroup { + /** + * Access the pattern group. + * + * @return the singleton instance of the group + * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications + * + */ + public static VampireQueries instance() { + if (INSTANCE == null) { + INSTANCE = new VampireQueries(); + } + return INSTANCE; + } + + private static VampireQueries INSTANCE; + + private VampireQueries() { + querySpecifications.add(VLSComment.instance()); + querySpecifications.add(VLSFofFormula.instance()); + querySpecifications.add(VLSAnnotation.instance()); + querySpecifications.add(VLSOr.instance()); + querySpecifications.add(VLSAnd.instance()); + querySpecifications.add(VLSEquivalent.instance()); + querySpecifications.add(VLSFunction.instance()); + querySpecifications.add(VLSExistentialQuantifier.instance()); + querySpecifications.add(VLSUniversalQuantifier.instance()); + querySpecifications.add(VLSUnaryNegation.instance()); + querySpecifications.add(VLSInequality.instance()); + querySpecifications.add(VLSFunctionFof.instance()); + } + + public VLSComment getVLSComment() { + return VLSComment.instance(); + } + + public VLSComment.Matcher getVLSComment(final ViatraQueryEngine engine) { + return VLSComment.Matcher.on(engine); + } + + public VLSFofFormula getVLSFofFormula() { + return VLSFofFormula.instance(); + } + + public VLSFofFormula.Matcher getVLSFofFormula(final ViatraQueryEngine engine) { + return VLSFofFormula.Matcher.on(engine); + } + + public VLSAnnotation getVLSAnnotation() { + return VLSAnnotation.instance(); + } + + public VLSAnnotation.Matcher getVLSAnnotation(final ViatraQueryEngine engine) { + return VLSAnnotation.Matcher.on(engine); + } + + public VLSOr getVLSOr() { + return VLSOr.instance(); + } + + public VLSOr.Matcher getVLSOr(final ViatraQueryEngine engine) { + return VLSOr.Matcher.on(engine); + } + + public VLSAnd getVLSAnd() { + return VLSAnd.instance(); + } + + public VLSAnd.Matcher getVLSAnd(final ViatraQueryEngine engine) { + return VLSAnd.Matcher.on(engine); + } + + public VLSEquivalent getVLSEquivalent() { + return VLSEquivalent.instance(); + } + + public VLSEquivalent.Matcher getVLSEquivalent(final ViatraQueryEngine engine) { + return VLSEquivalent.Matcher.on(engine); + } + + public VLSFunction getVLSFunction() { + return VLSFunction.instance(); + } + + public VLSFunction.Matcher getVLSFunction(final ViatraQueryEngine engine) { + return VLSFunction.Matcher.on(engine); + } + + public VLSExistentialQuantifier getVLSExistentialQuantifier() { + return VLSExistentialQuantifier.instance(); + } + + public VLSExistentialQuantifier.Matcher getVLSExistentialQuantifier(final ViatraQueryEngine engine) { + return VLSExistentialQuantifier.Matcher.on(engine); + } + + public VLSUniversalQuantifier getVLSUniversalQuantifier() { + return VLSUniversalQuantifier.instance(); + } + + public VLSUniversalQuantifier.Matcher getVLSUniversalQuantifier(final ViatraQueryEngine engine) { + return VLSUniversalQuantifier.Matcher.on(engine); + } + + public VLSUnaryNegation getVLSUnaryNegation() { + return VLSUnaryNegation.instance(); + } + + public VLSUnaryNegation.Matcher getVLSUnaryNegation(final ViatraQueryEngine engine) { + return VLSUnaryNegation.Matcher.on(engine); + } + + public VLSInequality getVLSInequality() { + return VLSInequality.instance(); + } + + public VLSInequality.Matcher getVLSInequality(final ViatraQueryEngine engine) { + return VLSInequality.Matcher.on(engine); + } + + public VLSFunctionFof getVLSFunctionFof() { + return VLSFunctionFof.instance(); + } + + public VLSFunctionFof.Matcher getVLSFunctionFof(final ViatraQueryEngine engine) { + return VLSFunctionFof.Matcher.on(engine); + } +} diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend new file mode 100644 index 000000000..c3b344eb2 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireAnalyzerConfiguration.xtend @@ -0,0 +1,36 @@ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner + +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration + +class VampireSolverConfiguration + extends LogicSolverConfiguration { + + public var int contCycleLevel = 0 + public var boolean uniquenessDuplicates = false + public var int iteration = -1 + public var BackendSolver solver = BackendSolver::LOCVAMP + public var genModel = true + public var server = false + //choose needed backend solver +// public var VampireBackendSolver solver = VampireBackendSolver.SAT4J +} + + +enum BackendSolver { + CVC4, + DARWINFM, + EDARWIN, + GEOIII, + IPROVER, + PARADOX, + VAMPIRE, + Z3, + LOCVAMP + //add needed things +} + + +enum TypeMappingTechnique { + //default + FilteredTypes +} \ No newline at end of file diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend new file mode 100644 index 000000000..4b8b10a96 --- /dev/null +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/VampireSolver.xtend @@ -0,0 +1,284 @@ +package ca.mcgill.ecse.dslreasoner.vampire.reasoner + +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetupGenerated +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapperTrace +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Logic2VampireLanguageMapper_Support +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.MonitoredVampireSolution +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.Vampire2LogicMapper +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireHandler +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder.VampireModelInterpretation +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguagePackage +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration +import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSFiniteModelImpl + +class VampireSolver extends LogicReasoner { + + new() { + VampireLanguagePackage.eINSTANCE.eClass + val x = new VampireLanguageStandaloneSetupGenerated + VampireLanguageStandaloneSetup::doSetup() + } + + val Logic2VampireLanguageMapper forwardMapper = new Logic2VampireLanguageMapper + val Vampire2LogicMapper backwardMapper = new Vampire2LogicMapper + val VampireHandler handler = new VampireHandler + val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support + val extension LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE + private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE + +// var fileName = "problem.tptp" +// def solve(LogicProblem problem, LogicSolverConfiguration config, ReasonerWorkspace workspace, String location) { +// fileName = location + fileName +// solve(problem, config, workspace) +// } + override solve(LogicProblem problem, LogicSolverConfiguration config, + ReasonerWorkspace workspace) throws LogicReasonerException { + val vampireConfig = config.asConfig + var fileName = "problem_" + vampireConfig.typeScopes.minNewElements + "-" + + vampireConfig.typeScopes.maxNewElements + ".tptp" + + // Start: Logic -> Vampire mapping + val transformationStart = System.currentTimeMillis + // TODO + val result = forwardMapper.transformProblem(problem, vampireConfig) + val transformationTime = System.currentTimeMillis - transformationStart + + val vampireProblem = result.output + val forwardTrace = result.trace + + var String fileURI = null; + var String vampireCode = null; + vampireCode = workspace.writeModelToString(vampireProblem, fileName) + + val writeFile = ( + vampireConfig.documentationLevel === DocumentationLevel::NORMAL || + vampireConfig.documentationLevel === DocumentationLevel::FULL) + if (writeFile) { + fileURI = workspace.writeModel(vampireProblem, fileName).toFileString + } + +// Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("tptp", new VampireLanguageFactoryImpl) +//// val Resource resource = Resource. +//// Resource.getResource(wsURI+"problem.tptp") as Resource +//// resource +// val model = workspace.readModel(VampireModel, "problem.tptp").eResource.contents +// println(model) + // Finish: Logic -> Vampire mapping + if (vampireConfig.genModel) { + if (vampireConfig.server) { + val form = support.makeForm(vampireCode, vampireConfig.solver, vampireConfig.runtimeLimit) + var response = newArrayList + var ind = 0 + var done = false + print(" ") + while (!done) { +// print("(x)") + done = false + response = support.sendPost(form) + + var responseFound = false + ind = 0 + while (!responseFound && ind= 5 && line.substring(0, 5) == "ERROR") { + done = false + responseFound = true + } else { + if (line == "" && response.get(ind-1) != "
") {
+								done = true
+								responseFound = true
+							}
+						}
+						ind++
+					}
+					if (!done) println("(Server call failed. Trying again...)")
+				}
+				val satRaw = response.get(ind - 3)
+				val modRaw = response.get(ind - 2)
+
+				val sat = newArrayList(satRaw.split(" "))
+				val mod = newArrayList(modRaw.split(" "))
+
+				val satOut = sat.get(1)
+				val modOut = mod.get(1)
+				val satTime = sat.get(2)
+				val modTime = mod.get(2)
+
+				println()
+				println(sat)
+				println(mod)
+				
+				return createUndecidableResult => [
+					it.statistics = createStatistics => [
+						it.transformationTime = transformationTime as int
+						it.entries += createStringStatisticEntry => [
+							it.name = "satOut"
+							it.value = satOut
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "satTime"
+							it.value = satTime
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modOut"
+							it.value = modOut
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modTime"
+							it.value = modTime
+						]
+
+					]
+				]
+					
+				/*
+				 * TODO
+				return createModelResult => [
+					it.problem = null
+					it.representation += createVampireModel => []//TODO Add something here
+					it.trace = trace
+					it.statistics = createStatistics => [
+						it.transformationTime = transformationTime as int
+						it.entries += createStringStatisticEntry => [
+							it.name = "satOut"
+							it.value = satOut
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "satTime"
+							it.value = satTime
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modOut"
+							it.value = modOut
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modTime"
+							it.value = modTime
+						]
+
+					]
+				]
+				*/
+
+//				return newArrayList(line1, line2)
+			} else {
+
+				// Start: Solving .tptp problem
+				println()
+				val MonitoredVampireSolution vampSol = handler.callSolver(vampireProblem, workspace, vampireConfig)
+				// Finish: Solving .tptp problem
+				// Start: Vampire -> Logic mapping
+//				val backTransformationStart = System.currentTimeMillis
+//				// Backwards Mapper
+//				val logicResult = backwardMapper.transformOutput(problem,
+//					vampireConfig.solutionScope.numberOfRequiredSolution, vampSol, forwardTrace, transformationTime)
+//
+//				val backTransformationTime = System.currentTimeMillis - backTransformationStart
+				// Finish: Vampire -> Logic Mapping
+//		print(vampSol.generatedModel.tfformulas.size)
+
+//				return logicResult // currently only a ModelResult
+
+//				var model = vampSol.generatedModel.confirmations.filter[class == VLSFiniteModelImpl]
+//				
+				var modOut = "no"
+				if(vampSol.finiteModelGenerated){
+					modOut = "FiniteModel"
+				}
+				
+				val realModOut=modOut
+				
+				return createUndecidableResult => [
+					it.statistics = createStatistics => [
+						it.transformationTime = transformationTime as int
+						it.entries += createStringStatisticEntry => [
+							it.name = "satOut"
+							it.value = "-"
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "satTime"
+							it.value = "-"
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modOut"
+							it.value = realModOut
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modTime"
+							it.value = (vampSol.solverTime/1000.0).toString
+						]
+
+					]
+				]
+				
+				/*
+				return createModelResult => [
+					it.problem = null
+					it.representation += createVampireModel => []
+					it.trace = trace
+					it.statistics = createStatistics => [
+						it.transformationTime = transformationTime as int
+						it.entries += createStringStatisticEntry => [
+							it.name = "satOut"
+							it.value = "-"
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "satTime"
+							it.value = "-"
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modOut"
+							it.value = realModOut
+						]
+						it.entries += createStringStatisticEntry => [
+							it.name = "modTime"
+							it.value = (vampSol.solverTime/1000.0).toString
+						]
+
+					]
+				]
+				*/
+			}
+		}
+//		return backwardMapper.transformOutput(problem, vampireConfig.solutionScope.numberOfRequiredSolution,
+//			new MonitoredVampireSolution(-1, null), forwardTrace, transformationTime)
+	}
+
+	def asConfig(LogicSolverConfiguration configuration) {
+		if (configuration instanceof VampireSolverConfiguration) {
+			return configuration
+		} else {
+			throw new IllegalArgumentException('''The configuration have to be an «VampireSolverConfiguration.simpleName»!''')
+		}
+	}
+
+//	/*
+//	 * not for now
+//	 * 
+	override getInterpretations(ModelResult modelResult) {
+//		 val answers = (modelResult.representation as MonitoredAlloySolution).aswers.map[key]
+		val sols = modelResult.representation // as List
+		// val res = answers.map 
+		sols.map [
+			new VampireModelInterpretation(
+//				forwardMapper.typeMapper.typeInterpreter,
+				it as VampireModel,
+//				forwardMapper,
+				modelResult.trace as Logic2VampireLanguageMapperTrace
+			)
+		]
+	}
+//	*/
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
new file mode 100644
index 000000000..60309f2de
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
@@ -0,0 +1,435 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
+import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.And
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.BoolLiteral
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.BoolTypeReference
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Distinct
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Equals
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Exists
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Forall
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Iff
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Impl
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.InstanceOf
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntLiteral
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Not
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Or
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.SymbolicValue
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.RelationDefinitionImpl
+import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
+import java.util.Collections
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+import org.eclipse.xtend.lib.annotations.Accessors
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.RelationDeclarationImpl
+
+class Logic2VampireLanguageMapper {
+	private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+	private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support;
+	@Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_ConstantMapper constantMapper = new Logic2VampireLanguageMapper_ConstantMapper(
+		this)
+	@Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_ContainmentMapper containmentMapper = new Logic2VampireLanguageMapper_ContainmentMapper(
+		this)
+	@Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_RelationMapper relationMapper = new Logic2VampireLanguageMapper_RelationMapper(
+		this)
+	@Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_ScopeMapper scopeMapper = new Logic2VampireLanguageMapper_ScopeMapper(
+		this)
+	@Accessors(PUBLIC_GETTER) private val Logic2VampireLanguageMapper_TypeMapper typeMapper = new Logic2VampireLanguageMapper_TypeMapper(
+		this)
+
+	public def TracedOutput transformProblem(LogicProblem problem,
+		VampireSolverConfiguration config) {
+		// create model bases
+		// TODO
+		val initialComment = createVLSComment => [
+			it.comment = "%This is an initial Test Comment"
+		]
+
+		val specification = createVampireModel => [
+			it.comments += initialComment
+		]
+
+		val trace = new Logic2VampireLanguageMapperTrace => [
+			it.specification = specification
+
+//			it.incQueryEngine = viatraQueryEngine.on(new EMFScope(problem))
+		]
+
+		// TYPE MAPPER
+		if (!problem.types.isEmpty) {
+			typeMapper.transformTypes(problem.types, problem.elements, this, trace)
+		}
+
+		// RELATION MAPPER
+		trace.relationDefinitions = problem.collectRelationDefinitions
+//		println(problem.relations.filter[class == RelationDefinitionImpl])
+		toTrace(problem.relations.filter[class == RelationDefinitionImpl], trace)
+		problem.relations.forEach[this.relationMapper.transformRelation(it, trace, new Logic2VampireLanguageMapper)]
+
+		// CONTAINMENT MAPPER
+		containmentMapper.transformContainment(config, problem.containmentHierarchies, trace)
+
+		// SCOPE MAPPER
+		scopeMapper.transformScope(problem.types, config, trace)
+
+		// CONSTANT MAPPER
+		// only transforms definitions
+		trace.constantDefinitions = problem.collectConstantDefinitions
+		// problem.constants.filter(ConstantDefinition).forEach[this.constantMapper.transformConstant(it, trace)]
+		problem.constants.filter(ConstantDefinition).forEach [
+			this.constantMapper.transformConstantDefinitionSpecification(it, trace)
+		]
+
+		// ASSERTION MAPPER
+		for (assertion : problem.assertions) {
+			transformAssertion(assertion, trace)
+		}
+		// OUTPUT
+		return new TracedOutput(specification, trace)
+	}
+
+	def toTrace(Iterable relations, Logic2VampireLanguageMapperTrace trace) {
+		val List vars = newArrayList
+		for (rel : relations) {
+			//decide name
+			val nameArray = rel.name.split(" ")
+			var relNameVar = ""
+			if (nameArray.length == 3) {
+				relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2))
+			} else {
+				relNameVar = rel.name
+			}
+			val relName = relNameVar
+			
+			val relDef = rel as RelationDefinition
+			for (i : 0 ..< rel.parameters.length) {
+
+				val v = createVLSVariable => [
+					it.name = support.toIDMultiple("V", i.toString)
+				]
+				vars.add(v)
+			}
+
+			val relFunc = createVLSFunction => [
+				it.constant = support.toIDMultiple("r", relName)
+				for (v : vars) {
+					it.terms += support.duplicate(v)
+				}
+			]
+			trace.relDef2Predicate.put(relDef, relFunc)
+			trace.predicate2RelDef.put(relFunc, relDef)
+		}
+	}
+
+	// End of transformProblem
+	// ////////////
+	// Type References
+	// ////////////
+	def dispatch protected VLSTerm transformTypeReference(BoolTypeReference boolTypeReference,
+		Logic2VampireLanguageMapperTrace trace) {
+		// TODO, Not Now
+		// return createALSReference => [ it.referred = support.getBooleanType(trace) ]
+	}
+
+	// ////////////
+	// Collectors
+	// ////////////
+	// exact Same as for Alloy
+	private def collectConstantDefinitions(LogicProblem problem) {
+		val res = new HashMap
+		problem.constants.filter(ConstantDefinition).filter[it.defines !== null].forEach [
+			res.put(it.defines, it)
+		]
+		return res
+	}
+
+	private def collectRelationDefinitions(LogicProblem problem) {
+		val res = new HashMap
+		problem.relations.filter(RelationDefinition).filter[it.defines !== null].forEach [
+			res.put(it.defines, it)
+		]
+		return res
+	}
+
+	// ////////////
+	// Assertions + Terms
+	// ////////////
+	def protected transformAssertion(Assertion assertion, Logic2VampireLanguageMapperTrace trace) {
+		val res = createVLSFofFormula => [
+			it.name = support.toID("assertion_" + assertion.name)
+			// below is temporary solution
+			it.fofRole = "axiom"
+			it.fofFormula = assertion.value.transformTerm(trace, Collections.EMPTY_MAP)
+		// it.annotation = nothing			
+		]
+		trace.specification.formulas += res
+	}
+
+	def dispatch protected VLSTerm transformTerm(BoolLiteral literal, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		if (literal.value == true) {
+			createVLSTrue
+		} else {
+			createVLSFalse
+		}
+	}
+
+	def dispatch protected VLSTerm transformTerm(IntLiteral literal, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		createVLSInt => [it.value = literal.value.toString()]
+	}
+
+//	def dispatch protected VLSTerm transformTerm(RealLiteral literal, Logic2VampireLanguageMapperTrace trace,
+//		Map variables) {
+//		createVLSReal => [it.value = literal.value.toString()]
+//	}
+	def dispatch protected VLSTerm transformTerm(Not not, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		createVLSUnaryNegation => [operand = not.operand.transformTerm(trace, variables)]
+	}
+
+	def dispatch protected VLSTerm transformTerm(And and, Logic2VampireLanguageMapperTrace trace,
+		Map variables) { support.unfoldAnd(and.operands.map[transformTerm(trace, variables)]) }
+
+	def dispatch protected VLSTerm transformTerm(Or or, Logic2VampireLanguageMapperTrace trace,
+		Map variables) { support.unfoldOr(or.operands.map[transformTerm(trace, variables)]) }
+
+	def dispatch protected VLSTerm transformTerm(Impl impl, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		createVLSImplies => [
+			left = impl.leftOperand.transformTerm(trace, variables)
+			right = impl.rightOperand.transformTerm(trace, variables)
+		]
+	}
+
+	def dispatch protected VLSTerm transformTerm(Iff iff, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		createVLSEquivalent => [
+			left = iff.leftOperand.transformTerm(trace, variables)
+			right = iff.rightOperand.transformTerm(trace, variables)
+		]
+	}
+
+//	def dispatch protected VLSTerm transformTerm(MoreThan moreThan, Logic2VampireLanguageMapperTrace trace, Map variables) {
+//		createALSMore => [leftOperand = moreThan.leftOperand.transformTerm(trace,variables) rightOperand = moreThan.rightOperand.transformTerm(trace,variables)] }
+//	def dispatch protected VLSTerm transformTerm(LessThan lessThan, Logic2VampireLanguageMapperTrace trace, Map variables) {
+//		createALSLess => [leftOperand = lessThan.leftOperand.transformTerm(trace,variables) rightOperand = lessThan.rightOperand.transformTerm(trace,variables)] }
+//	def dispatch protected VLSTerm transformTerm(MoreOrEqualThan moreThan, Logic2VampireLanguageMapperTrace trace, Map variables) {
+//		createALSMeq => [leftOperand = moreThan.leftOperand.transformTerm(trace,variables) rightOperand = moreThan.rightOperand.transformTerm(trace,variables)] }
+//	def dispatch protected VLSTerm transformTerm(LessOrEqualThan lessThan, Logic2VampireLanguageMapperTrace trace, Map variables) {
+//		createALSLeq => [leftOperand = lessThan.leftOperand.transformTerm(trace,variables) rightOperand = lessThan.rightOperand.transformTerm(trace,variables)] }
+	def dispatch protected VLSTerm transformTerm(Equals equals, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		createVLSEquality => [
+			left = equals.leftOperand.transformTerm(trace, variables)
+			right = equals.rightOperand.transformTerm(trace, variables)
+		]
+	}
+
+	def dispatch protected VLSTerm transformTerm(Distinct distinct, Logic2VampireLanguageMapperTrace trace,
+		Map variables) { support.unfoldDistinctTerms(this, distinct.operands, trace, variables) }
+
+//	
+//		def dispatch protected ALSTerm transformTerm(Plus plus, Logic2AlloyLanguageMapperTrace trace, Map variables) {
+//		createALSFunctionCall => [it.params += plus.leftOperand.transformTerm(trace,variables) it.params += plus.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.PLUS] }
+//	def dispatch protected ALSTerm transformTerm(Minus minus, Logic2AlloyLanguageMapperTrace trace, Map variables) {
+//		createALSFunctionCall => [it.params += minus.leftOperand.transformTerm(trace,variables) it.params += minus.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.SUB] }
+//	def dispatch protected ALSTerm transformTerm(Multiply multiply, Logic2AlloyLanguageMapperTrace trace, Map variables) {
+//		createALSFunctionCall => [it.params += multiply.leftOperand.transformTerm(trace,variables) it.params += multiply.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.MUL] }
+//	def dispatch protected ALSTerm transformTerm(Divison div, Logic2AlloyLanguageMapperTrace trace, Map variables) {
+//		createALSFunctionCall => [it.params += div.leftOperand.transformTerm(trace,variables) it.params += div.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.DIV] }
+//	def dispatch protected ALSTerm transformTerm(Mod mod, Logic2AlloyLanguageMapperTrace trace, Map variables) {
+//		createALSFunctionCall => [it.params += mod.leftOperand.transformTerm(trace,variables) it.params += mod.rightOperand.transformTerm(trace,variables) it.referredNumericOperator = ALSNumericOperator.REM] }
+//	
+	def dispatch protected VLSTerm transformTerm(Forall forall, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		support.createQuantifiedExpression(this, forall, trace, variables, true)
+	}
+
+	def dispatch protected VLSTerm transformTerm(Exists exists, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		support.createQuantifiedExpression(this, exists, trace, variables, false)
+	}
+
+	def dispatch protected VLSTerm transformTerm(InstanceOf instanceOf, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		return createVLSFunction => [
+			it.constant = (instanceOf.range as ComplexTypeReference).referred.lookup(trace.type2Predicate).constant
+			it.terms += instanceOf.value.transformTerm(trace, variables)
+		]
+	}
+
+//	
+//	def dispatch protected ALSTerm transformTerm(TransitiveClosure tc, Logic2AlloyLanguageMapperTrace trace, Map variables) {
+//		return this.relationMapper.transformTransitiveRelationReference(
+//			tc.relation,
+//			tc.leftOperand.transformTerm(trace,variables),
+//			tc.rightOperand.transformTerm(trace,variables),
+//			trace
+//		)
+//	}
+//	
+	def dispatch protected VLSTerm transformTerm(SymbolicValue symbolicValue, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		symbolicValue.symbolicReference.transformSymbolicReference(symbolicValue.parameterSubstitutions, trace,
+			variables)
+	}
+
+	def dispatch protected VLSTerm transformSymbolicReference(DefinedElement referred,
+		List parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		val name = referred.lookup(trace.definedElement2String)
+		return createVLSConstant => [
+			it.name = name
+		]
+//		typeMapper.transformReference(referred, trace)
+	}
+
+	def dispatch protected VLSTerm transformSymbolicReference(ConstantDeclaration constant,
+		List parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+		// might need to make sure that only declared csts get transformed. see for Alloy
+		val res = createVLSConstant => [
+			// ask if necessary VLSConstantDeclaration and not just directly strng
+			it.name = support.toID(constant.name)
+		]
+		// no postprocessing cuz booleans are accepted
+		return res
+	}
+
+	// NOT NEEDED FOR NOW
+	// TODO
+	def dispatch protected VLSTerm transformSymbolicReference(ConstantDefinition constant,
+		List parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+//		val res = createVLSFunctionCall => [
+//			it.referredDefinition = constant.lookup(trace.constantDefinition2Function)
+//		]
+//		return support.postprocessResultOfSymbolicReference(constant.type,res,trace)
+	}
+
+	def dispatch protected VLSTerm transformSymbolicReference(Variable variable, List parameterSubstitutions,
+		Logic2VampireLanguageMapperTrace trace, Map variables) {
+
+		// cannot treat variable as function (constant) because of name ID not being the same
+		// no need for potprocessing cuz booleans are supported
+		return support.duplicate(variable.lookup(variables))
+	}
+
+	// TODO
+	def dispatch protected VLSTerm transformSymbolicReference(FunctionDeclaration function,
+		List parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+//		if(trace.functionDefinitions.containsKey(function)) {
+//			return this.transformSymbolicReference(function.lookup(trace.functionDefinitions),parameterSubstitutions,trace,variables)
+//		} else {
+//			if(functionMapper.transformedToHostedField(function,trace)) {
+//				val param = parameterSubstitutions.get(0).transformTerm(trace,variables)
+//				val res = createVLSJoin => [
+//					leftOperand = support.prepareParameterOfSymbolicReference(function.parameters.get(0),param,trace)
+//					rightOperand = createVLSReference => [referred = function.lookup(trace.functionDeclaration2HostedField)]
+//				]
+//				return support.postprocessResultOfSymbolicReference(function.range,res,trace)
+//			} else {
+//				val functionExpression = createVLSJoin=>[
+//						leftOperand = createVLSReference => [referred = trace.logicLanguage]
+//						rightOperand = createVLSReference => [referred = function.lookup(trace.functionDeclaration2LanguageField)]
+//					]
+//				val res =  support.unfoldDotJoin(this,parameterSubstitutions,functionExpression,trace,variables)
+//				return support.postprocessResultOfSymbolicReference(function.range,res,trace)
+//			}
+//		}
+	}
+
+	// TODO
+	def dispatch protected VLSTerm transformSymbolicReference(FunctionDefinition function,
+		List parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
+		Map variables) {
+//		val result = createVLSFunctionCall => [
+//			it.referredDefinition = function.lookup(trace.functionDefinition2Function)
+//			it.params += parameterSubstitutions.map[it.transformTerm(trace,variables)]
+//		]
+//		return support.postprocessResultOfSymbolicReference(function.range,result,trace)
+	}
+
+	// TODO
+	/*
+	 * def dispatch protected VLSTerm transformSymbolicReference(Relation relation,
+	 * 	List parameterSubstitutions, Logic2VampireLanguageMapperTrace trace,
+	 * 	Map variables) {
+	 * 	if (trace.relationDefinitions.containsKey(relation)) {
+	 * 		this.transformSymbolicReference(relation.lookup(trace.relationDefinitions),
+	 * 			parameterSubstitutions, trace, variables)
+	 * 	}
+	 * 	else {
+	 * //						if (relationMapper.transformToHostedField(relation, trace)) {
+	 * //							val VLSRelation = relation.lookup(trace.relationDeclaration2Field)
+	 * //							// R(a,b) =>
+	 * //							// b in a.R
+	 * //							return createVLSSubset => [
+	 * //								it.leftOperand = parameterSubstitutions.get(1).transformTerm(trace, variables)
+	 * //								it.rightOperand = createVLSJoin => [
+	 * //									it.leftOperand = parameterSubstitutions.get(0).transformTerm(trace, variables)
+	 * //									it.rightOperand = createVLSReference => [it.referred = VLSRelation]
+	 * //								]
+	 * //							]
+	 * //						} else {
+	 * //							val target = createVLSJoin => [
+	 * //								leftOperand = createVLSReference => [referred = trace.logicLanguage]
+	 * //								rightOperand = createVLSReference => [
+	 * //									referred = relation.lookup(trace.relationDeclaration2Global)
+	 * //								]
+	 * //							]
+	 * //							val source = support.unfoldTermDirectProduct(this, parameterSubstitutions, trace, variables)
+	 * //
+	 * //							return createVLSSubset => [
+	 * //								leftOperand = source
+	 * //								rightOperand = target
+	 * //							]
+	 * //						}
+	 * 	}
+	 * }
+	 */
+	// TODO
+	def dispatch protected VLSTerm transformSymbolicReference(Relation relation, List parameterSubstitutions,
+		Logic2VampireLanguageMapperTrace trace, Map variables) {
+//					 createVLSFunction => [
+//						it.referredDefinition = relation.lookup(trace.relationDefinition2Predicate)
+//						it.params += parameterSubstitutions.map[p|p.transformTerm(trace, variables)]
+//					]
+//		println(relation.name)
+//		if(relation.class == RelationDefinitionImpl) {
+//			println("(" + (relation as RelationDefinition).getDefines + ")")
+//		}
+		return createVLSFunction => [
+			if (relation.class == RelationDeclarationImpl) {
+				it.constant = (relation as RelationDeclaration).lookup(trace.rel2Predicate).constant
+			} else {
+				it.constant = (relation as RelationDefinition).lookup(trace.relDef2Predicate).constant
+			}
+
+			it.terms += parameterSubstitutions.map[p|p.transformTerm(trace, variables)]
+		]
+	}
+
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapperTrace.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapperTrace.xtend
new file mode 100644
index 000000000..13778dee3
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapperTrace.xtend
@@ -0,0 +1,66 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+
+interface Logic2VampireLanguageMapper_TypeMapperTrace {}
+
+class Logic2VampireLanguageMapperTrace {
+//	public var ViatraQueryEngine incQueryEngine;
+
+	//list of needed VLS components
+	public var VampireModel specification
+	public var VLSFofFormula logicLanguageBody
+	public var VLSTerm formula
+	
+	//Necessary containers
+	public var Logic2VampireLanguageMapper_TypeMapperTrace typeMapperTrace
+	
+	public var Map definedElement2String = new HashMap
+	public var topLvlElementIsInInitialModel = null
+	public var topLevelType = null
+	
+	public val Map type2Predicate = new HashMap;
+	public val Map predicate2Type = new HashMap;
+	public val Map element2Predicate = new HashMap
+	public val Map type2PossibleNot = new HashMap
+	public val Map type2And = new HashMap
+	//Uniqueness
+	public val List uniqueInstances = newArrayList
+	
+	
+	public var Map constantDefinitions
+	public var Map relationDefinitions
+	public var Map rel2Predicate = new HashMap
+	public var Map predicate2Relation = new HashMap
+	public var Map relDef2Predicate = new HashMap
+	public var Map predicate2RelDef = new HashMap
+	
+	
+//NOT NEEDED	//public var VLSFunction constantDec
+	
+	
+	
+	
+//NOT NEEDED  	//public val Map constantDeclaration2LanguageField = new HashMap
+	//public val Map constantDefinition2Function = new HashMap
+	
+	
+	public val Map relationVar2VLS = new HashMap
+	public val Map relationVar2TypeDec = new HashMap
+		
+}
\ No newline at end of file
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_AssertionMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_AssertionMapper.xtend
new file mode 100644
index 000000000..cf218270e
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_AssertionMapper.xtend
@@ -0,0 +1,5 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+class Logic2VampireLanguageMapper_AssertionMapper {
+	
+}
\ No newline at end of file
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ConstantMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ConstantMapper.xtend
new file mode 100644
index 000000000..2366ea157
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ConstantMapper.xtend
@@ -0,0 +1,42 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDefinition
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+
+class Logic2VampireLanguageMapper_ConstantMapper {
+	private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+	private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
+	val Logic2VampireLanguageMapper base
+	
+	public new(Logic2VampireLanguageMapper base) {
+		this.base = base
+	}
+	
+//NOT NEEDED
+//	def protected dispatch transformConstant(ConstantDeclaration constant, Logic2VampireLanguageMapperTrace trace) {
+//		val c = createVLSFunctionDeclaration=> [
+//			it.name = support.toID(constant.name)
+//		]
+//		trace.constantDec.constant = c
+//		trace.constantDeclaration2LanguageField.put(constant, c);
+//		
+//	}
+	
+//NOT Used In Sample	
+	def protected dispatch transformConstant(ConstantDefinition constant, Logic2VampireLanguageMapperTrace trace) {
+		//error
+		//TODO
+//		val c = createVLSFofFormula=> [
+//			name = support.toID(constant.name)
+//			fofRole = "axiom"
+//			fofFormula = base.transformTypeReference()
+//		]
+	}
+	
+	def protected transformConstantDefinitionSpecification(ConstantDefinition constant, Logic2VampireLanguageMapperTrace trace) {
+		//TODO
+	}
+	
+	
+}
\ No newline at end of file
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
new file mode 100644
index 000000000..c79003bda
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ContainmentMapper.xtend
@@ -0,0 +1,299 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
+import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.ContainmentHierarchy
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.TypeDefinitionImpl
+
+class Logic2VampireLanguageMapper_ContainmentMapper {
+	val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+	val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
+	val Logic2VampireLanguageMapper base
+	private val VLSVariable variable = createVLSVariable => [it.name = "A"]
+
+	public new(Logic2VampireLanguageMapper base) {
+		this.base = base
+	}
+
+	def public void transformContainment(VampireSolverConfiguration config, List hierarchies,
+		Logic2VampireLanguageMapperTrace trace) {
+		// TODO throw error is there exists a circular containment that does not involve hierarchy
+		// TODO CONSIDER CASE WHERE MULTIPLE CONTAINMMENT HIERARCHIES EXIST
+		// TEMP
+		val hierarchy = hierarchies.get(0)
+
+		val containmentListCopy = hierarchy.typesOrderedInHierarchy
+		val relationsList = hierarchy.containmentRelations
+		val toRemove = newArrayList
+
+		// STEP 1
+		// Find root element
+		for (l : relationsList) {
+			var pointingTo = (l.parameters.get(1) as ComplexTypeReference).referred as Type
+			containmentListCopy.remove(pointingTo)
+			var List allSubtypes = newArrayList
+			support.listSubtypes(pointingTo, allSubtypes)
+			for (c : allSubtypes) {
+				containmentListCopy.remove(c)
+			}
+		}
+
+//		OLD
+//		for (c : containmentListCopy) {
+//			if(c.isIsAbstract) {
+//				toRemove.add(c)
+//			}
+//		}
+		// State that there must exist 1 and only 1 root element
+//		val topName = containmentListCopy.get(0).lookup(trace.type2Predicate).constant.toString
+//		val topTerm = support.duplicate(containmentListCopy.get(0).lookup(trace.type2Predicate))
+		var topTermVar = containmentListCopy.get(0)
+		for (l : relationsList) {
+			var pointingFrom = (l.parameters.get(0) as ComplexTypeReference).referred as Type
+			if (containmentListCopy.contains(pointingFrom)) {
+				// The correct topTerm will be identified
+				topTermVar = pointingFrom
+			}
+		}
+
+		val topName = topTermVar.lookup(trace.type2Predicate).constant.toString
+		val topTerm = support.duplicate(topTermVar.lookup(trace.type2Predicate))
+		trace.topLevelType = topTermVar
+
+		var topLvlIsInInitModel = false
+		var topLvlString = ""
+		var listToCheck = newArrayList(topTermVar)
+		listToCheck.addAll(topTermVar.subtypes)
+		for (c : listToCheck) {
+			if (c.class == typeof(TypeDefinitionImpl)) {
+				
+				if((c as TypeDefinition).elements.length >1) {
+					throw new IllegalArgumentException("You cannot have multiple top-level elements in your initial model")
+				}
+				
+				for (d : (c as TypeDefinition).elements) {
+					if (trace.definedElement2String.containsKey(d)) {
+						topLvlIsInInitModel = true
+						topLvlString = d.lookup(trace.definedElement2String)
+					}
+				}
+			}
+
+		}
+
+		trace.topLvlElementIsInInitialModel = topLvlIsInInitModel
+		val topInIM = topLvlIsInInitModel
+		val topStr = topLvlString
+
+		val contTop = createVLSFofFormula => [
+			it.name = support.toIDMultiple("containment_topLevel", topName)
+			it.fofRole = "axiom"
+
+			it.fofFormula = createVLSUniversalQuantifier => [
+				it.variables += support.duplicate(variable)
+				it.operand = createVLSEquivalent => [
+					it.left = topTerm
+					it.right = createVLSEquality => [
+						it.left = support.duplicate(variable)
+						it.right = createVLSConstant => [
+							it.name = if(topInIM) topStr else "o1"
+						]
+					]
+				]
+			]
+//			it.fofFormula = support.duplicate(
+//				topTerm,
+//				createVLSFunctionAsTerm => [
+//					it.functor = "o1"
+//				]
+//			)
+		]
+		trace.specification.formulas += contTop
+
+// STEP 2
+// for each edge, if the pointedTo element exists,the edge must exist also
+		val varA = createVLSVariable => [it.name = "A"]
+		val varB = createVLSVariable => [it.name = "B"]
+		val varC = createVLSVariable => [it.name = "C"]
+		val varList = newArrayList(varB, varA)
+		val Map> type2cont = new HashMap
+		for (l : relationsList) {
+			val rel = (l as RelationDeclaration).lookup(trace.rel2Predicate)
+//			val fromType = (l.parameters.get(0) as ComplexTypeReference).referred as Type
+			val toType = ((l.parameters.get(1) as ComplexTypeReference).referred as Type)
+			val toFunc = toType.lookup(trace.type2Predicate)
+
+			addToMap(type2cont, support.duplicate(toFunc), support.duplicate(rel, varList))
+			
+			var subTypes = newArrayList
+			support.listSubtypes(toType, subTypes)
+			for (c : subTypes) {
+				addToMap(type2cont, support.duplicate(c.lookup(trace.type2Predicate)), support.duplicate(rel, varList))
+			}
+
+
+
+
+//			for (c : support.listSubtypes(toType)) {
+//				addToMap(type2cont, toFunc, rel)
+//			}
+//			val listForAnd = newArrayList
+////			listForAnd.add(support.duplicate(fromType.lookup(trace.type2Predicate), varB))
+//			listForAnd.add(support.duplicate((l as RelationDeclaration).lookup(trace.rel2Predicate), varList))
+//			listForAnd.add(createVLSInequality => [
+//				it.left = support.duplicate(varA)
+//				it.right = support.duplicate(varB)
+//			])
+			// remove subtypes of elements being pointed to
+//			var pointingTo = (l.parameters.get(1) as ComplexTypeReference).referred as Type
+//			containmentListCopy.remove(pointingTo)
+//			for (c : pointingTo.subtypes) {
+//				containmentListCopy.remove(c)
+//			}
+			// STEP 3
+			// Ensure that an objct only has 1 parent
+			val relFormula = createVLSFofFormula => [
+				it.name = support.toIDMultiple("containment_noDup", rel.constant.toString)
+				it.fofRole = "axiom"
+				it.fofFormula = createVLSExistentialQuantifier => [
+					it.variables += support.duplicate(varA)
+					it.variables += support.duplicate(varB)
+					it.operand = createVLSImplies => [
+						it.left = support.duplicate(rel, newArrayList(varA, varB))
+						it.right = createVLSUnaryNegation => [
+							it.operand = createVLSExistentialQuantifier => [
+								it.variables += support.duplicate(varC)
+								it.variables += support.duplicate(varB)
+								it.operand = support.duplicate(rel, newArrayList(varC, varB))
+
+							]
+						]
+					]
+				]
+			]
+			trace.specification.formulas += relFormula
+
+		}
+
+// STEP 2 CONT'D
+		for (e : type2cont.entrySet) {
+//			println(e.key + "   " + e.value)
+			val relFormula = createVLSFofFormula => [
+				it.name = support.toIDMultiple("containment_contained", e.key.constant.toString)
+				it.fofRole = "axiom"
+
+				it.fofFormula = createVLSUniversalQuantifier => [
+					it.variables += support.duplicate(varA)
+					it.operand = createVLSImplies => [
+						it.left = support.duplicate(e.key, varA)
+						it.right = createVLSExistentialQuantifier => [
+							it.variables += support.duplicate(varB)
+//							for ( x : type2cont.entrySet) {
+//								if (support.dfsSupertypeCheck(e.key, x.key)) {
+//									e.value.addAll(x.value)
+//								}
+//							}
+							if (e.value.length > 1) {
+								it.operand = makeUnique(e.value)
+							} else {
+								it.operand = e.value.get(0)
+							}
+
+						]
+					]
+				]
+			]
+			trace.specification.formulas += relFormula
+
+		}
+
+		// STEP 4
+		// Ensure that there are no cycles in the hierarchy (maybe same as for step3?)
+		// Attempt 1: all possibilities, even the impossible one, based on MM constraints, are listed
+		val variables = newArrayList
+		val disjunctionList = newArrayList
+		val conjunctionList = newArrayList
+		for (var i = 1; i <= config.contCycleLevel; i++) {
+			val ind = i
+			variables.add(createVLSVariable => [it.name = ("V" + Integer.toString(ind))])
+			for (var j = 0; j < i; j++) {
+				for (l : relationsList) {
+					val rel = support.duplicate((l as RelationDeclaration).lookup(trace.rel2Predicate),
+						newArrayList(variables.get(j), variables.get((j + 1) % i)))
+					disjunctionList.add(rel)
+				}
+				conjunctionList.add(support.unfoldOr(disjunctionList))
+				disjunctionList.clear
+			}
+
+			val contCycleForm = createVLSFofFormula => [
+				it.name = support.toIDMultiple("containment_noCycle", Integer.toString(ind))
+				it.fofRole = "axiom"
+				it.fofFormula = createVLSUnaryNegation => [
+					it.operand = createVLSExistentialQuantifier => [
+						it.variables += support.duplicate(variables)
+						it.operand = support.unfoldAnd(conjunctionList)
+					]
+				]
+			]
+			trace.specification.formulas += contCycleForm
+			conjunctionList.clear
+		}
+	}
+
+	protected def VLSTerm makeUnique(List list) {
+		val List possibleNots = newArrayList
+		val List uniqueRels = newArrayList
+
+		for (t1 : list) {
+			for (t2 : list) {
+				if (t1 == t2) {
+					val fct = support.duplicate(t2)
+					possibleNots.add(fct)
+				} else {
+					val op = support.duplicate(t2)
+					val negFct = createVLSUnaryNegation => [
+						it.operand = op
+					]
+					possibleNots.add(negFct)
+				}
+			}
+			uniqueRels.add(support.unfoldAnd(possibleNots))
+			possibleNots.clear
+		}
+		return support.unfoldOr(uniqueRels)
+	}
+
+	protected def Object addToMap(Map> type2cont, VLSFunction toFunc, VLSFunction rel) {
+		var keyInMap = false
+		var existingKey = createVLSFunction
+		for (k : type2cont.keySet) {
+			if (k.constant.equals(toFunc.constant)) {
+				keyInMap = true
+				existingKey = k
+			}
+		}
+		
+		if (!keyInMap) {
+			type2cont.put(toFunc, newArrayList(rel))
+		} else {
+			if (!type2cont.get(existingKey).contains(rel)) {
+				type2cont.get(existingKey).add(rel)
+			// type2cont.replace(toFunc, newArrayList(firstRel))
+			}
+
+		}
+	}
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend
new file mode 100644
index 000000000..efedf6dc7
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend
@@ -0,0 +1,153 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
+import java.util.ArrayList
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+
+class Logic2VampireLanguageMapper_RelationMapper {
+	private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+	private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
+	val Logic2VampireLanguageMapper base
+
+	public new(Logic2VampireLanguageMapper base) {
+		this.base = base
+	}
+
+	def dispatch public void transformRelation(RelationDeclaration r, Logic2VampireLanguageMapperTrace trace,
+		Logic2VampireLanguageMapper mapper) {
+
+		// 1. store all variables in support wrt their name
+		// 1.1 if variable has type, creating list of type declarations
+		val List relVar2VLS = new ArrayList
+		val List relVar2TypeDecComply = new ArrayList
+		for (i : 0 ..< r.parameters.length) {
+
+			val v = createVLSVariable => [
+				it.name = support.toIDMultiple("V", i.toString)
+			]
+			relVar2VLS.add(v)
+
+			val relType = (r.parameters.get(i) as ComplexTypeReference).referred
+			val varTypeComply = support.duplicate(relType.lookup(trace.type2Predicate), v)
+			relVar2TypeDecComply.add(varTypeComply)
+
+		}
+
+		// deciding name of relation
+		val nameArray = r.name.split(" ")
+		var relNameVar = ""
+		if (nameArray.length == 3) {
+			relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2))
+		} else {
+			relNameVar = r.name
+		}
+		val relName = relNameVar
+
+		val comply = createVLSFofFormula => [
+
+			it.name = support.toIDMultiple("compliance", relName)
+			it.fofRole = "axiom"
+			it.fofFormula = createVLSUniversalQuantifier => [
+				for (v : relVar2VLS) {
+					it.variables += support.duplicate(v)
+				}
+				it.operand = createVLSImplies => [
+					val rel = createVLSFunction => [
+						it.constant = support.toIDMultiple("r", relName)
+						for (v : relVar2VLS) {
+							it.terms += support.duplicate(v)
+						}
+					]
+					trace.rel2Predicate.put(r, rel)
+					trace.predicate2Relation.put(rel, r)
+					it.left = support.duplicate(rel)
+					it.right = support.unfoldAnd(relVar2TypeDecComply)
+				]
+			]
+		]
+
+		trace.specification.formulas += comply
+	}
+
+	def dispatch public void transformRelation(RelationDefinition r, Logic2VampireLanguageMapperTrace trace,
+		Logic2VampireLanguageMapper mapper) {
+
+//		println("XXXXXXXXXXXXXXXXX")
+// 1. store all variables in support wrt their name
+		// 1.1 if variable has type, creating list of type declarations
+		val Map relVar2VLS = new HashMap
+		val List vars = newArrayList
+		val List relVar2TypeDecComply = new ArrayList
+		for (i : 0 ..< r.parameters.length) {
+
+			val v = createVLSVariable => [
+				it.name = support.toIDMultiple("V", i.toString)
+			]
+			relVar2VLS.put(r.variables.get(i), v)
+			vars.add(v)
+
+			val relType = (r.parameters.get(i) as ComplexTypeReference).referred
+			val varTypeComply = support.duplicate(relType.lookup(trace.type2Predicate), v)
+			relVar2TypeDecComply.add(varTypeComply)
+
+		}
+
+		// deciding name of relation
+		val nameArray = r.name.split(" ")
+		var relNameVar = ""
+		if (nameArray.length == 3) {
+			relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2))
+		} else {
+			relNameVar = r.name
+		}
+		val relName = relNameVar
+
+		// define logic for pattern
+//		val map = new HashMap
+//		map.put(r.variables.get(0), createVLSVariable)
+		val definition = mapper.transformTerm(r.value, trace, relVar2VLS)
+
+		// get entire contents of and
+		val compliance = support.unfoldAnd(relVar2TypeDecComply)
+		val compDefn = createVLSAnd => [
+			it.left = compliance
+			it.right = definition
+		]
+
+		val relDef = createVLSFofFormula => [
+
+			it.name = support.toID(relName)
+			it.fofRole = "axiom"
+			it.fofFormula = createVLSUniversalQuantifier => [
+				for (v : vars) {
+					it.variables += support.duplicate(v)
+				}
+				it.operand = createVLSImplies => [
+					val rel = createVLSFunction => [
+						it.constant = support.toIDMultiple("r", relName)
+						for (v : vars) {
+							it.terms += support.duplicate(v)
+						}
+					]
+//					trace.relDef2Predicate.put(r, rel)
+//					trace.predicate2RelDef.put(rel, r)
+					it.left = support.duplicate(rel)
+					it.right = compDefn
+				]
+			]
+		]
+		trace.specification.formulas += relDef
+
+	}
+
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
new file mode 100644
index 000000000..96c2da480
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend
@@ -0,0 +1,243 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
+import java.util.ArrayList
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+
+class Logic2VampireLanguageMapper_ScopeMapper {
+	private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+	private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
+	val Logic2VampireLanguageMapper base
+	private val VLSVariable variable = createVLSVariable => [it.name = "A"]
+
+	public new(Logic2VampireLanguageMapper base) {
+		this.base = base
+	}
+
+	def dispatch public void transformScope(List types, VampireSolverConfiguration config,
+		Logic2VampireLanguageMapperTrace trace) {
+		
+
+//		TODO HANDLE ERRORS RELATED TO MAX > MIN
+//		TODO HANDLE ERROR RELATED TO SUM(MIN TYPES)+1(for root) > MAX OBJECTS
+//		TODO HANDLE case where init model does not satisfy for example ine and only one criterion of toplvl elem
+//		We are currently ignoring all typescope spec related to the topLevel type
+//		TODO Case where typeScope spec continas numbers for a type and its subtype
+//		We shouldnt waste constants for each one
+		
+		// 1. make a list of constants equaling the min number of specified objects
+		// These numbers do not include enums or initial model elements
+		// Number of defined non-abstract elements that are not enum elements
+		// Equals the number of elements in te initial model
+		var elemsInIM = trace.definedElement2String.size
+		val ABSOLUTE_MIN = 0
+		val ABSOLUTE_MAX = Integer.MAX_VALUE-elemsInIM
+//		var elemsInIM = 0
+//		
+//		for(t : types.filter(TypeDefinition).filter[!isIsAbstract]) {
+//			val len = t.name.length
+//			val isNotEnum = !t.name.substring(len-4, len).equals("enum")
+//			if (isNotEnum) {
+//				elemsInIM += 1
+//			}
+//		}
+		// TODO handle errors related to GLOBAL_MIN/MAX < 0
+		val GLOBAL_MIN = config.typeScopes.minNewElements - elemsInIM
+		val GLOBAL_MAX = config.typeScopes.maxNewElements - elemsInIM
+
+		val localInstances = newArrayList
+
+		val consistant = GLOBAL_MAX >= GLOBAL_MIN
+
+		// Handling Minimum_General
+		if (GLOBAL_MIN != ABSOLUTE_MIN) {
+			getInstanceConstants(GLOBAL_MIN, 0, localInstances, trace, true, !consistant)//may make not consistent here 
+			if (consistant) {
+				for (i : trace.uniqueInstances) {
+					localInstances.add(support.duplicate(i))
+				}
+				makeFofFormula(localInstances, trace, true, null)
+			} else {
+				makeFofFormula(trace.uniqueInstances as ArrayList, trace, true, null)
+			}
+		}
+
+		// Handling Maximum_General
+		if (GLOBAL_MAX != ABSOLUTE_MAX) {
+			getInstanceConstants(GLOBAL_MAX, 0, localInstances, trace, true, consistant)
+			if (consistant) {
+				makeFofFormula(trace.uniqueInstances as ArrayList, trace, false, null)
+			} else {
+				makeFofFormula(localInstances, trace, false, null)
+			}
+		}
+
+		// Handling Minimum_Specific
+		var i = 1
+		if (trace.topLvlElementIsInInitialModel as Boolean) {
+			i = 0
+		}
+		var minNum = -1
+		var Map startPoints = new HashMap
+		for (t : config.typeScopes.minNewElementsByType.keySet.filter[!equals(trace.topLevelType)]) {
+			var numIniIntModel = 0
+			for (elem : trace.definedElement2String.keySet) {
+				for (tDefined : elem.definedInType) {
+					if (support.dfsSubtypeCheck(t, tDefined)) {
+						numIniIntModel += 1
+					}
+				}
+			}
+			minNum = t.lookup(config.typeScopes.minNewElementsByType) - numIniIntModel
+			if (minNum != 0) {
+				getInstanceConstants(i + minNum, i, localInstances, trace, true, false)
+				startPoints.put(t, i)
+				i += minNum
+				makeFofFormula(localInstances, trace, true, t)
+			}
+		}
+
+		// TODO: calc sum of mins, compare to current value of i
+		// Handling Maximum_Specific
+		for (t : config.typeScopes.maxNewElementsByType.keySet.filter[!equals(trace.topLevelType)]) {
+
+			var numIniIntModel = 0
+			for (elem : trace.definedElement2String.keySet) {
+				if (elem.definedInType == t) {
+					numIniIntModel += 1
+				}
+			}
+
+			var maxNum = t.lookup(config.typeScopes.maxNewElementsByType) - numIniIntModel
+			if (config.typeScopes.minNewElementsByType.keySet.contains(t)) {
+				minNum = t.lookup(config.typeScopes.minNewElementsByType) - numIniIntModel
+			} else {
+				minNum = 0
+			}
+
+			if (minNum != 0) {
+				var startpoint = t.lookup(startPoints)
+				getInstanceConstants(startpoint + minNum, startpoint, localInstances, trace, true, false)
+			}
+			else {
+				localInstances.clear
+			}
+			// I do not understand the line below
+//			if (maxNum != minNum) {
+			var instEndInd = Math.min(GLOBAL_MAX, i + maxNum - minNum)
+			getInstanceConstants(instEndInd, i, localInstances, trace, false, false)
+			makeFofFormula(localInstances, trace, false, t)
+//			}
+		}
+
+// 3. Specify uniqueness of elements
+		// TEMP
+		val DUPLICATES = config.uniquenessDuplicates
+
+		val numInst = trace.uniqueInstances.length
+		var ind = 1
+		if (numInst != 0) {
+			if (DUPLICATES) {
+				// W/ DUPLICATES
+				for (e : trace.uniqueInstances) {
+					val x = ind
+					val uniqueness = createVLSFofFormula => [
+						it.name = support.toIDMultiple("t_uniqueness", e.name)
+						it.fofRole = "axiom"
+						it.fofFormula = support.establishUniqueness(trace.uniqueInstances, e)
+					]
+					trace.specification.formulas += uniqueness
+					ind++
+				}
+			} else {
+				// W/O DUPLICATES
+				for (e : trace.uniqueInstances.subList(0, numInst - 1)) {
+					val x = ind
+					val uniqueness = createVLSFofFormula => [
+						it.name = support.toIDMultiple("t_uniqueness", e.name)
+						it.fofRole = "axiom"
+						it.fofFormula = support.establishUniqueness(trace.uniqueInstances.subList(x, numInst), e)
+					]
+					trace.specification.formulas += uniqueness
+					ind++
+				}
+			}
+		}
+	}
+
+	def protected void getInstanceConstants(int endInd, int startInd, ArrayList list,
+		Logic2VampireLanguageMapperTrace trace, boolean clear, boolean addToTrace) {
+		if (clear) {
+			list.clear
+		}
+		for (var i = startInd; i < endInd; i++) {
+			val num = i + 1
+			val cst = createVLSConstant => [
+				it.name = "o" + num
+			]
+			if (addToTrace) {
+				trace.uniqueInstances.add(cst)
+			}
+			list.add(cst)
+		}
+	}
+
+	def protected void makeFofFormula(ArrayList list, Logic2VampireLanguageMapperTrace trace, boolean minimum,
+		Type type) {
+		var nm = ""
+		var VLSTerm tm = null
+		if (type === null) {
+			nm = "object"
+			tm = support.topLevelTypeFunc
+		} else {
+			nm = type.lookup(trace.type2Predicate).constant.toString
+			tm = createVLSAnd => [
+				it.left = support.duplicate(type.lookup(trace.type2Predicate))
+				it.right = support.topLevelTypeFunc
+			]
+//			tm = support.duplicate(type.lookup(trace.type2Predicate))
+		}
+		val name = nm
+		val term = tm
+
+		val cstDec = createVLSFofFormula => [
+			it.name = support.toIDMultiple("typeScope", if(minimum) "min" else "max", name)
+			it.fofRole = "axiom"
+			it.fofFormula = createVLSUniversalQuantifier => [
+				it.variables += support.duplicate(variable)
+				// check below
+				it.operand = createVLSImplies => [
+					if (minimum) {
+						it.left = support.unfoldOr(list.map [ i |
+							createVLSEquality => [
+								it.left = createVLSVariable => [it.name = variable.name]
+								it.right = i
+							]
+						])
+						it.right = term
+					} else {
+						it.left = term
+						it.right = support.unfoldOr(list.map [ i |
+							createVLSEquality => [
+								it.left = createVLSVariable => [it.name = variable.name]
+								it.right = i
+							]
+						])
+
+					}
+				]
+			]
+		]
+		trace.specification.formulas += cstDec
+	}
+
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
new file mode 100644
index 000000000..fa334322c
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
@@ -0,0 +1,377 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
+import java.util.ArrayList
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+import java.util.concurrent.TimeUnit
+import okhttp3.MediaType
+import okhttp3.OkHttpClient
+import okhttp3.Request
+import okhttp3.RequestBody
+import okhttp3.Response
+import org.eclipse.emf.common.util.EList
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+
+class Logic2VampireLanguageMapper_Support {
+	private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+
+// ID Handler
+	def protected String toIDMultiple(String... ids) {
+		ids.map[it.split("\\s+").join("_")].join("_")
+	}
+
+	def protected String toID(String ids) {
+		ids.split("\\s+").join("_")
+	}
+
+// Term Handling
+// TODO Make more general
+	def protected VLSVariable duplicate(VLSVariable term) {
+		return createVLSVariable => [it.name = term.name]
+	}
+
+	def protected VLSFunctionAsTerm duplicate(VLSFunctionAsTerm term) {
+		return createVLSFunctionAsTerm => [it.functor = term.functor]
+	}
+
+	def protected VLSConstant duplicate(VLSConstant term) {
+		return createVLSConstant => [it.name = term.name]
+	}
+
+	def protected VLSFunction duplicate(VLSFunction term) {
+		return createVLSFunction => [
+			it.constant = term.constant
+			for (v : term.terms) {
+				it.terms += duplicate(v as VLSVariable)
+			}
+		]
+	}
+
+	def protected VLSFunction duplicate(VLSFunction term, VLSVariable v) {
+		return createVLSFunction => [
+			it.constant = term.constant
+			it.terms += duplicate(v)
+		]
+	}
+
+	def protected VLSFunction duplicate(VLSFunction term, List vars) {
+		return createVLSFunction => [
+			it.constant = term.constant
+			for (v : vars) {
+				it.terms += duplicate(v)
+			}
+		]
+	}
+
+	def protected VLSFunction duplicate(VLSFunction term, VLSFunctionAsTerm v) {
+		return createVLSFunction => [
+			it.constant = term.constant
+			it.terms += duplicate(v)
+		]
+	}
+
+	def protected List duplicate(List vars) {
+		var newList = newArrayList
+		for (v : vars) {
+			newList.add(duplicate(v))
+		}
+		return newList
+	}
+
+	def protected VLSConstant toConstant(VLSFunctionAsTerm term) {
+		return createVLSConstant => [
+			it.name = term.functor
+		]
+	}
+
+	def protected VLSFunction topLevelTypeFunc() {
+		return createVLSFunction => [
+			it.constant = "object"
+			it.terms += createVLSVariable => [
+				it.name = "A"
+			]
+		]
+	}
+
+	def protected VLSFunction topLevelTypeFunc(VLSVariable v) {
+		return createVLSFunction => [
+			it.constant = "object"
+			it.terms += duplicate(v)
+		]
+	}
+
+	def protected VLSFunction topLevelTypeFunc(VLSFunctionAsTerm v) {
+		return createVLSFunction => [
+			it.constant = "object"
+			it.terms += duplicate(v)
+		]
+	}
+
+// TODO Make more general
+	def establishUniqueness(List terms, VLSConstant t2) {
+
+//		OLD
+//		val List eqs = newArrayList
+//		for (t1 : terms.subList(1, terms.length)) {
+//			for (t2 : terms.subList(0, terms.indexOf(t1))) {
+//				val eq = createVLSInequality => [
+//					// TEMP
+//					it.left = createVLSConstant => [it.name = t2.name]
+//					it.right = createVLSConstant => [it.name = t1.name]
+//				// TEMP
+//				]
+//				eqs.add(eq)
+//			}
+//		}
+//		return unfoldAnd(eqs)
+//		END OLD
+		val List eqs = newArrayList
+		for (t1 : terms) {
+			if (t1 != t2) {
+				val eq = createVLSInequality => [
+					it.left = createVLSConstant => [it.name = t2.name]
+					it.right = createVLSConstant => [it.name = t1.name]
+				]
+				eqs.add(eq)
+			}
+		}
+		return unfoldAnd(eqs)
+	}
+
+// Support Functions
+// booleans
+// AND and OR
+	def protected VLSTerm unfoldAnd(List operands) {
+		if (operands.size == 1) {
+			return operands.head
+		} else if (operands.size > 1) {
+			return createVLSAnd => [
+				left = operands.head
+				right = operands.subList(1, operands.size).unfoldAnd
+			]
+		} else
+			throw new UnsupportedOperationException('''Logic operator with 0 operands!''')
+	}
+
+	def protected VLSTerm unfoldOr(List operands) {
+//		if(operands.size == 0) {basically return true}
+		/*else*/ if (operands.size == 1) {
+			return operands.head
+		} else if (operands.size > 1) {
+			return createVLSOr => [
+				left = operands.head
+				right = operands.subList(1, operands.size).unfoldOr
+			]
+		} else
+			throw new UnsupportedOperationException('''Logic operator with 0 operands!''') // TEMP
+	}
+
+// can delete below
+	def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList operands,
+		Logic2VampireLanguageMapperTrace trace, Map variables) {
+		if (operands.size == 1) {
+			return m.transformTerm(operands.head, trace, variables)
+		} else if (operands.size > 1) {
+			val notEquals = new ArrayList(operands.size * operands.size / 2)
+			for (i : 0 ..< operands.size) {
+				for (j : i + 1 ..< operands.size) {
+					notEquals += createVLSInequality => [
+						it.left = m.transformTerm(operands.get(i), trace, variables)
+						it.right = m.transformTerm(operands.get(j), trace, variables)
+					]
+				}
+			}
+			return notEquals.unfoldAnd
+		} else
+			throw new UnsupportedOperationException('''Logic operator with 0 operands!''')
+	}
+
+// Symbolic
+// def postprocessResultOfSymbolicReference(TypeReference type, VLSTerm term, Logic2VampireLanguageMapperTrace trace) {
+//		if(type instanceof BoolTypeReference) {
+//			return booleanToLogicValue(term ,trace)
+//		}
+//		else return term
+//	}
+//	def booleanToLogicValue(VLSTerm term, Logic2VampireLanguageMapperTrace trace) {
+//		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+//	}
+	/*
+	 * def protected  String toID(List ids) {
+	 * 	ids.map[it.split("\\s+").join("'")].join("'")
+	 * }
+	 */
+// QUANTIFIERS + VARIABLES
+	def protected VLSTerm createQuantifiedExpression(Logic2VampireLanguageMapper mapper,
+		QuantifiedExpression expression, Logic2VampireLanguageMapperTrace trace, Map variables,
+		boolean isUniversal) {
+		val variableMap = expression.quantifiedVariables.toInvertedMap [ v |
+			createVLSVariable => [it.name = toIDMultiple("V", v.name)]
+		]
+
+		val typedefs = new ArrayList
+		for (variable : expression.quantifiedVariables) {
+			val eq = duplicate((variable.range as ComplexTypeReference).referred.lookup(trace.type2Predicate),
+				variable.lookup(variableMap))
+			typedefs.add(eq)
+		}
+		if (isUniversal) {
+			createVLSUniversalQuantifier => [
+				it.variables += variableMap.values
+				it.operand = createVLSImplies => [
+					it.left = unfoldAnd(typedefs)
+					it.right = mapper.transformTerm(expression.expression, trace, variables.withAddition(variableMap))
+				]
+			]
+		} else {
+			typedefs.add(mapper.transformTerm(expression.expression, trace, variables.withAddition(variableMap)))
+			createVLSExistentialQuantifier => [
+				it.variables += variableMap.values
+				it.operand = unfoldAnd(typedefs)
+
+			]
+		}
+
+	}
+
+	def protected boolean dfsSupertypeCheck(Type type, Type type2) {
+		// There is surely a better way to do this
+		if (type.supertypes.isEmpty)
+			return false
+		else {
+			if (type.supertypes.contains(type2))
+				return true
+			else {
+				for (supertype : type.supertypes) {
+					if(dfsSupertypeCheck(supertype, type2)) return true
+				}
+			}
+		}
+	}
+
+	// TODO rewrite such that it uses "listSubTypes"
+	def protected boolean dfsSubtypeCheck(Type type, Type type2) {
+		// There is surely a better way to do this
+		if (type.subtypes.isEmpty)
+			return false
+		else {
+			if (type.subtypes.contains(type2))
+				return true
+			else {
+				for (subtype : type.subtypes) {
+					if(dfsSubtypeCheck(subtype, type2)) return true
+				}
+			}
+		}
+	}
+
+	def protected void listSubtypes(Type t, List allSubtypes) {
+		for (subt : t.subtypes) {
+			allSubtypes.add(subt)
+			listSubtypes(subt, allSubtypes)
+		}
+	}
+
+	def protected withAddition(Map map1, Map map2) {
+		new HashMap(map1) => [putAll(map2)]
+	}
+
+	// SERVERS
+	def makeForm(String formula, BackendSolver solver, int time) {
+		return header + formula + addOptions + addSolver(solver, time) + addEnd
+	}
+
+	def getSolverSpecs(BackendSolver solver) {
+		switch (solver) {
+			case BackendSolver::CVC4:
+				return newArrayList("CVC4---SAT-1.7", "do_CVC4 %s %d SAT")//TODO Update
+			case BackendSolver::DARWINFM:
+				return newArrayList("DarwinFM---1.4.5", "darwin -fd true -ppp true -pl 0 -to %d -pmtptp true %s")//TODO Update
+			case BackendSolver::EDARWIN:
+				return newArrayList("E-Darwin---1.5",
+					"e-darwin -pev \"TPTP\" -pmd true -if tptp -pl 2 -pc false -ps false %s")//TODO Update
+			case BackendSolver::GEOIII:
+				return newArrayList("Geo-III---2018C",
+					"geo -tptp_input -nonempty -include /home/tptp/TPTP -inputfile %s")//TODO Update
+			case BackendSolver::IPROVER:
+				return newArrayList("iProver---SAT-3.0", "iproveropt_run_sat.sh %d %s")//TODO Update
+			case BackendSolver::PARADOX:
+				return newArrayList("Paradox---4.0", "paradox --no-progress --time %d --tstp --model %s")//TODO Update
+			case BackendSolver::VAMPIRE:
+				return newArrayList("Vampire---SAT-4.5", "vampire --mode casc_sat -t %d %s")
+			case BackendSolver::Z3:
+				return newArrayList("Z3---4.4.1", "run_z3_tptp -proof -model -t:%d -file:%s")//TODO Update
+		}
+	}
+
+	def getHeader() {
+		return "------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"ProblemSource\"\r\n\r\nFORMULAE\r\n------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"FORMULAEProblem\"\r\n\r\n\r\n"
+	}
+
+	def addSpec(String spec) {
+		return spec.replace("\n", "\\r\\n")
+	}
+
+	def addOptions() {
+		return "\r\n------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"QuietFlag\"\r\n\r\n-q3\r\n------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"SubmitButton\"\r\n\r\nRunSelectedSystems\r\n"
+	}
+
+	def addSolver(BackendSolver solver, int time) {
+		val solverSpecs = getSolverSpecs(solver)
+		val ID = solverSpecs.get(0)
+		val cmd = solverSpecs.get(1)
+
+		return "------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"TimeLimit___" + ID +
+			"\"\r\n\r\n" + time +
+			"\r\n------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"System___" + ID +
+			"\"\r\n\r\n" + ID +
+			"\r\n------WebKitFormBoundaryBdFiQ5zEvTbBl4DA\r\nContent-Disposition: form-data; name=\"Command___" + ID +
+			"\"\r\n\r\n" + cmd + "\r\n"
+	}
+
+	def addEnd() {
+		return "------WebKitFormBoundaryBdFiQ5zEvTbBl4DA--"
+	}
+
+	def sendPost(String formData) throws Exception {
+
+		val OkHttpClient client = new OkHttpClient.Builder().connectTimeout(600, TimeUnit.SECONDS).readTimeout(350,
+			TimeUnit.SECONDS).build()
+
+		val MediaType mediaType = MediaType.parse("multipart/form-data boundary=----WebKitFormBoundaryBdFiQ5zEvTbBl4DA")
+		val RequestBody body = RequestBody.create(mediaType, formData)
+		val Request request = new Request.Builder().url("http://www.tptp.org/cgi-bin/SystemOnTPTPFormReply").post(body).
+			addHeader("Connection", "keep-alive").addHeader("Cache-Control", "max-age=0").addHeader("Origin",
+				"http://tptp.cs.miami.edu").addHeader("Upgrade-Insecure-Requests", "1").addHeader("Content-Type",
+				"multipart/form-data boundary=----WebKitFormBoundaryBdFiQ5zEvTbBl4DA").addHeader("User-Agent",
+				"Mozilla/5.0 (Windows NT 10.0 Win64 x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36").
+			addHeader("Accept",
+				"text/html,application/xhtml+xml,application/xmlq=0.9,image/webp,image/apng,*/*q=0.8,application/signed-exchangev=b3").
+			addHeader("Referer", "http://tptp.cs.miami.edu/cgi-bin/SystemOnTPTP").addHeader("Accept-Encoding",
+				"gzip, deflate").addHeader("Accept-Language", "en-US,enq=0.9").addHeader("Postman-Token",
+				"639ff59f-ab5c-4d9f-9da5-ac8bb64be466,ecb71882-f4d8-4126-8a97-4edb07d4055c").addHeader("Host",
+				"www.tptp.org").addHeader("Content-Length", "44667").addHeader("cache-control", "no-cache").build()
+
+		val Response response = client.newCall(request).execute()
+//		TimeUnit.SECONDS.sleep(5)
+		return newArrayList(response.body.string.split("\n"))
+//		return response.body.string
+	// case 1: 
+	}
+
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
new file mode 100644
index 000000000..38c99a891
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
@@ -0,0 +1,266 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage
+import java.util.ArrayList
+import java.util.Collection
+import java.util.List
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+
+class Logic2VampireLanguageMapper_TypeMapper {
+	private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
+	private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
+	val Logic2VampireLanguageMapper base
+
+	new(Logic2VampireLanguageMapper base) {
+		LogicproblemPackage.eINSTANCE.class
+		this.base = base
+	}
+
+	def protected transformTypes(Collection types, Collection elements,
+		Logic2VampireLanguageMapper mapper, Logic2VampireLanguageMapperTrace trace) {
+		val VLSVariable variable = createVLSVariable => [it.name = "A"]
+		var globalCounter = 0
+
+		// 1. Each type (class) is a predicate with a single variable as input
+		for (type : types) {
+			val typePred = createVLSFunction => [
+				if(type.name.split(" ").length == 3) {
+					it.constant = support.toIDMultiple("t", type.name.split(" ").get(0), type.name.split(" ").get(2))
+				}
+				else {
+					it.constant = support.toIDMultiple("t", type.name.split(" ").get(0))
+				}
+				it.terms += support.duplicate(variable)
+			]
+			trace.type2Predicate.put(type, typePred)
+			trace.predicate2Type.put(typePred, type)
+		}
+
+		// 2. Map each ENUM/InitialModelElement type definition to fof formula
+		//    In the case where , for example, a supertype that is abstract has a subtype of which an instance is in the initial model,
+		//    The logic problem will contain a TypeDefinition for the subtype as well as for the supertype
+		//    This defined elemtn for the supertype will be abstract, and we do not wish to associate a constant to it, or associate it with a type
+		//    Within our vampireproblem.tptp
+		for (type : types.filter(TypeDefinition).filter[!isIsAbstract]) {
+
+			//Detect if it is a defined element (from initial model)
+			//Otherwise it is an Enum
+			
+			//val isNotEnum = type.supertypes.length == 1 && type.supertypes.get(0).isIsAbstract
+			//^does not work in cases where a defined type already has a supertype from within the MM
+			
+//			var isNotEnumVar = !type.supertypes.isEmpty 
+//			if(isNotEnumVar) {
+//				for (sup : type.supertypes){
+//					type.name.contains(sup.name)
+//				}
+//			}
+//			
+//			val isNotEnum = isNotEnumVar
+			
+			//Another possibility is..
+			val len = type.name.length
+			val isNotEnum = !type.name.substring(len-4, len).equals("enum")
+
+			// Create a VLSFunction for each Enum Element
+			val List orElems = newArrayList
+
+			for (e : type.elements) {
+				val nameArray = e.name.split(" ")
+				var relNameVar = ""
+				if (nameArray.length == 3) {
+					relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2))
+				} else {
+					relNameVar = e.name
+				}
+				val relName = relNameVar
+				
+				val enumElemPred = createVLSFunction => [
+					it.constant = support.toIDMultiple("e", relName)
+					it.terms += support.duplicate(variable)
+				]
+				trace.element2Predicate.put(e, enumElemPred)
+			}
+
+			// Similar to InheritanceHierarchy for the Enum
+			val List possibleNots = newArrayList
+			val List typeDefs = newArrayList
+
+			for (t1 : type.elements) {
+				for (t2 : type.elements) {
+					if (t1 == t2) {
+						val fct = support.duplicate(t2.lookup(trace.element2Predicate), variable)
+						possibleNots.add(fct)
+					} else {
+						val op = support.duplicate(t2.lookup(trace.element2Predicate), variable)
+						val negFct = createVLSUnaryNegation => [
+							it.operand = op
+						]
+						possibleNots.add(negFct)
+					}
+				}
+				typeDefs.add(support.unfoldAnd(possibleNots))
+				possibleNots.clear
+			}
+
+			// Implement Enum Inheritence Hierarchy
+			val res = createVLSFofFormula => [
+				it.name = support.toIDMultiple("typeDef", type.lookup(trace.type2Predicate).constant.toString)
+				it.fofRole = "axiom"
+				it.fofFormula = createVLSUniversalQuantifier => [
+					it.variables += support.duplicate(variable)
+					it.operand = createVLSEquivalent => [
+						it.left = type.lookup(trace.type2Predicate)
+						it.right = createVLSAnd => [
+							it.left = support.topLevelTypeFunc(variable)
+							it.right = support.unfoldOr(typeDefs)
+						]
+//						it.right = support.unfoldOr((typeDefs))
+					]
+				]
+			]
+			trace.specification.formulas += res
+
+			for (var i = globalCounter; i < globalCounter + type.elements.length; i++) {
+				// Create objects for the enum elements
+				val num = i + 1
+				val index = i-globalCounter
+				
+				val cstTerm = createVLSFunctionAsTerm => [
+					it.functor = "eo" + num
+				]
+//				if (isNotEnum) {
+					trace.definedElement2String.put(type.elements.get(index),cstTerm.functor)
+//				}
+				
+				val cst = support.toConstant(cstTerm)
+				trace.uniqueInstances.add(cst)
+				
+				val enumScope = createVLSFofFormula => [
+					it.name = support.toIDMultiple(if(isNotEnum) "definedType" else "enumScope", type.lookup(trace.type2Predicate).constant.toString,
+						type.elements.get(index).name.split(" ").get(0))
+					it.fofRole = "axiom"
+					it.fofFormula = createVLSUniversalQuantifier => [
+						it.variables += support.duplicate(variable)
+						it.operand = createVLSEquivalent => [
+							it.left = createVLSEquality => [
+								it.left = support.duplicate(variable)
+								it.right = support.duplicate(support.toConstant(cstTerm))
+							]
+							it.right = support.duplicate(type.elements.get(index).lookup(trace.element2Predicate),
+								variable)
+						]
+					]
+				]
+
+				trace.specification.formulas += enumScope
+
+			}
+			globalCounter += type.elements.size
+		}
+
+		// HIERARCHY HANDLER
+		// 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates
+		// and store in a map
+		for (t1 : types.filter[!isIsAbstract]) {
+			for (t2 : types) {
+				// possible improvement: check all supertypes and decide if negated or not based on negations/not negations of supertypes
+				if (t1 == t2 || support.dfsSupertypeCheck(t1, t2)) {
+					trace.type2PossibleNot.put(t2, support.duplicate(t2.lookup(trace.type2Predicate)))
+				} else {
+					trace.type2PossibleNot.put(t2, createVLSUnaryNegation => [
+						it.operand = support.duplicate(t2.lookup(trace.type2Predicate))
+					])
+				}
+			}
+//			typeTrace.type2And.put(t1, support.unfoldAnd(new ArrayList(typeTrace.type2PossibleNot.values)))
+//			typeTrace.type2PossibleNot.clear
+			trace.type2And.put(t1, support.unfoldAnd(new ArrayList(trace.type2PossibleNot.values)))
+			trace.type2PossibleNot.clear
+
+		}
+
+		// 3.5: case where an object is not an object
+		val List type2Not = newArrayList
+
+		for (t : types) {
+			type2Not.add(createVLSUnaryNegation => [
+				it.operand = support.duplicate(t.lookup(trace.type2Predicate))
+			])
+		}
+
+		val notObj = createVLSFofFormula => [
+			it.name = "notObjectHandler"
+			it.fofRole = "axiom"
+			it.fofFormula = createVLSUniversalQuantifier => [
+				it.variables += support.duplicate(variable)
+				it.operand = createVLSEquivalent => [
+					it.left = createVLSUnaryNegation => [
+						it.operand = support.topLevelTypeFunc
+					]
+					it.right = support.unfoldAnd(type2Not)
+				]
+			]
+		]
+
+		trace.specification.formulas += notObj
+		// End 3.5
+		// 4. create fof function that is an or with all the elements in map
+		val hierarch = createVLSFofFormula => [
+			it.name = "inheritanceHierarchyHandler"
+			it.fofRole = "axiom"
+			it.fofFormula = createVLSUniversalQuantifier => [
+				it.variables += support.duplicate(variable)
+				it.operand = createVLSEquivalent => [
+					it.left = support.topLevelTypeFunc
+//					it.right = support.unfoldOr(new ArrayList(typeTrace.type2And.values))
+					val reversedList = new ArrayList(trace.type2And.values)
+//					Collections.reverse(reversedList)
+					it.right = support.unfoldOr(reversedList)
+				]
+			]
+		]
+
+		trace.specification.formulas += hierarch
+
+	}
+
+	// below are from previous interface
+	def protected transformTypeReference(Type referred, Logic2VampireLanguageMapper mapper,
+		Logic2VampireLanguageMapperTrace trace) {
+		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+	}
+
+	def protected getUndefinedSupertype(Logic2VampireLanguageMapperTrace trace) {
+		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+	}
+
+	def protected getUndefinedSupertypeScope(int undefinedScope, Logic2VampireLanguageMapperTrace trace) {
+		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+	}
+
+	def protected transformReference(DefinedElement referred, Logic2VampireLanguageMapperTrace trace) {
+		
+//		createVLSDoubleQuote => [
+//			it.value = "\"a" + referred.name + "\""
+//		]
+		
+		createVLSConstant => [
+			it.name = referred.name
+		]
+	}
+
+	def protected getTypeInterpreter() {
+		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+	}
+
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend
new file mode 100644
index 000000000..e136d1c6f
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Vampire2LogicMapper.xtend
@@ -0,0 +1,52 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
+import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory
+
+class Vampire2LogicMapper {
+	val extension LogicresultFactory resultFactory = LogicresultFactory.eINSTANCE
+
+//	
+	public def transformOutput(LogicProblem problem, int requiredNumberOfSolution,
+		MonitoredVampireSolution monitoredVampireSolution, Logic2VampireLanguageMapperTrace trace, 
+		long transformationTime) {
+
+		// ModelRsult implements LogicResult
+		return createModelResult => [
+			it.problem = problem
+			it.representation += monitoredVampireSolution.generatedModel
+			it.trace = trace
+			it.statistics = transformStatistics(monitoredVampireSolution, transformationTime)
+		]
+	}
+
+	def transformStatistics(MonitoredVampireSolution solution, long transformationTime) {
+		return createStatistics => [
+			it.solverTime = solution.solverTime as int
+			it.transformationTime = transformationTime as int
+		]
+//		createStatistics => [
+//			it.transformationTime = transformationTime as int
+//			for(solutionIndex : 0.. [
+//					it.name = '''Answer«solutionIndex»Time'''
+//					it.value = solutionTime.intValue
+//				]
+//			}
+//			it.entries+= createIntStatisticEntry => [
+//				it.name = "Alloy2KodKodTransformationTime"
+//				it.value = solution.kodkodTime as int
+//			]
+//			it.entries+= createIntStatisticEntry => [
+//				it.name = "Alloy2KodKodTransformationTime"
+//				it.value = solution.kodkodTime as int
+//			]
+//			it.entries+= createStringStatisticEntry => [
+//				it.name = "warnings"
+//				it.value = '''[«FOR warning : solution.warnings SEPARATOR ","»«warning»«ENDFOR»]'''
+//			]
+//		]
+	}
+
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
new file mode 100644
index 000000000..d7dd53f0e
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireHandler.xtend
@@ -0,0 +1,300 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
+import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
+import java.io.BufferedReader
+import java.io.InputStreamReader
+import java.util.List
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtend.lib.annotations.Data
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireLanguageFactoryImpl
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VampireModelImpl
+import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver
+import java.io.FileReader
+
+class VampireSolverException extends Exception {
+	new(String s) {
+		super(s)
+	}
+
+	new(String s, Exception e) {
+		super(s, e)
+	}
+
+	new(String s, List errors, Exception e) {
+		super(s + '\n' + errors.join('\n'), e)
+	}
+}
+
+@Data class MonitoredVampireSolution {
+//	List warnings
+//	List debugs
+	long solverTime
+//	val List> aswers
+	val VampireModel generatedModel
+//	val boolean finishedBeforeTimeout
+	val boolean finiteModelGenerated
+}
+
+class VampireHandler {
+
+	// val fileName = "problem.als"
+	public def callSolver(VampireModel problem, ReasonerWorkspace workspace, VampireSolverConfiguration configuration) {
+
+		// Vampire
+		val VAMPDIR = "..\\..\\Solvers\\Vampire-Solver\\ca.mcgill.ecse.dslreasoner.vampire.reasoner\\lib\\"
+		val VAMPNAME = "vampire.exe"
+		val VAMPLOC = VAMPDIR + VAMPNAME
+
+		// CVC4
+		val CVC4DIR = "..\\..\\Solvers\\Vampire-Solver\\ca.mcgill.ecse.dslreasoner.vampire.reasoner\\lib\\"
+		val CVC4NAME = "vampire.exe"
+		val CVC4LOC = CVC4DIR + CVC4NAME
+
+		val CMD = "cmd /c "
+		val TEMPNAME = "TEMP.tptp"
+//		val SOLNNAME = "solution" + configuration.solver.toString + "_" + configuration.typeScopes.maxNewElements +
+//			"_" + configuration.iteration + ".tptp"
+		val SOLNNAME = "solution" + "_" + configuration.typeScopes.minNewElements + "_" + configuration.iteration +
+			".tptp"
+		val PATH = "C:/cygwin64/bin"
+
+		val wsURI = workspace.workspaceURI
+		val tempLoc = wsURI + TEMPNAME
+		val solnLoc = wsURI + SOLNNAME + " "
+
+		// 1. create temp file for vampire problem
+		var tempURI = workspace.writeModel(problem, TEMPNAME).toFileString
+
+		// 2. run command and save to 
+		// need to have cygwin downloaded
+		var long startTime = -1 as long
+		var long solverTime = -1 as long
+		var Process p = null
+		if (configuration.solver == BackendSolver::LOCVAMP) {
+
+			var OPTION = " --mode casc_sat "
+			if (configuration.runtimeLimit != -1) {
+				OPTION = OPTION + "-t " + configuration.runtimeLimit + " "
+			}
+
+			startTime = System.currentTimeMillis
+			p = Runtime.runtime.exec(CMD + VAMPLOC + OPTION + tempLoc + " > " + solnLoc, newArrayList("Path=" + PATH))
+			p.waitFor
+			solverTime = System.currentTimeMillis - startTime
+		}
+		if (configuration.solver == BackendSolver::CVC4) {
+			var OPTION = " SAT "
+			if (configuration.runtimeLimit != -1) {
+				OPTION = " " + configuration.runtimeLimit + OPTION
+			}
+			println(CMD + CVC4LOC + tempLoc + OPTION + " > " + solnLoc)
+			p = Runtime.runtime.exec(CMD + CVC4LOC + tempLoc + OPTION + " > " + solnLoc, newArrayList("Path=" + PATH))
+			p.waitFor
+			solverTime = System.currentTimeMillis - startTime
+		}
+		
+
+		// 2.1 determine time left
+		// 2.2 store output into local variable
+		val BufferedReader reader = new BufferedReader(new FileReader(solnLoc));
+		val List output = newArrayList
+
+		var line = "";
+		while ((line = reader.readLine()) != null) {
+			if (line == "Finite Model Found!") {
+				return new MonitoredVampireSolution(solverTime, null, true)
+			}
+		}
+		return new MonitoredVampireSolution(solverTime, null, false)
+
+	/*		var line = "";
+	 * 		while ((line = reader.readLine()) != null) {
+	 * 			output.add(line + "\n");
+	 * 		}
+
+	 * //    	println(output.toString())
+	 * 		// 4. delete temp file
+	 * 		workspace.getFile(TEMPNAME).delete
+
+	 * 		// 5. determine and return whether or not finite model was found
+	 * 		// 6. save solution as a .tptp model
+	 * 		val root = workspace.readModel(VampireModel, SOLNNAME).eResource.contents
+
+	 * //		println((root.get(0) as VampireModel ).comments)
+	 * 		return new MonitoredVampireSolution(solverTime, root.get(0) as VampireModel)
+	 * 
+	 */
+	/*
+	 * //Prepare
+	 * val warnings = new LinkedList
+	 * val debugs = new LinkedList
+	 * val runtime = new ArrayList
+	 * val reporter = new A4Reporter() {
+	 * 	override debug(String message) { debugs += message }
+	 * 	override resultSAT (Object command, long solvingTime, Object solution) { runtime += solvingTime }
+	 *    			override resultUNSAT (Object command, long solvingTime, Object solution) { runtime += solvingTime }
+	 * 	override warning(ErrorWarning msg) { warnings += msg.message }
+	 * }
+	 * 
+	 * val options = new A4Options() => [
+	 * 	it.symmetry = configuration.symmetry
+	 * 	it.noOverflow = true
+	 * 	it.solver = getSolver(configuration.getSolver, configuration)
+	 * 	if(configuration.getSolver.externalSolver) {
+	 * 		it.solverDirectory = configuration.solverPath
+	 * 	}
+	 * 	//it.inferPartialInstance
+	 * 	//it.tempDirectory = CommonPlugin.resolve(workspace.workspaceURI).toFileString
+	 * ]
+	 * 
+	 * // Transform
+	 * var Command command = null;
+	 * var CompModule compModule = null
+	 * 
+	 * // Start: Alloy -> Kodkod
+	 * val kodkodTransformStart = System.currentTimeMillis();
+	 * try {
+	 * 	compModule = CompUtil.parseEverything_fromString(reporter,alloyCode)
+	 * 	if(compModule.allCommands.size != 1)
+	 * 		throw new UnsupportedOperationException('''Alloy files with multiple commands are not supported!''')
+	 * 	command = compModule.allCommands.head
+	 * } catch (Err e){
+	 * 	throw new AlloySolverException(e.message,warnings,e)
+	 * }
+	 * val kodkodTransformFinish = System.currentTimeMillis - kodkodTransformStart
+	 * // Finish: Alloy -> Kodkod
+	 * 
+	 * val limiter = new SimpleTimeLimiter
+	 * val callable = new AlloyCallerWithTimeout(warnings,debugs,reporter,options,command,compModule,configuration)
+	 * var List> answers
+	 * var boolean finished
+	 * if(configuration.runtimeLimit == LogicSolverConfiguration::Unlimited) {
+	 * 	answers = callable.call
+	 * 	finished = true
+	 * } else {
+	 * 	try{
+	 * 		answers = limiter.callWithTimeout(callable,configuration.runtimeLimit,TimeUnit.SECONDS,true)
+	 * 		finished = true
+	 * 	} catch (UncheckedTimeoutException e) {
+	 * 		answers = callable.partialAnswers
+	 * 		finished = false
+	 * 	}
+	 * }
+
+	 * new MonitoredAlloySolution(warnings,debugs,kodkodTransformFinish,answers,finished)
+	 */
+	}
+/*
+ * val static Map previousSolverConfigurations = new HashMap
+ * def getSolverConfiguration(AlloyBackendSolver backedSolver, String path, String[] options) {
+ * 	val config = new SolverConfiguration(backedSolver,path,options)
+ * 	if(previousSolverConfigurations.containsKey(config)) {
+ * 		return previousSolverConfigurations.get(config)
+ * 	} else {
+ * 		val id ='''DSLReasoner_Alloy_«previousSolverConfigurations.size»_«backedSolver»'''
+ * 		val newSolver = A4Options.SatSolver.make(id,id,path,options)
+ * 		previousSolverConfigurations.put(config,newSolver)
+ * 		return newSolver
+ * 	}
+ * }
+ * 
+ * def getSolver(AlloyBackendSolver backedSolver, AlloySolverConfiguration configuration) {
+ * 	switch(backedSolver){
+ * 		case BerkMinPIPE: return A4Options.SatSolver.BerkMinPIPE
+ * 		case SpearPIPE: return A4Options.SatSolver.SpearPIPE
+ * 		case MiniSatJNI: return A4Options.SatSolver.MiniSatJNI
+ * 		case MiniSatProverJNI: return A4Options.SatSolver.MiniSatProverJNI
+ * 		case LingelingJNI: return A4Options.SatSolver.LingelingJNI
+ * 		case PLingelingJNI: return getSolverConfiguration(backedSolver,configuration.solverPath,null)
+ * 		case GlucoseJNI: return A4Options.SatSolver.GlucoseJNI
+ * 		case CryptoMiniSatJNI: return A4Options.SatSolver.CryptoMiniSatJNI
+ * 		case SAT4J: return A4Options.SatSolver.SAT4J
+ * 		case CNF: return A4Options.SatSolver.CNF
+ * 		case KodKod: return A4Options.SatSolver.KK
+ * 	}
+ * }
+ * 
+ * def isExternalSolver(AlloyBackendSolver backedSolver) {
+ * 	return !(backedSolver == AlloyBackendSolver.SAT4J)
+ * }
+ */
+}
+/*
+ * class VampireCallerWithTimeout implements Callable>>{
+ * 	
+ * 	val List warnings
+ * 	val List debugs
+ * 	val A4Reporter reporter
+ * 	val A4Options options
+ * 	
+ * 	val Command command
+ * 	val CompModule compModule
+ * 	val AlloySolverConfiguration configuration
+ * 	
+ * 	val List> answers = new LinkedList()
+ * 	
+ * 	new(List warnings,
+ * 		List debugs,
+ * 		A4Reporter reporter,
+ * 		A4Options options,
+ * 		Command command,
+ * 		CompModule compModule,
+ * 		AlloySolverConfiguration configuration)
+ * 	{
+ * 		this.warnings = warnings
+ * 		this.debugs = debugs
+ * 		this.reporter = reporter
+ * 		this.options = options
+ * 		this.command = command
+ * 		this.compModule = compModule
+ * 		this.configuration = configuration
+ * 	}
+ * 	
+ * 	override call() throws Exception {
+ * 		val startTime = System.currentTimeMillis
+ * 		
+ * 		// Start: Execute
+ * 		var A4Solution lastAnswer = null
+ * 		try {
+ * 			if(!configuration.progressMonitor.isCancelled) {
+ * 				do{
+ * 					if(lastAnswer == null) {
+ * 						lastAnswer = TranslateAlloyToKodkod.execute_command(reporter,compModule.allSigs,command,options)
+ * 					} else {
+ * 						lastAnswer = lastAnswer.next
+ * 					}
+ * 					configuration.progressMonitor.workedBackwardTransformation(configuration.solutionScope.numberOfRequiredSolution)
+ * 					
+ * 					val runtime = System.currentTimeMillis -startTime
+ * 					synchronized(this) {
+ * 						answers += (lastAnswer->runtime)
+ * 					}
+ * 				} while(lastAnswer.satisfiable != false && !hasEnoughSolution(answers) && !configuration.progressMonitor.isCancelled)
+ * 				
+ * 			}
+ * 		}catch(Exception e) {
+ * 			warnings +=e.message
+ * 		}
+ * 		// Finish: execute
+ * 		return answers
+ * 	}
+ * 	
+ * 	def hasEnoughSolution(List answers) {
+ * 		if(configuration.solutionScope.numberOfRequiredSolution < 0) return false
+ * 		else return answers.size() == configuration.solutionScope.numberOfRequiredSolution
+ * 	}
+ * 	
+ * 	public def getPartialAnswers() {
+ * 		return answers
+ * 	}
+
+ * }
+ * /*
+ * @Data class SolverConfiguration {
+ * 	VampireBackendSolver backendSolver
+ * 	String path
+ * 	String[] options
+ * }
+ */
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend
new file mode 100644
index 000000000..063dcf2a9
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation.xtend
@@ -0,0 +1,320 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSAnd
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSEquality
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunctionAsTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSOr
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTffFormula
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSUniversalQuantifier
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSAndImpl
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSOrImpl
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSUnaryNegationImpl
+import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.RelationDeclarationImpl
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.TypeDeclarationImpl
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.TypeDefinitionImpl
+import java.util.Arrays
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+
+import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
+import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
+import java.util.concurrent.TimeUnit
+import ca.mcgill.ecse.dslreasoner.vampireLanguage.impl.VLSTermImpl
+
+class VampireModelInterpretation implements LogicModelInterpretation {
+	protected val extension LogiclanguageFactory factory = LogiclanguageFactory.eINSTANCE
+
+	protected val Logic2VampireLanguageMapperTrace forwardTrace;
+
+	// These three maps capture all the information found in the Vampire output
+	private val Map name2DefinedElement = new HashMap
+	private val Map> type2DefinedElement = new HashMap
+	private val Map> relDec2Inst = new HashMap
+	private val Map> relDef2Inst = new HashMap
+
+	// end
+	public new(VampireModel model, Logic2VampireLanguageMapperTrace trace) {
+		this.forwardTrace = trace
+
+		// 1. look at "finite_domain" formula (there should only be one)
+		// IN REALITY THE DEFINED ELEMENTS ARE DEFINED AS :$i
+		// SPECIFICALLY, THESE ARE "TYPE" FORMULAS
+		val finDomFormula = model.tfformulas.filter[name == "finite_domain"].get(0) as VLSTffFormula
+		val univQuant = finDomFormula.fofFormula as VLSUniversalQuantifier
+		var orFormulaTerm = univQuant.operand
+
+		var end = false
+		while (!end) {
+			if (orFormulaTerm.class == VLSOrImpl) {
+				val orFormula = orFormulaTerm as VLSOr
+				val orRight = orFormula.right as VLSEquality
+				add2ConstDefMap(orRight)
+				orFormulaTerm = orFormula.left
+			} else {
+				val firstTerm = orFormulaTerm as VLSEquality
+				add2ConstDefMap(firstTerm)
+				end = true
+			}
+
+		}
+
+		// 2. associate each type to defined elements
+//		println(trace.type2Predicate.keySet)
+//		println(trace.type2Predicate.keySet.length)
+//		println(trace.type2Predicate.keySet.filter[class == TypeDeclarationImpl])
+//		println(trace.type2Predicate.keySet.filter[class == TypeDeclarationImpl].length)
+//		println()
+//		println(trace.type2Predicate)
+		// Fill keys of map
+//		println(trace.type2Predicate.keySet)
+		val allTypeDecls = trace.type2Predicate.keySet.filter[class == TypeDeclarationImpl]
+		val allTypeFunctions = trace.predicate2Type
+//		println(trace.type2Predicate.keySet.filter[class == TypeDefinitionImpl])
+
+		for (type : allTypeDecls) {
+			type2DefinedElement.put(type as TypeDeclaration, newArrayList)
+		}
+
+		// USE THE DECLARE_ FORMULAS TO SEE WHAT THE TYPES ARE
+		val typeFormulas = model.tfformulas.filter [
+			name.length > 12 && (name.substring(0, 12) == "predicate_t_" || name.substring(0, 12) == "predicate_e_")
+		]
+		// ^this way, we ignore the "object" type
+		// TODO potentially need to handle the enums in this case as well
+		for (formula : typeFormulas) {
+			// get associated type
+			val associatedTypeName = (formula as VLSTffFormula).name.substring(10)
+//			print(associatedTypeName)
+			val associatedFunctions = allTypeFunctions.keySet.filter[constant == associatedTypeName]
+			if (associatedFunctions.length > 0) {
+				val associatedFunction = associatedFunctions.get(0) as VLSFunction
+				val associatedTypeAll = associatedFunction.lookup(allTypeFunctions)
+//			val associatedTypeDeclFormula = model.tfformulas.filter[name == ("declare_t_" + associatedTypeName)].get(0) as VLSTffFormula
+//			val associatedTypeDefn = associatedTypeDeclFormula.fofFormula as VLSOtherDeclaration
+//			val associatedTypeFct = associatedTypeDefn.name as VLSConstant
+				if (associatedTypeAll.class == TypeDeclarationImpl) {
+					val associatedType = associatedTypeAll as TypeDeclaration
+
+					// get definedElements
+					var andFormulaTerm = formula.fofFormula
+					end = false
+					val List instances = newArrayList
+					while (!end) {
+						if (andFormulaTerm.class == VLSAndImpl) {
+							val andFormula = andFormulaTerm as VLSAnd
+							val andRight = andFormula.right
+							addIfNotNeg(andRight, instances)
+							andFormulaTerm = andFormula.left
+						} else {
+							addIfNotNeg(andFormulaTerm as VLSTerm, instances)
+							end = true
+						}
+
+					}
+					for (elem : instances) {
+						associatedType.lookup(type2DefinedElement).add(elem)
+					}
+				}
+			}
+
+		}
+
+//		printMap()
+
+		// 3. get relations
+		// Fill keys of map
+		val allRelDecls = trace.rel2Predicate.keySet
+		val allRelDefns = trace.relDef2Predicate.keySet
+		val allRelDeclFunctions = trace.predicate2Relation
+		val allRelDefnFunctions = trace.predicate2RelDef
+
+		for (rel : allRelDecls) {
+			relDec2Inst.put(rel as RelationDeclaration, newArrayList)
+		}
+
+		for (rel : allRelDefns) {
+			relDef2Inst.put(rel as RelationDefinition, newArrayList)
+		}
+
+		// USE THE DECLARE_ FORMULAS TO SEE WHAT THE RELATIONS ARE
+		val relFormulas = model.tfformulas.filter[name.length > 12 && name.substring(0, 12) == "predicate_r_"]
+
+		for (formula : relFormulas) {
+//			println(formula)
+			// get associated type
+			val associatedRelName = (formula as VLSTffFormula).name.substring(10)
+
+			// TRY FOR DECLARATION
+			val associatedRelFunctionList = allRelDeclFunctions.keySet.filter[constant == associatedRelName]
+			if (associatedRelFunctionList.isEmpty) {
+				// THEN IT IS NOT A DECLARATION
+			} else {
+				val associatedRelFunction = associatedRelFunctionList.get(0) as VLSFunction // ASSUMING ONLY 1 SATISFIES QUERY
+				val associatedRel = associatedRelFunction.lookup(allRelDeclFunctions) as RelationDeclaration
+
+				// get definedElements
+				var andFormulaTerm = formula.fofFormula
+				end = false
+				val List instances = newArrayList
+				while (!end) {
+					if (andFormulaTerm.class != null && andFormulaTerm.class == VLSAndImpl) {
+						val andFormula = andFormulaTerm as VLSAnd
+						val andRight = andFormula.right
+						addRelIfNotNeg(andRight, instances)
+						andFormulaTerm = andFormula.left
+					} else {
+						addRelIfNotNeg(andFormulaTerm as VLSTerm, instances)
+						end = true
+					}
+
+				}
+				for (elem : instances) {
+					associatedRel.lookup(relDec2Inst).add(elem)
+				}
+
+			}
+
+		}
+
+//		printMap2()
+	}
+
+	def printMap() {
+		println("------------------")
+		for (key : type2DefinedElement.keySet) {
+			println(key.name + "==>")
+			for (elem : key.lookup(type2DefinedElement)) {
+				print(elem.name + ", ")
+			}
+			println()
+
+		}
+		println()
+		println("--------END ELEMENTS MAP----------")
+	}
+
+	def printMap2() {
+		println("------------------")
+		for (key : relDec2Inst.keySet) {
+			println(key.name + "==>")
+			for (elem : key.lookup(relDec2Inst)) {
+				print("[" + elem.get(0) + "-" + elem.get(1) + "], ")
+			}
+			println()
+
+		}
+		println()
+	}
+
+	def private addIfNotNeg(VLSTerm term, List list) {
+		if (term.class != VLSUnaryNegationImpl) {
+			val nodeName = ((term as VLSFunction).terms.get(0) as VLSFunctionAsTerm).functor
+			val defnElem = nodeName.lookup(name2DefinedElement)
+			list.add(defnElem)
+		}
+	}
+
+	def private addRelIfNotNeg(VLSTerm term, List list) {
+//		println("xxx   " + term.class)
+		if (term.class != VLSUnaryNegationImpl && term.class != VLSTermImpl) {
+			val nodeName1 = ((term as VLSFunction).terms.get(0) as VLSFunctionAsTerm).functor
+			val nodeName2 = ((term as VLSFunction).terms.get(1) as VLSFunctionAsTerm).functor
+			val strArr = newArrayList(nodeName1, nodeName2)
+			list.add(strArr)
+		}
+	}
+
+	def private add2ConstDefMap(VLSEquality eq) {
+		val defElemConst = (eq.right as VLSConstant)
+		val definedElement = createDefinedElement => [name = defElemConst.name]
+		this.name2DefinedElement.put(defElemConst.name, definedElement)
+	}
+
+	override getElements(Type type) { getElementsDispatch(type) }
+
+	def private dispatch getElementsDispatch(TypeDeclaration declaration) {
+		return declaration.lookup(this.type2DefinedElement)
+	}
+
+	def private dispatch getElementsDispatch(TypeDefinition declaration) {
+//		println("~~" + declaration)
+//		println(declaration.elements)
+//		println()
+		return declaration.elements
+	}
+
+	override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) {
+		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+	}
+
+	override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) {
+//		print("-- " + relation.name)
+		val node1 = (parameterSubstitution.get(0) as DefinedElement).name
+		val node2 = (parameterSubstitution.get(1) as DefinedElement).name
+		val realRelations = relation.lookup(relDec2Inst)
+		for (real : realRelations) {
+			if (real.contains(node1) && real.contains(node2)) {
+//				println("  true")
+				TimeUnit.MILLISECONDS.sleep(10)
+				return true
+			}
+		}
+//		println("  false")
+		TimeUnit.MILLISECONDS.sleep(10)
+		return false
+	}
+
+	override getInterpretation(ConstantDeclaration constant) {
+		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+	}
+
+	override getAllIntegersInStructure() {
+		return null
+	}
+
+	override getAllRealsInStructure() {
+		return null
+	}
+
+	override getAllStringsInStructure() {
+		return null
+	}
+
+}
+
+/**
+ * Helper class for efficiently matching parameter substitutions for functions and relations.
+ */
+class ParameterSubstitution {
+	val Object[] data;
+
+	new(Object[] data) {
+		this.data = data
+	}
+
+	override equals(Object obj) {
+		if(obj === this) return true else if(obj == null) return false
+		if (obj instanceof ParameterSubstitution) {
+			return Arrays.equals(this.data, obj.data)
+		}
+		return false
+	}
+
+	override hashCode() {
+		Arrays.hashCode(data)
+	}
+}
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation_TypeInterpretation.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation_TypeInterpretation.xtend
new file mode 100644
index 000000000..66f4fb061
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation_TypeInterpretation.xtend
@@ -0,0 +1,5 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+interface VampireModelInterpretation_TypeInterpretation {
+	
+}
\ No newline at end of file
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtend
new file mode 100644
index 000000000..863ec7834
--- /dev/null
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/VampireModelInterpretation_TypeInterpretation_FilteredTypes.xtend
@@ -0,0 +1,5 @@
+package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
+
+class VampireModelInterpretation_TypeInterpretation_FilteredTypes implements VampireModelInterpretation_TypeInterpretation {
+	//TODO
+}
\ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/.gitignore
index f54977b35..0d198f7eb 100644
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/.gitignore
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/.gitignore
@@ -3,3 +3,4 @@
 /xtend-gen/
 /bin/
 /x/
+/output-Vampire/
\ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/config/genericVampire.vsconfig b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/config/genericVampire.vsconfig
new file mode 100644
index 000000000..3be8e6e13
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/config/genericVampire.vsconfig
@@ -0,0 +1,26 @@
+import epackage	"../../../Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.ecore"
+import viatra	"../../../Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakinduPatterns.vql"
+
+generate {
+	metamodel = { package yakindumm }
+	constraints = { package ca.mcgill.ecse.dslreasoner.yakindu.queries}
+	partial-model = { "../../../Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/Yakindu.xmi" }
+	solver = TPTPSolver
+	scope = {
+		#node += 20..*
+	}
+	
+	config = {
+		runtime = 10000,
+		log-level = normal,
+		"solver" = "vampire-local"
+	}
+	
+	runs = 1
+	number = 10
+	
+	debug =			"output/debug/"
+	log =			"output/debug/log.txt"
+	output =		"output/models"
+	statistics =	"output/debug/statistics.csv"
+}
\ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/plugin.xml b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/plugin.xml
index 5f40caf66..f0f6677f4 100644
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/plugin.xml
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/plugin.xml
@@ -45,4 +45,15 @@
       
     
   
+  
+    
+      
+      
+      
+      
+      
+      
+      
+    
+  
 
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/FamilyTreeConstraints.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/FamilyTreeConstraints.java
deleted file mode 100644
index 33dfe6975..000000000
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/FamilyTreeConstraints.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Generated from platform:/resource/case.study.pledge.run/src/queries/familyTreeConstraints.vql
- */
-package queries;
-
-import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
-import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
-import queries.MemberHasParent;
-import queries.MemberIsItsOwnParent;
-import queries.NegativeAge;
-import queries.ParentTooYoung;
-import queries.TwoMembersHaveNoParent;
-
-/**
- * A pattern group formed of all public patterns defined in familyTreeConstraints.vql.
- * 
- * 

Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare - * a VIATRA Query engine for matching all patterns originally defined in file familyTreeConstraints.vql, - * in order to achieve better performance than one-by-one on-demand matcher initialization. - * - *

From package queries, the group contains the definition of the following patterns:

    - *
  • memberIsItsOwnParent
  • - *
  • twoMembersHaveNoParent
  • - *
  • memberHasParent
  • - *
  • negativeAge
  • - *
  • parentTooYoung
  • - *
- * - * @see IQueryGroup - * - */ -@SuppressWarnings("all") -public final class FamilyTreeConstraints extends BaseGeneratedPatternGroup { - /** - * Access the pattern group. - * - * @return the singleton instance of the group - * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications - * - */ - public static FamilyTreeConstraints instance() { - if (INSTANCE == null) { - INSTANCE = new FamilyTreeConstraints(); - } - return INSTANCE; - } - - private static FamilyTreeConstraints INSTANCE; - - private FamilyTreeConstraints() { - querySpecifications.add(MemberIsItsOwnParent.instance()); - querySpecifications.add(TwoMembersHaveNoParent.instance()); - querySpecifications.add(MemberHasParent.instance()); - querySpecifications.add(NegativeAge.instance()); - querySpecifications.add(ParentTooYoung.instance()); - } - - public MemberIsItsOwnParent getMemberIsItsOwnParent() { - return MemberIsItsOwnParent.instance(); - } - - public MemberIsItsOwnParent.Matcher getMemberIsItsOwnParent(final ViatraQueryEngine engine) { - return MemberIsItsOwnParent.Matcher.on(engine); - } - - public TwoMembersHaveNoParent getTwoMembersHaveNoParent() { - return TwoMembersHaveNoParent.instance(); - } - - public TwoMembersHaveNoParent.Matcher getTwoMembersHaveNoParent(final ViatraQueryEngine engine) { - return TwoMembersHaveNoParent.Matcher.on(engine); - } - - public MemberHasParent getMemberHasParent() { - return MemberHasParent.instance(); - } - - public MemberHasParent.Matcher getMemberHasParent(final ViatraQueryEngine engine) { - return MemberHasParent.Matcher.on(engine); - } - - public NegativeAge getNegativeAge() { - return NegativeAge.instance(); - } - - public NegativeAge.Matcher getNegativeAge(final ViatraQueryEngine engine) { - return NegativeAge.Matcher.on(engine); - } - - public ParentTooYoung getParentTooYoung() { - return ParentTooYoung.instance(); - } - - public ParentTooYoung.Matcher getParentTooYoung(final ViatraQueryEngine engine) { - return ParentTooYoung.Matcher.on(engine); - } -} diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/ParentTooYoung.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/ParentTooYoung.java deleted file mode 100644 index bd22826db..000000000 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/ParentTooYoung.java +++ /dev/null @@ -1,775 +0,0 @@ -/** - * Generated from platform:/resource/case.study.pledge.run/src/queries/familyTreeConstraints.vql - */ -package queries; - -import familytree.Member; -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.apache.log4j.Logger; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EDataType; -import org.eclipse.viatra.query.runtime.api.IPatternMatch; -import org.eclipse.viatra.query.runtime.api.IQuerySpecification; -import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; -import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; -import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; -import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey; -import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey; -import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; -import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator; -import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; -import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; -import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; -import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; - -/** - * A pattern-specific query specification that can instantiate Matcher in a type-safe way. - * - *

Original source: - *

- *         {@literal @}Constraint(message="parentTooYoung", severity="error", key={c, p})
- *         pattern parentTooYoung(c: Member, p: Member) = {
- *         	FamilyTree.members(_, c);
- *         	Member.parents(c, p);
- *         	Member.age(c, cAge);
- *         	Member.age(p, pAge);
- *         	check (pAge {@literal <}= (cAge + 12));
- *         }
- * 
- * - * @see Matcher - * @see Match - * - */ -@SuppressWarnings("all") -public final class ParentTooYoung extends BaseGeneratedEMFQuerySpecification { - /** - * Pattern-specific match representation of the queries.parentTooYoung pattern, - * to be used in conjunction with {@link Matcher}. - * - *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. - * Each instance is a (possibly partial) substitution of pattern parameters, - * usable to represent a match of the pattern in the result of a query, - * or to specify the bound (fixed) input parameters when issuing a query. - * - * @see Matcher - * - */ - public static abstract class Match extends BasePatternMatch { - private Member fC; - - private Member fP; - - private static List parameterNames = makeImmutableList("c", "p"); - - private Match(final Member pC, final Member pP) { - this.fC = pC; - this.fP = pP; - } - - @Override - public Object get(final String parameterName) { - switch(parameterName) { - case "c": return this.fC; - case "p": return this.fP; - default: return null; - } - } - - @Override - public Object get(final int index) { - switch(index) { - case 0: return this.fC; - case 1: return this.fP; - default: return null; - } - } - - public Member getC() { - return this.fC; - } - - public Member getP() { - return this.fP; - } - - @Override - public boolean set(final String parameterName, final Object newValue) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("c".equals(parameterName) ) { - this.fC = (Member) newValue; - return true; - } - if ("p".equals(parameterName) ) { - this.fP = (Member) newValue; - return true; - } - return false; - } - - public void setC(final Member pC) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fC = pC; - } - - public void setP(final Member pP) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fP = pP; - } - - @Override - public String patternName() { - return "queries.parentTooYoung"; - } - - @Override - public List parameterNames() { - return ParentTooYoung.Match.parameterNames; - } - - @Override - public Object[] toArray() { - return new Object[]{fC, fP}; - } - - @Override - public ParentTooYoung.Match toImmutable() { - return isMutable() ? newMatch(fC, fP) : this; - } - - @Override - public String prettyPrint() { - StringBuilder result = new StringBuilder(); - result.append("\"c\"=" + prettyPrintValue(fC) + ", "); - result.append("\"p\"=" + prettyPrintValue(fP)); - return result.toString(); - } - - @Override - public int hashCode() { - return Objects.hash(fC, fP); - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) { - return false; - } - if ((obj instanceof ParentTooYoung.Match)) { - ParentTooYoung.Match other = (ParentTooYoung.Match) obj; - return Objects.equals(fC, other.fC) && Objects.equals(fP, other.fP); - } else { - // this should be infrequent - if (!(obj instanceof IPatternMatch)) { - return false; - } - IPatternMatch otherSig = (IPatternMatch) obj; - return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); - } - } - - @Override - public ParentTooYoung specification() { - return ParentTooYoung.instance(); - } - - /** - * Returns an empty, mutable match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @return the empty match. - * - */ - public static ParentTooYoung.Match newEmptyMatch() { - return new Mutable(null, null); - } - - /** - * Returns a mutable (partial) match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return the new, mutable (partial) match object. - * - */ - public static ParentTooYoung.Match newMutableMatch(final Member pC, final Member pP) { - return new Mutable(pC, pP); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return the (partial) match object. - * - */ - public static ParentTooYoung.Match newMatch(final Member pC, final Member pP) { - return new Immutable(pC, pP); - } - - private static final class Mutable extends ParentTooYoung.Match { - Mutable(final Member pC, final Member pP) { - super(pC, pP); - } - - @Override - public boolean isMutable() { - return true; - } - } - - private static final class Immutable extends ParentTooYoung.Match { - Immutable(final Member pC, final Member pP) { - super(pC, pP); - } - - @Override - public boolean isMutable() { - return false; - } - } - } - - /** - * Generated pattern matcher API of the queries.parentTooYoung pattern, - * providing pattern-specific query methods. - * - *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, - * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. - * - *

Matches of the pattern will be represented as {@link Match}. - * - *

Original source: - *

-   * {@literal @}Constraint(message="parentTooYoung", severity="error", key={c, p})
-   * pattern parentTooYoung(c: Member, p: Member) = {
-   * 	FamilyTree.members(_, c);
-   * 	Member.parents(c, p);
-   * 	Member.age(c, cAge);
-   * 	Member.age(p, pAge);
-   * 	check (pAge {@literal <}= (cAge + 12));
-   * }
-   * 
- * - * @see Match - * @see ParentTooYoung - * - */ - public static class Matcher extends BaseMatcher { - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - public static ParentTooYoung.Matcher on(final ViatraQueryEngine engine) { - // check if matcher already exists - Matcher matcher = engine.getExistingMatcher(querySpecification()); - if (matcher == null) { - matcher = (Matcher)engine.getMatcher(querySpecification()); - } - return matcher; - } - - /** - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * @return an initialized matcher - * @noreference This method is for internal matcher initialization by the framework, do not call it manually. - * - */ - public static ParentTooYoung.Matcher create() { - return new Matcher(); - } - - private static final int POSITION_C = 0; - - private static final int POSITION_P = 1; - - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(ParentTooYoung.Matcher.class); - - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - private Matcher() { - super(querySpecification()); - } - - /** - * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return matches represented as a Match object. - * - */ - public Collection getAllMatches(final Member pC, final Member pP) { - return rawStreamAllMatches(new Object[]{pC, pP}).collect(Collectors.toSet()); - } - - /** - * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return a stream of matches represented as a Match object. - * - */ - public Stream streamAllMatches(final Member pC, final Member pP) { - return rawStreamAllMatches(new Object[]{pC, pP}); - } - - /** - * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return a match represented as a Match object, or null if no match is found. - * - */ - public Optional getOneArbitraryMatch(final Member pC, final Member pP) { - return rawGetOneArbitraryMatch(new Object[]{pC, pP}); - } - - /** - * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, - * under any possible substitution of the unspecified parameters (if any). - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return true if the input is a valid (partial) match of the pattern. - * - */ - public boolean hasMatch(final Member pC, final Member pP) { - return rawHasMatch(new Object[]{pC, pP}); - } - - /** - * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return the number of pattern matches found. - * - */ - public int countMatches(final Member pC, final Member pP) { - return rawCountMatches(new Object[]{pC, pP}); - } - - /** - * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @param processor the action that will process the selected match. - * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked - * - */ - public boolean forOneArbitraryMatch(final Member pC, final Member pP, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pC, pP}, processor); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param pP the fixed value of pattern parameter p, or null if not bound. - * @return the (partial) match object. - * - */ - public ParentTooYoung.Match newMatch(final Member pC, final Member pP) { - return ParentTooYoung.Match.newMatch(pC, pP); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - protected Stream rawStreamAllValuesOfc(final Object[] parameters) { - return rawStreamAllValues(POSITION_C, parameters).map(Member.class::cast); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfc() { - return rawStreamAllValuesOfc(emptyArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfc() { - return rawStreamAllValuesOfc(emptyArray()); - } - - /** - * Retrieve the set of values that occur in matches for c. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfc(final ParentTooYoung.Match partialMatch) { - return rawStreamAllValuesOfc(partialMatch.toArray()); - } - - /** - * Retrieve the set of values that occur in matches for c. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfc(final Member pP) { - return rawStreamAllValuesOfc(new Object[]{null, pP}); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfc(final ParentTooYoung.Match partialMatch) { - return rawStreamAllValuesOfc(partialMatch.toArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfc(final Member pP) { - return rawStreamAllValuesOfc(new Object[]{null, pP}).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for p. - * @return the Set of all values or empty set if there are no matches - * - */ - protected Stream rawStreamAllValuesOfp(final Object[] parameters) { - return rawStreamAllValues(POSITION_P, parameters).map(Member.class::cast); - } - - /** - * Retrieve the set of values that occur in matches for p. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfp() { - return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for p. - * @return the Set of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfp() { - return rawStreamAllValuesOfp(emptyArray()); - } - - /** - * Retrieve the set of values that occur in matches for p. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfp(final ParentTooYoung.Match partialMatch) { - return rawStreamAllValuesOfp(partialMatch.toArray()); - } - - /** - * Retrieve the set of values that occur in matches for p. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfp(final Member pC) { - return rawStreamAllValuesOfp(new Object[]{pC, null}); - } - - /** - * Retrieve the set of values that occur in matches for p. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfp(final ParentTooYoung.Match partialMatch) { - return rawStreamAllValuesOfp(partialMatch.toArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for p. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfp(final Member pC) { - return rawStreamAllValuesOfp(new Object[]{pC, null}).collect(Collectors.toSet()); - } - - @Override - protected ParentTooYoung.Match tupleToMatch(final Tuple t) { - try { - return ParentTooYoung.Match.newMatch((Member) t.get(POSITION_C), (Member) t.get(POSITION_P)); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in tuple not properly typed!",e); - return null; - } - } - - @Override - protected ParentTooYoung.Match arrayToMatch(final Object[] match) { - try { - return ParentTooYoung.Match.newMatch((Member) match[POSITION_C], (Member) match[POSITION_P]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - @Override - protected ParentTooYoung.Match arrayToMatchMutable(final Object[] match) { - try { - return ParentTooYoung.Match.newMutableMatch((Member) match[POSITION_C], (Member) match[POSITION_P]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - /** - * @return the singleton instance of the query specification of this pattern - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static IQuerySpecification querySpecification() { - return ParentTooYoung.instance(); - } - } - - private ParentTooYoung() { - super(GeneratedPQuery.INSTANCE); - } - - /** - * @return the singleton instance of the query specification - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static ParentTooYoung instance() { - try{ - return LazyHolder.INSTANCE; - } catch (ExceptionInInitializerError err) { - throw processInitializerError(err); - } - } - - @Override - protected ParentTooYoung.Matcher instantiate(final ViatraQueryEngine engine) { - return ParentTooYoung.Matcher.on(engine); - } - - @Override - public ParentTooYoung.Matcher instantiate() { - return ParentTooYoung.Matcher.create(); - } - - @Override - public ParentTooYoung.Match newEmptyMatch() { - return ParentTooYoung.Match.newEmptyMatch(); - } - - @Override - public ParentTooYoung.Match newMatch(final Object... parameters) { - return ParentTooYoung.Match.newMatch((familytree.Member) parameters[0], (familytree.Member) parameters[1]); - } - - /** - * Inner class allowing the singleton instance of {@link ParentTooYoung} to be created - * not at the class load time of the outer class, - * but rather at the first call to {@link ParentTooYoung#instance()}. - * - *

This workaround is required e.g. to support recursion. - * - */ - private static class LazyHolder { - private static final ParentTooYoung INSTANCE = new ParentTooYoung(); - - /** - * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. - * This initialization order is required to support indirect recursion. - * - *

The static initializer is defined using a helper field to work around limitations of the code generator. - * - */ - private static final Object STATIC_INITIALIZER = ensureInitialized(); - - public static Object ensureInitialized() { - INSTANCE.ensureInitializedInternal(); - return null; - } - } - - private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final ParentTooYoung.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - - private final PParameter parameter_c = new PParameter("c", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); - - private final PParameter parameter_p = new PParameter("p", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); - - private final List parameters = Arrays.asList(parameter_c, parameter_p); - - private GeneratedPQuery() { - super(PVisibility.PUBLIC); - } - - @Override - public String getFullyQualifiedName() { - return "queries.parentTooYoung"; - } - - @Override - public List getParameterNames() { - return Arrays.asList("c","p"); - } - - @Override - public List getParameters() { - return parameters; - } - - @Override - public Set doGetContainedBodies() { - setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); - Set bodies = new LinkedHashSet<>(); - { - PBody body = new PBody(this); - PVariable var_c = body.getOrCreateVariableByName("c"); - PVariable var_p = body.getOrCreateVariableByName("p"); - PVariable var___0_ = body.getOrCreateVariableByName("_<0>"); - PVariable var_cAge = body.getOrCreateVariableByName("cAge"); - PVariable var_pAge = body.getOrCreateVariableByName("pAge"); - new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_c, parameter_c), - new ExportedParameter(body, var_p, parameter_p) - )); - // FamilyTree.members(_, c) - new TypeConstraint(body, Tuples.flatTupleOf(var___0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "FamilyTree"))); - PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); - new TypeConstraint(body, Tuples.flatTupleOf(var___0_, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "FamilyTree", "members"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new Equality(body, var__virtual_0_, var_c); - // Member.parents(c, p) - new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_c, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "parents"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new Equality(body, var__virtual_1_, var_p); - // Member.age(c, cAge) - new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_c, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "age"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt"))); - new Equality(body, var__virtual_2_, var_cAge); - // Member.age(p, pAge) - new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.example.org/familytree", "Member", "age"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt"))); - new Equality(body, var__virtual_3_, var_pAge); - // check (pAge <= (cAge + 12)) - new ExpressionEvaluation(body, new IExpressionEvaluator() { - - @Override - public String getShortDescription() { - return "Expression evaluation from pattern parentTooYoung"; - } - - @Override - public Iterable getInputParameterNames() { - return Arrays.asList("cAge", "pAge");} - - @Override - public Object evaluateExpression(IValueProvider provider) throws Exception { - Integer cAge = (Integer) provider.getValue("cAge"); - Integer pAge = (Integer) provider.getValue("pAge"); - return evaluateExpression_1_1(cAge, pAge); - } - }, null); - bodies.add(body); - } - { - PAnnotation annotation = new PAnnotation("Constraint"); - annotation.addAttribute("message", "parentTooYoung"); - annotation.addAttribute("severity", "error"); - annotation.addAttribute("key", Arrays.asList(new Object[] { - new ParameterReference("c"), - new ParameterReference("p") - })); - addAnnotation(annotation); - } - return bodies; - } - } - - private static boolean evaluateExpression_1_1(final Integer cAge, final Integer pAge) { - return ((pAge).intValue() <= ((cAge).intValue() + 12)); - } -} diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/TwoMembersHaveNoParent.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/TwoMembersHaveNoParent.java deleted file mode 100644 index 326579dc0..000000000 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src-gen/queries/TwoMembersHaveNoParent.java +++ /dev/null @@ -1,723 +0,0 @@ -/** - * Generated from platform:/resource/case.study.pledge.run/src/queries/familyTreeConstraints.vql - */ -package queries; - -import familytree.Member; -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.apache.log4j.Logger; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.viatra.query.runtime.api.IPatternMatch; -import org.eclipse.viatra.query.runtime.api.IQuerySpecification; -import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; -import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; -import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; -import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; -import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; -import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; -import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; -import queries.MemberHasParent; - -/** - * A pattern-specific query specification that can instantiate Matcher in a type-safe way. - * - *

Original source: - *

- *         {@literal @}Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2})
- *         pattern twoMembersHaveNoParent(m1:Member, m2:Member) = {
- *         	neg find memberHasParent(m1);
- *         	neg find memberHasParent(m2);
- *         	m1 != m2;
- *         }
- * 
- * - * @see Matcher - * @see Match - * - */ -@SuppressWarnings("all") -public final class TwoMembersHaveNoParent extends BaseGeneratedEMFQuerySpecification { - /** - * Pattern-specific match representation of the queries.twoMembersHaveNoParent pattern, - * to be used in conjunction with {@link Matcher}. - * - *

Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. - * Each instance is a (possibly partial) substitution of pattern parameters, - * usable to represent a match of the pattern in the result of a query, - * or to specify the bound (fixed) input parameters when issuing a query. - * - * @see Matcher - * - */ - public static abstract class Match extends BasePatternMatch { - private Member fM1; - - private Member fM2; - - private static List parameterNames = makeImmutableList("m1", "m2"); - - private Match(final Member pM1, final Member pM2) { - this.fM1 = pM1; - this.fM2 = pM2; - } - - @Override - public Object get(final String parameterName) { - switch(parameterName) { - case "m1": return this.fM1; - case "m2": return this.fM2; - default: return null; - } - } - - @Override - public Object get(final int index) { - switch(index) { - case 0: return this.fM1; - case 1: return this.fM2; - default: return null; - } - } - - public Member getM1() { - return this.fM1; - } - - public Member getM2() { - return this.fM2; - } - - @Override - public boolean set(final String parameterName, final Object newValue) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("m1".equals(parameterName) ) { - this.fM1 = (Member) newValue; - return true; - } - if ("m2".equals(parameterName) ) { - this.fM2 = (Member) newValue; - return true; - } - return false; - } - - public void setM1(final Member pM1) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fM1 = pM1; - } - - public void setM2(final Member pM2) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fM2 = pM2; - } - - @Override - public String patternName() { - return "queries.twoMembersHaveNoParent"; - } - - @Override - public List parameterNames() { - return TwoMembersHaveNoParent.Match.parameterNames; - } - - @Override - public Object[] toArray() { - return new Object[]{fM1, fM2}; - } - - @Override - public TwoMembersHaveNoParent.Match toImmutable() { - return isMutable() ? newMatch(fM1, fM2) : this; - } - - @Override - public String prettyPrint() { - StringBuilder result = new StringBuilder(); - result.append("\"m1\"=" + prettyPrintValue(fM1) + ", "); - result.append("\"m2\"=" + prettyPrintValue(fM2)); - return result.toString(); - } - - @Override - public int hashCode() { - return Objects.hash(fM1, fM2); - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) { - return false; - } - if ((obj instanceof TwoMembersHaveNoParent.Match)) { - TwoMembersHaveNoParent.Match other = (TwoMembersHaveNoParent.Match) obj; - return Objects.equals(fM1, other.fM1) && Objects.equals(fM2, other.fM2); - } else { - // this should be infrequent - if (!(obj instanceof IPatternMatch)) { - return false; - } - IPatternMatch otherSig = (IPatternMatch) obj; - return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); - } - } - - @Override - public TwoMembersHaveNoParent specification() { - return TwoMembersHaveNoParent.instance(); - } - - /** - * Returns an empty, mutable match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @return the empty match. - * - */ - public static TwoMembersHaveNoParent.Match newEmptyMatch() { - return new Mutable(null, null); - } - - /** - * Returns a mutable (partial) match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return the new, mutable (partial) match object. - * - */ - public static TwoMembersHaveNoParent.Match newMutableMatch(final Member pM1, final Member pM2) { - return new Mutable(pM1, pM2); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return the (partial) match object. - * - */ - public static TwoMembersHaveNoParent.Match newMatch(final Member pM1, final Member pM2) { - return new Immutable(pM1, pM2); - } - - private static final class Mutable extends TwoMembersHaveNoParent.Match { - Mutable(final Member pM1, final Member pM2) { - super(pM1, pM2); - } - - @Override - public boolean isMutable() { - return true; - } - } - - private static final class Immutable extends TwoMembersHaveNoParent.Match { - Immutable(final Member pM1, final Member pM2) { - super(pM1, pM2); - } - - @Override - public boolean isMutable() { - return false; - } - } - } - - /** - * Generated pattern matcher API of the queries.twoMembersHaveNoParent pattern, - * providing pattern-specific query methods. - * - *

Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, - * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. - * - *

Matches of the pattern will be represented as {@link Match}. - * - *

Original source: - *

-   * {@literal @}Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2})
-   * pattern twoMembersHaveNoParent(m1:Member, m2:Member) = {
-   * 	neg find memberHasParent(m1);
-   * 	neg find memberHasParent(m2);
-   * 	m1 != m2;
-   * }
-   * 
- * - * @see Match - * @see TwoMembersHaveNoParent - * - */ - public static class Matcher extends BaseMatcher { - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - public static TwoMembersHaveNoParent.Matcher on(final ViatraQueryEngine engine) { - // check if matcher already exists - Matcher matcher = engine.getExistingMatcher(querySpecification()); - if (matcher == null) { - matcher = (Matcher)engine.getMatcher(querySpecification()); - } - return matcher; - } - - /** - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * @return an initialized matcher - * @noreference This method is for internal matcher initialization by the framework, do not call it manually. - * - */ - public static TwoMembersHaveNoParent.Matcher create() { - return new Matcher(); - } - - private static final int POSITION_M1 = 0; - - private static final int POSITION_M2 = 1; - - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(TwoMembersHaveNoParent.Matcher.class); - - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - private Matcher() { - super(querySpecification()); - } - - /** - * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return matches represented as a Match object. - * - */ - public Collection getAllMatches(final Member pM1, final Member pM2) { - return rawStreamAllMatches(new Object[]{pM1, pM2}).collect(Collectors.toSet()); - } - - /** - * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return a stream of matches represented as a Match object. - * - */ - public Stream streamAllMatches(final Member pM1, final Member pM2) { - return rawStreamAllMatches(new Object[]{pM1, pM2}); - } - - /** - * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return a match represented as a Match object, or null if no match is found. - * - */ - public Optional getOneArbitraryMatch(final Member pM1, final Member pM2) { - return rawGetOneArbitraryMatch(new Object[]{pM1, pM2}); - } - - /** - * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, - * under any possible substitution of the unspecified parameters (if any). - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return true if the input is a valid (partial) match of the pattern. - * - */ - public boolean hasMatch(final Member pM1, final Member pM2) { - return rawHasMatch(new Object[]{pM1, pM2}); - } - - /** - * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return the number of pattern matches found. - * - */ - public int countMatches(final Member pM1, final Member pM2) { - return rawCountMatches(new Object[]{pM1, pM2}); - } - - /** - * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @param processor the action that will process the selected match. - * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked - * - */ - public boolean forOneArbitraryMatch(final Member pM1, final Member pM2, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pM1, pM2}, processor); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pM1 the fixed value of pattern parameter m1, or null if not bound. - * @param pM2 the fixed value of pattern parameter m2, or null if not bound. - * @return the (partial) match object. - * - */ - public TwoMembersHaveNoParent.Match newMatch(final Member pM1, final Member pM2) { - return TwoMembersHaveNoParent.Match.newMatch(pM1, pM2); - } - - /** - * Retrieve the set of values that occur in matches for m1. - * @return the Set of all values or empty set if there are no matches - * - */ - protected Stream rawStreamAllValuesOfm1(final Object[] parameters) { - return rawStreamAllValues(POSITION_M1, parameters).map(Member.class::cast); - } - - /** - * Retrieve the set of values that occur in matches for m1. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfm1() { - return rawStreamAllValuesOfm1(emptyArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for m1. - * @return the Set of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfm1() { - return rawStreamAllValuesOfm1(emptyArray()); - } - - /** - * Retrieve the set of values that occur in matches for m1. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfm1(final TwoMembersHaveNoParent.Match partialMatch) { - return rawStreamAllValuesOfm1(partialMatch.toArray()); - } - - /** - * Retrieve the set of values that occur in matches for m1. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfm1(final Member pM2) { - return rawStreamAllValuesOfm1(new Object[]{null, pM2}); - } - - /** - * Retrieve the set of values that occur in matches for m1. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfm1(final TwoMembersHaveNoParent.Match partialMatch) { - return rawStreamAllValuesOfm1(partialMatch.toArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for m1. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfm1(final Member pM2) { - return rawStreamAllValuesOfm1(new Object[]{null, pM2}).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for m2. - * @return the Set of all values or empty set if there are no matches - * - */ - protected Stream rawStreamAllValuesOfm2(final Object[] parameters) { - return rawStreamAllValues(POSITION_M2, parameters).map(Member.class::cast); - } - - /** - * Retrieve the set of values that occur in matches for m2. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfm2() { - return rawStreamAllValuesOfm2(emptyArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for m2. - * @return the Set of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfm2() { - return rawStreamAllValuesOfm2(emptyArray()); - } - - /** - * Retrieve the set of values that occur in matches for m2. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfm2(final TwoMembersHaveNoParent.Match partialMatch) { - return rawStreamAllValuesOfm2(partialMatch.toArray()); - } - - /** - * Retrieve the set of values that occur in matches for m2. - *

- * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * - * @return the Stream of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfm2(final Member pM1) { - return rawStreamAllValuesOfm2(new Object[]{pM1, null}); - } - - /** - * Retrieve the set of values that occur in matches for m2. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfm2(final TwoMembersHaveNoParent.Match partialMatch) { - return rawStreamAllValuesOfm2(partialMatch.toArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for m2. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfm2(final Member pM1) { - return rawStreamAllValuesOfm2(new Object[]{pM1, null}).collect(Collectors.toSet()); - } - - @Override - protected TwoMembersHaveNoParent.Match tupleToMatch(final Tuple t) { - try { - return TwoMembersHaveNoParent.Match.newMatch((Member) t.get(POSITION_M1), (Member) t.get(POSITION_M2)); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in tuple not properly typed!",e); - return null; - } - } - - @Override - protected TwoMembersHaveNoParent.Match arrayToMatch(final Object[] match) { - try { - return TwoMembersHaveNoParent.Match.newMatch((Member) match[POSITION_M1], (Member) match[POSITION_M2]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - @Override - protected TwoMembersHaveNoParent.Match arrayToMatchMutable(final Object[] match) { - try { - return TwoMembersHaveNoParent.Match.newMutableMatch((Member) match[POSITION_M1], (Member) match[POSITION_M2]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - /** - * @return the singleton instance of the query specification of this pattern - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static IQuerySpecification querySpecification() { - return TwoMembersHaveNoParent.instance(); - } - } - - private TwoMembersHaveNoParent() { - super(GeneratedPQuery.INSTANCE); - } - - /** - * @return the singleton instance of the query specification - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static TwoMembersHaveNoParent instance() { - try{ - return LazyHolder.INSTANCE; - } catch (ExceptionInInitializerError err) { - throw processInitializerError(err); - } - } - - @Override - protected TwoMembersHaveNoParent.Matcher instantiate(final ViatraQueryEngine engine) { - return TwoMembersHaveNoParent.Matcher.on(engine); - } - - @Override - public TwoMembersHaveNoParent.Matcher instantiate() { - return TwoMembersHaveNoParent.Matcher.create(); - } - - @Override - public TwoMembersHaveNoParent.Match newEmptyMatch() { - return TwoMembersHaveNoParent.Match.newEmptyMatch(); - } - - @Override - public TwoMembersHaveNoParent.Match newMatch(final Object... parameters) { - return TwoMembersHaveNoParent.Match.newMatch((familytree.Member) parameters[0], (familytree.Member) parameters[1]); - } - - /** - * Inner class allowing the singleton instance of {@link TwoMembersHaveNoParent} to be created - * not at the class load time of the outer class, - * but rather at the first call to {@link TwoMembersHaveNoParent#instance()}. - * - *

This workaround is required e.g. to support recursion. - * - */ - private static class LazyHolder { - private static final TwoMembersHaveNoParent INSTANCE = new TwoMembersHaveNoParent(); - - /** - * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. - * This initialization order is required to support indirect recursion. - * - *

The static initializer is defined using a helper field to work around limitations of the code generator. - * - */ - private static final Object STATIC_INITIALIZER = ensureInitialized(); - - public static Object ensureInitialized() { - INSTANCE.ensureInitializedInternal(); - return null; - } - } - - private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final TwoMembersHaveNoParent.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - - private final PParameter parameter_m1 = new PParameter("m1", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); - - private final PParameter parameter_m2 = new PParameter("m2", "familytree.Member", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.example.org/familytree", "Member")), PParameterDirection.INOUT); - - private final List parameters = Arrays.asList(parameter_m1, parameter_m2); - - private GeneratedPQuery() { - super(PVisibility.PUBLIC); - } - - @Override - public String getFullyQualifiedName() { - return "queries.twoMembersHaveNoParent"; - } - - @Override - public List getParameterNames() { - return Arrays.asList("m1","m2"); - } - - @Override - public List getParameters() { - return parameters; - } - - @Override - public Set doGetContainedBodies() { - setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); - Set bodies = new LinkedHashSet<>(); - { - PBody body = new PBody(this); - PVariable var_m1 = body.getOrCreateVariableByName("m1"); - PVariable var_m2 = body.getOrCreateVariableByName("m2"); - new TypeConstraint(body, Tuples.flatTupleOf(var_m1), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - new TypeConstraint(body, Tuples.flatTupleOf(var_m2), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.example.org/familytree", "Member"))); - body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_m1, parameter_m1), - new ExportedParameter(body, var_m2, parameter_m2) - )); - // neg find memberHasParent(m1) - new NegativePatternCall(body, Tuples.flatTupleOf(var_m1), MemberHasParent.instance().getInternalQueryRepresentation()); - // neg find memberHasParent(m2) - new NegativePatternCall(body, Tuples.flatTupleOf(var_m2), MemberHasParent.instance().getInternalQueryRepresentation()); - // m1 != m2 - new Inequality(body, var_m1, var_m2); - bodies.add(body); - } - { - PAnnotation annotation = new PAnnotation("Constraint"); - annotation.addAttribute("message", "twoMembersHaveNoParent"); - annotation.addAttribute("severity", "error"); - annotation.addAttribute("key", Arrays.asList(new Object[] { - new ParameterReference("m1"), - new ParameterReference("m2") - })); - addAnnotation(annotation); - } - return bodies; - } - } -} diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunVampireConfig.xtend b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunVampireConfig.xtend new file mode 100644 index 000000000..879abc336 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/run/RunVampireConfig.xtend @@ -0,0 +1,115 @@ +package run + +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigSpecification +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigurationScript +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.FileSpecification +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.GenerationTask +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntervallNumber +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ModelEntry +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectTypeScope +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelSpecification +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RuntimeEntry +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeSpecification +import hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor +import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import java.text.SimpleDateFormat +import java.util.Date +import org.apache.commons.cli.BasicParser +import org.apache.commons.cli.CommandLine +import org.apache.commons.cli.CommandLineParser +import org.apache.commons.cli.HelpFormatter +import org.apache.commons.cli.Option +import org.apache.commons.cli.Options +import org.apache.commons.cli.ParseException +import org.eclipse.core.runtime.NullProgressMonitor +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl + +class RunVampireConfig { + static var SIZE_LB = 10 + static var SIZE_UB = -1 + + static var RUNS = 3 + static var MODELS = 3 + static var RUNTIME = 300 + + static var DOMAIN = "Yakindu-Vampire" // "FamilyTree", "Satellite", "Taxation" + static val QUERIES = false + static val INITIAL = true + + def static void main(String[] args) { +// Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("xmi", new XMIResourceFactoryImpl) +// val workspace = new FileSystemWorkspace('''x/''', "") +// workspace.initAndClear + + // Workspace setup + val Date date = new Date(System.currentTimeMillis) + val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm") + val formattedDate = format.format(date) + + val executor = new ScriptExecutor + val path = "config//genericVampire.vsconfig" + var ConfigurationScript config = StandaloneScriptExecutor.loadScript(path) + + // ///////////////////////// + // BEGIN RUN + println( + "<>") + + var naming = "size" + toStr(SIZE_LB) + "to" + toStr(SIZE_UB) + "r" + RUNS + "n" + MODELS + "rt" + RUNTIME + val outputPath = "output-Vampire/" + naming + "_" + formattedDate + "/models" + val debugPath = "output-Vampire/" + naming + "_" + formattedDate + "/debug" + val logPath = debugPath + "/log.txt" + val statsPath = "output-Vampire/" + naming + "_" + formattedDate + "/stats.csv" + + // Basic Adjustments + val genTask = config.commands.get(0) as GenerationTask + if(!QUERIES) genTask.patterns = null + if(!INITIAL) genTask.partialModel = null + genTask.runs = RUNS + genTask.number = MODELS + + // Size + val scopeSpec = genTask.scope as ScopeSpecification + val objScope = scopeSpec.scopes.get(0) as ObjectTypeScope + val interval = objScope.number as IntervallNumber + interval.min = SIZE_LB + if (SIZE_UB == -1) + interval.maxUnlimited = true + else { + interval.maxUnlimited = false + interval.maxNumber = SIZE_UB + } + +// workspace.writeModel(config, '''x.xmi''') + // Runtime + val configScope = genTask.config as ConfigSpecification + val runtimeEntry = configScope.entries.get(0) as RuntimeEntry + runtimeEntry.millisecLimit = RUNTIME + + // Output locations + val debug = genTask.debugFolder as FileSpecification + debug.path = debugPath + val output = genTask.tagetFolder as FileSpecification + output.path = outputPath + val log = genTask.targetLogFile as FileSpecification + log.path = logPath + val stats = genTask.targetStatisticsFile as FileSpecification + stats.path = statsPath + + // Run Generator + println() + executor.executeScript(config, new NullProgressMonitor) + + println() + } + + static def String toStr(int i) { + var toAdd = "" + if(i < 100 && i != -1) toAdd = "0" + return toAdd + i + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath new file mode 100644 index 000000000..5d01c425d --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore new file mode 100644 index 000000000..245e4e4cc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.gitignore @@ -0,0 +1,4 @@ +/bin/ +/xtend-gen/* +/src-gen/* +/outputs/* \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project new file mode 100644 index 000000000..279c4d653 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.project @@ -0,0 +1,40 @@ + + + ca.mcgill.ecse.dslreasoner.standalone.test + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.viatra.query.tooling.ui.projectbuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.viatra.query.projectnature + org.eclipse.xtext.ui.shared.xtextNature + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.settings/org.eclipse.jdt.core.prefs b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF new file mode 100644 index 000000000..25c8cbb9c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/META-INF/MANIFEST.MF @@ -0,0 +1,34 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.standalone.test;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Export-Package: ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries, + ca.mcgill.ecse.dslreasoner.standalone.test.fam, + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl, + ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries, + ca.mcgill.ecse.dslreasoner.standalone.test.fam.util, + ca.mcgill.ecse.dslreasoner.standalone.test.filesystem, + ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl, + ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries, + ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.util, + ca.mcgill.ecse.dslreasoner.standalone.test.yakindu, + ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl, + ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries, + ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util +Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime, + org.eclipse.core.runtime;bundle-version="3.13.0", + org.eclipse.emf.ecore;bundle-version="2.13.0";visibility:=reexport, + org.eclipse.viatra.query.runtime;bundle-version="2.1.0", + org.eclipse.viatra.query.runtime.rete;bundle-version="2.1.0", + org.eclipse.viatra.query.runtime.localsearch;bundle-version="2.1.0", + org.eclipse.xtext.xbase.lib;bundle-version="2.12.0", + hu.bme.mit.inf.dslreasoner.application;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0" +Import-Package: org.apache.log4j +Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.standalone.test +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties new file mode 100644 index 000000000..e765de8de --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/build.properties @@ -0,0 +1,6 @@ +bin.includes = META-INF/,\ + +source.. = src/,\ + src-gen/,\ + queries/ +output.. = bin/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig new file mode 100644 index 000000000..7f9d9caf1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/ecore.vsconfig @@ -0,0 +1,34 @@ +import epackage "http://www.eclipse.org/emf/2002/Ecore" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.EcorePatterns" + +metamodel allSupported { package ecore excluding { + EClassifier.instanceClass,EClassifier.defaultValue,EEnumLiteral.instance,EStructuralFeature.defaultValue, + EJavaClass, EJavaObject, EJavaObject, + EPackage.eFactoryInstance, EFactory, EFactory.ePackage + } +} + +generate { + metamodel = allSupported + constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries} + partial-model = { "platform:/resource/Ecore-Plugin/InitialPackage.ecore" } + solver = ViatraSolver + scope = { + #node += 5, + #string += { "A", "B" }, + #int += {0,1,-1} + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 3 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/ecore/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig new file mode 100644 index 000000000..ca40f4870 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fam.vsconfig @@ -0,0 +1,25 @@ +import epackage "FamMetamodel" +//import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.FamPatterns" + +generate { + metamodel = { package fam } +// constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries} +// partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi"} + solver = ViatraSolver + scope = { + #node = 10 + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 5 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig new file mode 100644 index 000000000..ea95336b0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/fileSystem.vsconfig @@ -0,0 +1,25 @@ +import epackage "FileSystemMetamodel" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries.FileSystemPatterns" + +generate { + metamodel = { package filesystem } + constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries} + partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi"} + solver = ViatraSolver + scope = { + # node = 10 + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 5 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fileSystem/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig new file mode 100644 index 000000000..ff2038e04 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/configs/yakindu.vsconfig @@ -0,0 +1,25 @@ +import epackage "YakinduMetamodel" +import viatra "ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries.YakinduPatterns" + +generate { + metamodel = { package yakindu } + constraints = { package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries } + partial-model = { "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi"} + solver = ViatraSolver + scope = { + #node = 10 + } + + config = { + runtime = 10000, + log-level = normal + } + + number = 5 + runs = 1 + + debug = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug" + log = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt" + output = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models" + statistics = "platform:/resource/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv" +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi new file mode 100644 index 000000000..867e50495 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/ecoreInstance.xmi @@ -0,0 +1,6 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi new file mode 100644 index 000000000..1ae867824 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/famInstance.xmi @@ -0,0 +1,4 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi new file mode 100644 index 000000000..06d5d6d1a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/filesystemInstance.xmi @@ -0,0 +1,3 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi new file mode 100644 index 000000000..e5f1099ff --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/instanceModels/yakinduInstance.xmi @@ -0,0 +1,3 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.aird b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.aird new file mode 100644 index 000000000..75ed2fbb8 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.aird @@ -0,0 +1,633 @@ + + + + fam.ecore + fam.genmodel + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + bold + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelSize + bold + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + bold + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore new file mode 100644 index 000000000..d9c8bfef0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.ecore @@ -0,0 +1,68 @@ + + + +

+ + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel new file mode 100644 index 000000000..3d26d5c45 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/fam.genmodel @@ -0,0 +1,49 @@ + + + fam.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird new file mode 100644 index 000000000..50f2ba115 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.aird @@ -0,0 +1,379 @@ + + + + filesystem.ecore + filesystem.genmodel + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + labelSize + bold + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + labelSize + bold + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore new file mode 100644 index 000000000..8952cfb5e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.ecore @@ -0,0 +1,32 @@ + + + +
+ + + + + +
+ + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel new file mode 100644 index 000000000..712533fe7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/filesystem.genmodel @@ -0,0 +1,26 @@ + + + filesystem.ecore + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird new file mode 100644 index 000000000..518acc995 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.aird @@ -0,0 +1,713 @@ + + + + yakindu.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore new file mode 100644 index 000000000..f0bab2285 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.ecore @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel new file mode 100644 index 000000000..46801b3e3 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel @@ -0,0 +1,34 @@ + + + yakindu.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel_ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel_ new file mode 100644 index 000000000..b1f75d764 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/metamodels/yakindu.genmodel_ @@ -0,0 +1,34 @@ + + + yakindu.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt new file mode 100644 index 000000000..d66c8df1c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt @@ -0,0 +1,553 @@ +Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) + org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) + com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) + com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) + com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) + com.google.common.collect.Iterators.addAll(Iterators.java:366) + com.google.common.collect.Iterables.addAll(Iterables.java:332) + com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) + org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): + hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.Alloy2LogicMapper.transformOutput(Alloy2LogicMapper.java:53) + hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver.solve(AlloySolver.java:66) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:56) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) + org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) + com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) + com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) + com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) + com.google.common.collect.Iterators.addAll(Iterators.java:366) + com.google.common.collect.Iterables.addAll(Iterables.java:332) + com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) + org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) + org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) + com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) + com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) + com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) + com.google.common.collect.Iterators.addAll(Iterators.java:366) + com.google.common.collect.Iterables.addAll(Iterables.java:332) + com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) + org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59) + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57) + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type contains errors. + org.eclipse.viatra.query.runtime.matchers.util.Preconditions.checkState(Preconditions.java:144) + org.eclipse.viatra.query.patternlanguage.emf.specification.GenericEMFPatternPQuery.getDisjunctBodies(GenericEMFPatternPQuery.java:161) + org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PDisjunctionRewriter.rewrite(PDisjunctionRewriter.java:26) + hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Class FunctionalArchitectureModel is not translated to logic! + hu.bme.mit.inf.dslreasoner.ecore2logic.EClassMapper_AllElementAsObject.TypeofEClass(EClassMapper_AllElementAsObject.java:63) + hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic.TypeofEClass(Ecore2Logic.java:96) + hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation.transform(InstanceModel2PartialInterpretation.java:99) + hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic.transform(InstanceModel2Logic.java:19) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:192) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)Error occured (NoSuchElementException): Cannot find entry with FQN ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model + org.eclipse.viatra.query.runtime.registry.impl.GlobalRegistryView.getEntry(GlobalRegistryView.java:56) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.findQuerySpecification(QueryBasedFeatureSettingDelegateFactory.java:152) + org.eclipse.viatra.addon.querybasedfeatures.runtime.QueryBasedFeatureSettingDelegateFactory.createSettingDelegate(QueryBasedFeatureSettingDelegateFactory.java:113) + org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:854) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl.(FunctionalElementImpl.java:57) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl.(FunctionImpl.java:64) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.createFunction(famFactoryImpl.java:125) + ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.create(famFactoryImpl.java:68) + hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore.transformInterpretation(Logic2Ecore.java:75) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:359) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:60) \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated new file mode 100644 index 000000000..4ca1b4b08 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated @@ -0,0 +1,72641 @@ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ + private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) + { + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); + } +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ + private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) + { + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); + } +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries rootElements +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Root); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries parent +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Par); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries model +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( + problem:LogicProblem, interpretation:PartialInterpretation, + var_This, var_Target) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // This is exported + // Target is exported + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( + problem:LogicProblem, interpretation:PartialInterpretation, + var_This, var_Target) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // This is exported + // Target is exported + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( + problem:LogicProblem, interpretation:PartialInterpretation, + var_This, var_Target) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // This is exported + // Target is exported + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ + private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) + { + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); + } +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ + private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) + { + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model(problem,interpretation,source,target); + } +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries rootElements +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Root); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries parent +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Par); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries model +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( + problem:LogicProblem, interpretation:PartialInterpretation, + var_This, var_Target) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // This is exported + // Target is exported + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( + problem:LogicProblem, interpretation:PartialInterpretation, + var_This, var_Target) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // This is exported + // Target is exported + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_model( + problem:LogicProblem, interpretation:PartialInterpretation, + var_This, var_Target) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); + // This is exported + // Target is exported + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_This); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Target); +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries rootElements +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Root); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries parent +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Par); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class DefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class UndefinedPart"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries terminatorAndInformation +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mayInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_I); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mayInstanceOfInformationLink_class(problem,interpretation,var_I); + find mayInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_In); + find mayInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mayInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_T); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation( + problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,var_Out,var_virtual0); + find mustInstanceOfInformationLink_class(problem,interpretation,var_virtual0); + var_virtual0 == var_I; + find mustInstanceOfFunctionalOutput_class(problem,interpretation,var_Out); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_Out,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_T); + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + // T is exported + // I is exported + find mustInstanceOfInformationLink_class(problem,interpretation,var_I); + find mustInRelationto_reference_InformationLink(problem,interpretation,var_I,var_virtual0); + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_virtual0); + var_virtual0 == var_In; + find mustInstanceOfFunctionalInput_class(problem,interpretation,var_In); + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,var_In,var_virtual1); + find mustInstanceOfFAMTerminator_class(problem,interpretation,var_virtual1); + var_virtual1 == var_T; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries rootElements +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mayInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Root); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_rootElements( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Model, var_Root) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInstanceOfFunction_class(problem,interpretation,var_Root); + // Model is exported + // Root is exported + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,var_Model); + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,var_Model,var_virtual0); + find mustInstanceOfFunctionalElement_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Root; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test fam queries parent +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mayInstanceOfFunction_class(problem,interpretation,var_Func); + find mayInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mayInstanceOfFunction_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_Par); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_parent( + problem:LogicProblem, interpretation:PartialInterpretation, + var_Func, var_Par) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInstanceOfFunction_class(problem,interpretation,var_Par); + // Func is exported + // Par is exported + find mustInstanceOfFunction_class(problem,interpretation,var_Func); + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,var_Func,var_virtual0); + find mustInstanceOfFunction_class(problem,interpretation,var_virtual0); + var_virtual0 == var_Par; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem:LogicProblem, interpretation:PartialInterpretation, + var_T, var_I) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_fam_queries_terminatorAndInformation(problem,interpretation,var_T,var_I); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart"); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "FunctionalElement class". + */ +private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalElement class"); +} + +/** + * An element may be an instance of type "FunctionalElement class". + */ +private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalArchitectureModel class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalArchitectureModel class"); +} + +/** + * An element may be an instance of type "FunctionalArchitectureModel class". + */ +private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Function class". + */ +private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Function class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Function class"); +} + +/** + * An element may be an instance of type "Function class". + */ +private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunction_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunction_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FAMTerminator class". + */ +private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FAMTerminator class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FAMTerminator class"); +} + +/** + * An element may be an instance of type "FAMTerminator class". + */ +private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); } +/** + * An element must be an instance of type "InformationLink class". + */ +private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"InformationLink class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"InformationLink class"); +} + +/** + * An element may be an instance of type "InformationLink class". + */ +private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewInformationLink_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfInformationLink_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInterface class". + */ +private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInterface class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInterface class"); +} + +/** + * An element may be an instance of type "FunctionalInterface class". + */ +private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalInput class". + */ +private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalInput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalInput class"); +} + +/** + * An element may be an instance of type "FunctionalInput class". + */ +private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalOutput class". + */ +private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalOutput class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalOutput class"); +} + +/** + * An element may be an instance of type "FunctionalOutput class". + */ +private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionalData class". + */ +private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionalData class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionalData class"); +} + +/** + * An element may be an instance of type "FunctionalData class". + */ +private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find scopeDisallowsNewFunctionalData_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FunctionType enum". + */ +private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FunctionType enum"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FunctionType enum"); +} + +/** + * An element may be an instance of type "FunctionType enum". + */ +private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []model reference FunctionalElement(source,target) + */ +private pattern mustInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target) + */ +private pattern mayInRelationmodel_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target) + */ +private pattern mustInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target) + */ +private pattern mayInRelationparent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalElement_class(problem,interpretation,source); + find mayInstanceOfFunction_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target) + */ +private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []subElements reference Function(source,target) + */ +private pattern mustInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>subElements reference Function(source,target) + */ +private pattern mayInRelationsubElements_reference_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FAMTerminator(source,target) + */ +private pattern mustInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target) + */ +private pattern mayInRelationdata_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFAMTerminator_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []from reference InformationLink(source,target) + */ +private pattern mustInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>from reference InformationLink(source,target) + */ +private pattern mayInRelationfrom_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []to reference InformationLink(source,target) + */ +private pattern mustInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>to reference InformationLink(source,target) + */ +private pattern mayInRelationto_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfInformationLink_class(problem,interpretation,source); + find mayInstanceOfFunctionalInput_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationto_reference_InformationLink(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target) + */ +private pattern mustInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target) + */ +private pattern mayInRelationdata_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalData_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target) + */ +private pattern mustInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target) + */ +private pattern mayInRelationelement_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInterface_class(problem,interpretation,source); + find mayInstanceOfFunctionalElement_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mustInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target) + */ +private pattern mayInRelationIncomingLinks_reference_FunctionalInput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalInput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target) + */ +private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalOutput_class(problem,interpretation,source); + find mayInstanceOfInformationLink_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target) + */ +private pattern mustInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target) + */ +private pattern mayInRelationterminator_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFAMTerminator_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []interface reference FunctionalData(source,target) + */ +private pattern mustInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target) + */ +private pattern mayInRelationinterface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunctionalData_class(problem,interpretation,source); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []type attribute Function(source,target) + */ +private pattern mustInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>type attribute Function(source,target) + */ +private pattern mayInRelationtype_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfFunction_class(problem,interpretation,source); + find mayInstanceOfFunctionType_enum(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtype_attribute_Function(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or + + { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or + + { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or + + { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or + + { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or + + { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink"); + find mustInstanceOfInformationLink_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} +pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustInstanceOfFunction_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFAMTerminator_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunction_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfInformationLink_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFunctionalData_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface"); + find mustInstanceOfFunctionalElement_class(problem,interpretation,container); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInterface_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class"); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel"); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement"); + find mustInstanceOfFunction_class(problem,interpretation,container); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Function_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class"); + find mayInstanceOfFunction_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalOutput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class"); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator"); + find mustInstanceOfFunctionalData_class(problem,interpretation,container); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FAMTerminator_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class"); + find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink"); + find mustInstanceOfFunctionalOutput_class(problem,interpretation,container); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_InformationLink_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class"); + find mayInstanceOfInformationLink_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData"); + find mustInstanceOfFunctionalInterface_class(problem,interpretation,container); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalInput_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class"); + find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FunctionalArchitectureModel_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class"); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunction_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} +pattern refineTypeTo_FunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); + neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalData_class(problem,interpretation,element); + neg find mustInstanceOfInformationLink_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element); + neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_model_reference_FunctionalElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalElement_class(problem,interpretation,from); + find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to); + find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); + neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to); +} +pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunctionalInput_class(problem,interpretation,from); + find mustInstanceOfInformationLink_class(problem,interpretation,to); + find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); + neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to); +} +pattern refineRelation_type_attribute_Function( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfFunction_class(problem,interpretation,from); + find mustInstanceOfFunctionType_enum(problem,interpretation,to); + find mayInRelationtype_attribute_Function(problem,interpretation,from,to); + neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to); +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem new file mode 100644 index 000000000..296c3a70c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem @@ -0,0 +1,580 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel new file mode 100644 index 000000000..55020b902 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/init.partialmodel @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als new file mode 100644 index 000000000..716e4f333 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als @@ -0,0 +1,195 @@ +one sig util'language { + util'root : one type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))), + util'contains : (type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) lone->set (type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) +} +abstract sig util'Object { +} +sig type'FunctionalElement'class in util'Object { + interface'reference'FunctionalElement : lone type'FunctionalInterface'class, + parent'reference'FunctionalElement : lone type'Function'class +} +sig type'FunctionalArchitectureModel'class in util'Object { + rootElements'reference'FunctionalArchitectureModel : set type'FunctionalElement'class +} +sig type'Function'class in type'FunctionalElement'class { + subElements'reference'Function : set type'FunctionalElement'class, + type'attribute'Function : one type'FunctionType'enum +} +sig type'FAMTerminator'class in util'Object { + data'reference'FAMTerminator : lone type'FunctionalData'class +} +sig type'InformationLink'class in util'Object { + from'reference'InformationLink : lone type'FunctionalOutput'class, + to'reference'InformationLink : one type'FunctionalInput'class +} +sig type'FunctionalInterface'class in util'Object { + data'reference'FunctionalInterface : set type'FunctionalData'class, + element'reference'FunctionalInterface : lone type'FunctionalElement'class +} +sig type'FunctionalInput'class in type'FunctionalData'class { + IncomingLinks'reference'FunctionalInput : set type'InformationLink'class +} +sig type'FunctionalOutput'class in type'FunctionalData'class { + outgoingLinks'reference'FunctionalOutput : set type'InformationLink'class +} +sig type'FunctionalData'class in util'Object { + terminator'reference'FunctionalData : lone type'FAMTerminator'class, + interface'reference'FunctionalData : lone type'FunctionalInterface'class +} +sig type'FunctionType'enum in util'Object { +} +sig type'FunctionalArchitectureModel'class'DefinedPart in type'FunctionalArchitectureModel'class { +} +sig type'FunctionalArchitectureModel'class'UndefinedPart in type'FunctionalArchitectureModel'class { +} +one sig element'Root'literal'FunctionType, +element'Intermediate'literal'FunctionType, +element'Leaf'literal'FunctionType in type'FunctionType'enum { +} +one sig element'o'1 in type'FunctionalArchitectureModel'class'DefinedPart { +} +pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [parameter'T: type'FAMTerminator'class, parameter'I: type'InformationLink'class] { + (some variable'Out: type'FunctionalOutput'class { parameter'I in variable'Out.outgoingLinks'reference'FunctionalOutput && parameter'T in variable'Out.terminator'reference'FunctionalData }) or (some variable'In: type'FunctionalInput'class { variable'In in parameter'I.to'reference'InformationLink && (variable'In in type'FunctionalInput'class && parameter'T in variable'In.terminator'reference'FunctionalData) }) +} +pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [parameter'Model: type'FunctionalArchitectureModel'class, parameter'Root: type'Function'class] { + parameter'Root in type'Function'class && parameter'Root in parameter'Model.rootElements'reference'FunctionalArchitectureModel +} +pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [parameter'Func: type'Function'class, parameter'Par: type'Function'class] { + parameter'Func in type'Function'class && (parameter'Par in parameter'Func.parent'reference'FunctionalElement && parameter'Par in type'Function'class) +} +pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [parameter'This: type'FunctionalElement'class, parameter'Target: type'FunctionalArchitectureModel'class] { + parameter'This in type'FunctionalElement'class && parameter'Target in type'FunctionalArchitectureModel'class +} +fact typedefinition'FunctionType'enum { + type'FunctionType'enum = element'Root'literal'FunctionType + (element'Intermediate'literal'FunctionType + element'Leaf'literal'FunctionType) +} +fact typedefinition'FunctionalArchitectureModel'class'DefinedPart { + type'FunctionalArchitectureModel'class'DefinedPart = element'o'1 +} +fact typeElementsUnique'FunctionType'enum { + element'Root'literal'FunctionType != element'Intermediate'literal'FunctionType && (element'Root'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Root'literal'FunctionType != element'o'1 && (element'Intermediate'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Intermediate'literal'FunctionType != element'o'1 && element'Leaf'literal'FunctionType != element'o'1)))) +} +fact typeElementsUnique'FunctionalArchitectureModel'class'DefinedPart { + element'Root'literal'FunctionType != element'Intermediate'literal'FunctionType && (element'Root'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Root'literal'FunctionType != element'o'1 && (element'Intermediate'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Intermediate'literal'FunctionType != element'o'1 && element'Leaf'literal'FunctionType != element'o'1)))) +} +fact abstract'FunctionalElement'class { + type'FunctionalElement'class = type'Function'class +} +fact abstract'FunctionalArchitectureModel'class { + type'FunctionalArchitectureModel'class = type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart +} +fact abstract'FunctionalData'class { + type'FunctionalData'class = type'FunctionalInput'class + type'FunctionalOutput'class +} +fact ObjectTypeDefinition { + util'Object = type'FunctionalElement'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalData'class + type'FunctionType'enum))))) +} +fact common'types'FunctionalArchitectureModel'class'FunctionalElement'class { + type'FunctionalArchitectureModel'class & type'FunctionalElement'class = none +} +fact common'types'FAMTerminator'class'FunctionalElement'class { + type'FAMTerminator'class & type'FunctionalElement'class = none +} +fact common'types'FAMTerminator'class'FunctionalArchitectureModel'class { + type'FAMTerminator'class & type'FunctionalArchitectureModel'class = none +} +fact common'types'InformationLink'class'FunctionalElement'class { + type'InformationLink'class & type'FunctionalElement'class = none +} +fact common'types'InformationLink'class'FunctionalArchitectureModel'class { + type'InformationLink'class & type'FunctionalArchitectureModel'class = none +} +fact common'types'InformationLink'class'FAMTerminator'class { + type'InformationLink'class & type'FAMTerminator'class = none +} +fact common'types'FunctionalInterface'class'FunctionalElement'class { + type'FunctionalInterface'class & type'FunctionalElement'class = none +} +fact common'types'FunctionalInterface'class'FunctionalArchitectureModel'class { + type'FunctionalInterface'class & type'FunctionalArchitectureModel'class = none +} +fact common'types'FunctionalInterface'class'FAMTerminator'class { + type'FunctionalInterface'class & type'FAMTerminator'class = none +} +fact common'types'FunctionalInterface'class'InformationLink'class { + type'FunctionalInterface'class & type'InformationLink'class = none +} +fact common'types'FunctionalData'class'FunctionalElement'class { + type'FunctionalData'class & type'FunctionalElement'class = none +} +fact common'types'FunctionalData'class'FunctionalArchitectureModel'class { + type'FunctionalData'class & type'FunctionalArchitectureModel'class = none +} +fact common'types'FunctionalData'class'FAMTerminator'class { + type'FunctionalData'class & type'FAMTerminator'class = none +} +fact common'types'FunctionalData'class'InformationLink'class { + type'FunctionalData'class & type'InformationLink'class = none +} +fact common'types'FunctionalData'class'FunctionalInterface'class { + type'FunctionalData'class & type'FunctionalInterface'class = none +} +fact common'types'FunctionType'enum'FunctionalElement'class { + type'FunctionType'enum & type'FunctionalElement'class = none +} +fact common'types'FunctionType'enum'FunctionalArchitectureModel'class { + type'FunctionType'enum & type'FunctionalArchitectureModel'class = none +} +fact common'types'FunctionType'enum'FAMTerminator'class { + type'FunctionType'enum & type'FAMTerminator'class = none +} +fact common'types'FunctionType'enum'InformationLink'class { + type'FunctionType'enum & type'InformationLink'class = none +} +fact common'types'FunctionType'enum'FunctionalInterface'class { + type'FunctionType'enum & type'FunctionalInterface'class = none +} +fact common'types'FunctionType'enum'FunctionalData'class { + type'FunctionType'enum & type'FunctionalData'class = none +} +fact common'types'FunctionalArchitectureModel'class'UndefinedPart'FunctionalArchitectureModel'class'DefinedPart { + type'FunctionalArchitectureModel'class'UndefinedPart & type'FunctionalArchitectureModel'class'DefinedPart = none +} +fact common'types'FunctionalOutput'class'FunctionalInput'class { + type'FunctionalOutput'class & type'FunctionalInput'class = none +} +fact util'containmentDefinition { + util'language.util'contains = interface'reference'FunctionalElement + (rootElements'reference'FunctionalArchitectureModel + (subElements'reference'Function + (data'reference'FunctionalInterface + (outgoingLinks'reference'FunctionalOutput + terminator'reference'FunctionalData)))) +} +fact util'noParentForRoot { + no parent: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->(util'language.util'root) in util'language.util'contains } +} +fact util'atLeastOneParent { + all child: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { child = util'language.util'root or (some parent: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->child in util'language.util'contains }) } +} +fact util'noCircularContainment { + no circle: type'InformationLink'class + (type'FunctionalOutput'class + (type'FunctionalInput'class + (type'FunctionalData'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'Function'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { circle->circle in ^ (util'language.util'contains) } +} +fact lowerMultiplicity'model'FunctionalElement { + all src: type'FunctionalElement'class { some trg'1: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] } } +} +fact upperMultiplicity'model'FunctionalElement { + all src: type'FunctionalElement'class, trg'1: type'FunctionalArchitectureModel'class, trg'2: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'2 ] implies ! (trg'1 != trg'2) } +} +fact oppositeReference'interface'FunctionalElement { + interface'reference'FunctionalElement = ~ element'reference'FunctionalInterface +} +fact oppositeReference'parent'FunctionalElement { + parent'reference'FunctionalElement = ~ subElements'reference'Function +} +fact oppositeReference'data'FAMTerminator { + data'reference'FAMTerminator = ~ terminator'reference'FunctionalData +} +fact oppositeReference'from'InformationLink { + from'reference'InformationLink = ~ outgoingLinks'reference'FunctionalOutput +} +fact oppositeReference'to'InformationLink { + to'reference'InformationLink = ~ IncomingLinks'reference'FunctionalInput +} +fact oppositeReference'data'FunctionalInterface { + data'reference'FunctionalInterface = ~ interface'reference'FunctionalData +} +fact errorpattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation { + all p0: type'FAMTerminator'class, p1: type'InformationLink'class { ! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [ p0 , p1 ]) } +} +run { } for exactly 10 util'Object , 31 Int , exactly 0 String \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt new file mode 100644 index 000000000..c7112d9d3 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt @@ -0,0 +1 @@ +Model generation startedModel generation startedModel generation startedModel generation startedProblem is consistent, 5 models are generated!Model generation startedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedModel generation startedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Model generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finished \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml new file mode 100644 index 000000000..a40633d7f --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml @@ -0,0 +1,15127 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png new file mode 100644 index 000000000..a5fb7f026 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi new file mode 100644 index 000000000..ec5dbad13 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml new file mode 100644 index 000000000..e581a1a4c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml @@ -0,0 +1,14207 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png new file mode 100644 index 000000000..25c578dfc Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi new file mode 100644 index 000000000..16f82b48a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml new file mode 100644 index 000000000..9ae401737 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml @@ -0,0 +1,14131 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png new file mode 100644 index 000000000..61e377192 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi new file mode 100644 index 000000000..fbbc6cb43 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml new file mode 100644 index 000000000..8b6731b79 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml @@ -0,0 +1,14268 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png new file mode 100644 index 000000000..b63f378cd Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi new file mode 100644 index 000000000..950fe6a21 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml new file mode 100644 index 000000000..a31b5aea4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml @@ -0,0 +1,14380 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "parent reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "subElements reference Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 269.5 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 361.90000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalArchitectureModel class DefinedPart + FunctionalArchitectureModel class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 192.50000000000003 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalElement class + Function class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 3 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "model reference FunctionalElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "rootElements reference FunctionalArchitectureModel" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "element reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 0 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 2 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "type attribute Function" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 177.10000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + InformationLink class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "from reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "to reference InformationLink" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "IncomingLinks reference FunctionalInput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingLinks reference FunctionalOutput" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Root literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 297.0 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Intermediate literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Leaf literal FunctionType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 207.9 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInterface class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 177.10000000000002 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalInput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 184.8 + h 54 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FunctionalOutput class + FunctionalData class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 161.70000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + FAMTerminator class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FAMTerminator" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "data reference FunctionalInterface" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "terminator reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "interface reference FunctionalData" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png new file mode 100644 index 000000000..c45fa07b8 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi new file mode 100644 index 000000000..777693ab2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv new file mode 100644 index 000000000..71fff7c5f --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv @@ -0,0 +1,34 @@ +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;2;1459;1800;9941267600;254;383;414;441;477;249;6;14;0;5 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;0;1095;1138;10430069000;47;67;101;104;168;77;5;3;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;971;1320;9287027600;59;82;103;298;350;265;7;2;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;945;1239;9183595100;65;83;102;132;150;81;6;2;0;2 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;934;1758;9668065700;313;387;426;505;625;353;7;8;0;2 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;952;1268;9015161500;79;135;155;174;233;121;6;3;0;2 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;966;1534;9401550800;104;179;199;336;375;186;7;5;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;1027;1635;8949130900;249;277;316;417;444;258;5;5;0;4 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1;928;1173;8877697600;49;109;128;149;167;83;5;2;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;2;1070;1291;9164916500;97;114;167;249;276;120;8;3;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;2;1595;1756;13001782700;63;89;115;147;177;94;13;3;0;5 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;189;2560;2666;10577938300;240;291;346;491;534;277;137;14;0;10 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;16;1673;1881;10488189500;142;240;275;311;375;191;21;7;0;5 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;47;1835;2309;9517642900;281;405;544;574;580;325;17;13;0;6 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;1139;4621;3347;14457060200;924;988;1031;1071;1121;689;564;74;0;9 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;4;2111;1772;15065362500;113;152;185;238;303;159;18;7;0;5 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;3;1388;1240;8813500300;67;71;96;122;145;86;7;3;0;3 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt new file mode 100644 index 000000000..187ae1acc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/errors.txt @@ -0,0 +1,37 @@ +Error occured (NullPointerException): + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) + org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) + com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) + com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) + com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) + com.google.common.collect.Iterators.addAll(Iterators.java:366) + com.google.common.collect.Iterables.addAll(Iterables.java:332) + com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) + org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException): + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108) + org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41) + com.google.common.collect.Iterators$6.computeNext(Iterators.java:617) + com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) + com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) + com.google.common.collect.Iterators.addAll(Iterators.java:366) + com.google.common.collect.Iterables.addAll(Iterables.java:332) + com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383) + org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213) + hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) + org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated new file mode 100644 index 000000000..f2e524abc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generated3valued.vql_deactivated @@ -0,0 +1,29250 @@ +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} +import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" +import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" + +////////// +// 0. Util +////////// +private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { + PartialInterpretation.problem(interpretation,problem); +} + +///////////////////////// +// 0.1 Existence +///////////////////////// +private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find interpretation(problem,interpretation); + LogicProblem.elements(problem,element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); +} + +private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + find mustExist(problem,interpretation,element); +} or { + find interpretation(problem,interpretation); + neg find elementCloseWorld(element); + PartialInterpretation.openWorldElements(interpretation,element); +} + +private pattern elementCloseWorld(element:DefinedElement) { + PartialInterpretation.openWorldElements(i,element); + PartialInterpretation.maxNewElements(i,0); +} or { + Scope.targetTypeInterpretation(scope,interpretation); + PartialTypeInterpratation.elements(interpretation,element); + Scope.maxNewElements(scope,0); +} + +//////////////////////// +// 0.2 Equivalence +//////////////////////// +pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { + find mayExist(problem,interpretation,a); + find mayExist(problem,interpretation,b); + a == b; +} + +//////////////////////// +// 0.3 Required Patterns by TypeIndexer +//////////////////////// +private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); +} + +private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { + find interpretation(problem,interpretation); + LogicProblem.types(problem,type); + TypeDefinition.elements(type,element); +} or { + find interpretation(problem,interpretation); + find typeInterpretation(problem,interpretation,type,typeInterpretation); + PartialComplexTypeInterpretation.elements(typeInterpretation,element); +} + +private pattern isPrimitive(element: PrimitiveElement) { + PrimitiveElement(element); +} + +////////// +// 1. Problem-Specific Base Indexers +////////// +// 1.1 Type Indexers +////////// +// 1.1.1 primitive Type Indexers +////////// + +////////// +// 1.1.2 domain-specific Type Indexers +////////// +/** + * An element must be an instance of type "Pseudostate class". + */ +private pattern mustInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Pseudostate class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Pseudostate class"); +} + +/** + * An element may be an instance of type "Pseudostate class". + */ +private pattern mayInstanceOfPseudostate_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewPseudostate_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfPseudostate_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Vertex class". + */ +private pattern mustInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Vertex class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewVertex_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Vertex class"); +} + +/** + * An element may be an instance of type "Vertex class". + */ +private pattern mayInstanceOfVertex_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find scopeDisallowsNewVertex_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfVertex_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Region class". + */ +private pattern mustInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Region class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegion_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Region class"); +} + +/** + * An element may be an instance of type "Region class". + */ +private pattern mayInstanceOfRegion_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewRegion_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegion_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Transition class". + */ +private pattern mustInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Transition class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewTransition_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Transition class"); +} + +/** + * An element may be an instance of type "Transition class". + */ +private pattern mayInstanceOfTransition_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewTransition_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfTransition_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class". + */ +private pattern mustInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class"); +} + +/** + * An element may be an instance of type "Statechart class". + */ +private pattern mayInstanceOfStatechart_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Entry class". + */ +private pattern mustInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Entry class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Entry class"); +} + +/** + * An element may be an instance of type "Entry class". + */ +private pattern mayInstanceOfEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewEntry_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfEntry_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Synchronization class". + */ +private pattern mustInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Synchronization class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Synchronization class"); +} + +/** + * An element may be an instance of type "Synchronization class". + */ +private pattern mayInstanceOfSynchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewSynchronization_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfSynchronization_class(problem,interpretation,element); } +/** + * An element must be an instance of type "State class". + */ +private pattern mustInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"State class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"State class"); +} + +/** + * An element may be an instance of type "State class". + */ +private pattern mayInstanceOfState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "RegularState class". + */ +private pattern mustInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"RegularState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"RegularState class"); +} + +/** + * An element may be an instance of type "RegularState class". + */ +private pattern mayInstanceOfRegularState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); + neg find scopeDisallowsNewRegularState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfRegularState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class". + */ +private pattern mustInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class"); +} + +/** + * An element may be an instance of type "CompositeElement class". + */ +private pattern mayInstanceOfCompositeElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Choice class". + */ +private pattern mustInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Choice class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewChoice_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Choice class"); +} + +/** + * An element may be an instance of type "Choice class". + */ +private pattern mayInstanceOfChoice_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); + neg find scopeDisallowsNewChoice_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfChoice_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Exit class". + */ +private pattern mustInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Exit class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewExit_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Exit class"); +} + +/** + * An element may be an instance of type "Exit class". + */ +private pattern mayInstanceOfExit_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find scopeDisallowsNewExit_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfExit_class(problem,interpretation,element); } +/** + * An element must be an instance of type "FinalState class". + */ +private pattern mustInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"FinalState class"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"FinalState class"); +} + +/** + * An element may be an instance of type "FinalState class". + */ +private pattern mayInstanceOfFinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find scopeDisallowsNewFinalState_class(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfFinalState_class(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class DefinedPart". + */ +private pattern mustInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class DefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class DefinedPart". + */ +private pattern mayInstanceOfStatechart_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "Statechart class UndefinedPart". + */ +private pattern mustInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"Statechart class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"Statechart class UndefinedPart"); +} + +/** + * An element may be an instance of type "Statechart class UndefinedPart". + */ +private pattern mayInstanceOfStatechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewStatechart_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class DefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class DefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class DefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,element); } +/** + * An element must be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mustInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { + Type.name(type,"CompositeElement class UndefinedPart"); + find directInstanceOf(problem,interpretation,element,type); +} +private pattern scopeDisallowsNewCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { + find interpretation(problem,interpretation); + PartialInterpretation.scopes(interpretation,scope); + Scope.targetTypeInterpretation(scope,typeInterpretation); + Scope.maxNewElements(scope,0); + PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); + Type.name(type,"CompositeElement class UndefinedPart"); +} + +/** + * An element may be an instance of type "CompositeElement class UndefinedPart". + */ +private pattern mayInstanceOfCompositeElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or { + find interpretation(problem,interpretation); + PartialInterpretation.openWorldElements(interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find scopeDisallowsNewCompositeElement_class_UndefinedPart(problem, interpretation); + neg find isPrimitive(element); +} or +{ find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,element); } + +////////// +// 1.2 Relation Declaration Indexers +////////// +/** + * Matcher for detecting tuples t where []incomingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>incomingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationincomingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); +} or { + find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []outgoingTransitions reference Vertex(source,target) + */ +private pattern mustInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingTransitions reference Vertex"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>outgoingTransitions reference Vertex(source,target) + */ +private pattern mayInRelationoutgoingTransitions_reference_Vertex( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfVertex_class(problem,interpretation,source); + find mayInstanceOfTransition_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference to the target, + // the upper bound of the opposite reference multiplicity should be considered. + numberOfExistingOppositeReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,target,_); + check(numberOfExistingOppositeReferences < 1); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []vertices reference Region(source,target) + */ +private pattern mustInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"vertices reference Region"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>vertices reference Region(source,target) + */ +private pattern mayInRelationvertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfRegion_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationvertices_reference_Region(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []target reference Transition(source,target) + */ +private pattern mustInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>target reference Transition(source,target) + */ +private pattern mayInRelationtarget_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); +} or { + find mustInRelationtarget_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []source reference Transition(source,target) + */ +private pattern mustInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source reference Transition"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>source reference Transition(source,target) + */ +private pattern mayInRelationsource_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfTransition_class(problem,interpretation,source); + find mayInstanceOfVertex_class(problem,interpretation,target); + // There are "numberOfExistingReferences" currently existing instances of the reference from the source, + // the upper bound of the multiplicity should be considered. + numberOfExistingReferences == count find mustInRelationsource_reference_Transition(problem,interpretation,source,_); + check(numberOfExistingReferences < 1); + // The eOpposite of the reference is containment, then a referene cannot be created if + // 1. Multiple parents + neg find mustContains4(problem,interpretation,source,_); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationsource_reference_Transition(problem,interpretation,source,target); +} +/** + * Matcher for detecting tuples t where []regions reference CompositeElement(source,target) + */ +private pattern mustInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"regions reference CompositeElement"); + PartialRelationInterpretation.relationlinks(relationIterpretation,link); + BinaryElementRelationLink.param1(link,source); + BinaryElementRelationLink.param2(link,target); +} +/** + * Matcher for detecting tuples t where <>regions reference CompositeElement(source,target) + */ +private pattern mayInRelationregions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target:DefinedElement) +{ + find interpretation(problem,interpretation); + // The two endpoint of the link have to exist + find mayExist(problem, interpretation, source); + find mayExist(problem, interpretation, target); + // Type consistency + find mayInstanceOfCompositeElement_class(problem,interpretation,source); + find mayInstanceOfRegion_class(problem,interpretation,target); + // The reference is containment, then a new reference cannot be create if: + // 1. Multiple parents + neg find mustContains4(problem,interpretation,_,target); + // 2. Circle in the containment hierarchy + neg find mustTransitiveContains(source,target); +} or { + find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); +} + +////////// +// 1.3 Relation Definition Indexers +////////// +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries entryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_e1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1, var_e1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInstanceOfEntry_class(problem,interpretation,var_e1); + // r1 is exported + // e1 is exported + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_e1; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r1); + // r1 is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r1,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleEntryInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + neg find mayEquivalent(problem, interpretation, var_e1, var_e2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + // r is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_entryInRegion(problem,interpretation,var_r,var_e2); + var_e1 != var_e2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries transition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfVertex_class(problem,interpretation,var_src); + find mayInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_src); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_trg); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_src, var_trg) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfVertex_class(problem,interpretation,var_src); + find mustInstanceOfVertex_class(problem,interpretation,var_trg); + // t is exported + // src is exported + // trg is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_src; + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_trg; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries incomingToEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // t is exported + // e is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t,_var__0,var_e); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noOutgoingTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + // e is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_e,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries multipleTransitionFromEntry +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t1); + find mayInstanceOfEntry_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_t2); + var_t1 != var_t2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry( + problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + // e is exported + // t1 is exported + // t2 is exported + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t1; + find mustInstanceOfEntry_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual1); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual1); + var_virtual1 == var_t2; + var_t1 != var_t2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromExit +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mayInstanceOfExit_class(problem,interpretation,var_e); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfExit_class(problem,interpretation,var_e); + // t is exported + // e is exported + find mustInstanceOfExit_class(problem,interpretation,var_e); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_e,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries outgoingFromFinal +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mayInstanceOfTransition_class(problem,interpretation,var_t); + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mayInstanceOfFinalState_class(problem,interpretation,var_f); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mayInstanceOfTransition_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_t); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal( + problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,var_t); + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + // t is exported + // f is exported + find mustInstanceOfFinalState_class(problem,interpretation,var_f); + find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,var_f,var_virtual0); + find mustInstanceOfTransition_class(problem,interpretation,var_virtual0); + var_virtual0 == var_t; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries noStateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + // region is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion(problem,interpretation,var_region,_var__0); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries StateInRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mayInstanceOfRegion_class(problem,interpretation,var_region); + find mayInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_state); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_StateInRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_region, var_state) +{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInstanceOfState_class(problem,interpretation,var_state); + // region is exported + // state is exported + find mustInstanceOfRegion_class(problem,interpretation,var_region); + find mustInRelationvertices_reference_Region(problem,interpretation,var_region,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_state; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_c,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries choiceHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mayInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,var_c); + // c is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoOutgoing +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,_var__1); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchHasNoIncoming +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,_var__1,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedIncomingInSameRegion +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_v1); + find mayInstanceOfRegion_class(problem,interpretation,var_r); + find mayInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v2); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_v2,var_s); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t1,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,var_t2,var_s,var_v2); + var_t1 != var_t2; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_v1; + find mustInstanceOfRegion_class(problem,interpretation,var_r); + find mustInRelationvertices_reference_Region(problem,interpretation,var_r,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries notSynchronizingStates +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition(problem,interpretation,var_s); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition(problem,interpretation,var_s); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleOutgoingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + neg find mayEquivalent(problem, interpretation, var_trg1, var_trg2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleOutgoingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_trg1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v,var_trg2); + var_trg1 != var_trg2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleIncomingTrainsition +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + neg find mayEquivalent(problem, interpretation, var_src1, var_src2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleIncomingTrainsition( + problem:LogicProblem, interpretation:PartialInterpretation, + var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_v); + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_src1,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_src2,var_v); + var_src1 != var_src2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionsAreNotSiblings +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + neg find mayEquivalent(problem, interpretation, var_r1, var_r2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v1); + find mayInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_v1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual3); + find mayEquivalent(problem, interpretation, var_virtual3, var_v2); + var_r1 != var_r2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v1,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_v2,var_s); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v1); + find mustInstanceOfVertex_class(problem,interpretation,var_v2); + // s is exported + // v1 is exported + // v2 is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v1); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__1,var_s,var_v2); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r1); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r1,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_v1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_r2); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_r2,var_virtual2); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual2); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual2,var_virtual3); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual3); + var_virtual3 == var_v2; + var_r1 != var_r2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries child +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_child); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child( + problem:LogicProblem, interpretation:PartialInterpretation, + var_parent, var_child) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInstanceOfVertex_class(problem,interpretation,var_child); + // parent is exported + // child is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_parent); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_parent,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mustInRelationvertices_reference_Region(problem,interpretation,var_virtual0,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_child; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries SynchronizedRegionDoesNotHaveMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + find mayInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_v,var_s); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + find mustInstanceOfVertex_class(problem,interpretation,var_v); + // s is exported + // v is exported + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_transition(problem,interpretation,_var__0,var_s,var_v); + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_child(problem,interpretation,var_c,var_v); + neg find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions(problem,interpretation,var_c); +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries hasMultipleRegions +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + neg find mayEquivalent(problem, interpretation, var_region1, var_region2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_region1); + find mayInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mayInstanceOfRegion_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_region2); + var_region1 != var_region2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_hasMultipleRegions( + problem:LogicProblem, interpretation:PartialInterpretation, + var_composite) +{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + // composite is exported + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual0); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual0); + var_virtual0 == var_region1; + find mustInstanceOfCompositeElement_class(problem,interpretation,var_composite); + find mustInRelationregions_reference_CompositeElement(problem,interpretation,var_composite,var_virtual1); + find mustInstanceOfRegion_class(problem,interpretation,var_virtual1); + var_virtual1 == var_region2; + var_region1 != var_region2; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries synchThree +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + neg find mayEquivalent(problem, interpretation, var_t1, var_t2); + neg find mayEquivalent(problem, interpretation, var_t2, var_t3); + neg find mayEquivalent(problem, interpretation, var_t1, var_t3); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mayInstanceOfTransition_class(problem,interpretation,var_t1); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual0); + find mayEquivalent(problem, interpretation, var_virtual0, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t2); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual1); + find mayEquivalent(problem, interpretation, var_virtual1, var_s); + find mayInstanceOfTransition_class(problem,interpretation,var_t3); + find mayInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mayInstanceOfVertex_class(problem,interpretation,var_virtual2); + find mayEquivalent(problem, interpretation, var_virtual2, var_s); + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationtarget_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s); + // s is exported + find mustInstanceOfTransition_class(problem,interpretation,var_t1); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t1,var_virtual0); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual0); + var_virtual0 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t2); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t2,var_virtual1); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual1); + var_virtual1 == var_s; + find mustInstanceOfTransition_class(problem,interpretation,var_t3); + find mustInRelationsource_reference_Transition(problem,interpretation,var_t3,var_virtual2); + find mustInstanceOfVertex_class(problem,interpretation,var_virtual2); + var_virtual2 == var_s; + var_t1 != var_t2; + var_t2 != var_t3; + var_t1 != var_t3; +} +// Must, May and Current queries for pattern ca mcgill ecse dslreasoner standalone test yakindu queries twoSynch +private pattern mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + neg find mayEquivalent(problem, interpretation, var_s1, var_s2); +} +private pattern mayInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mayInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mayInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} +private pattern currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch( + problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + // s1 is exported + // s2 is exported + find mustInstanceOfSynchronization_class(problem,interpretation,var_s1); + find mustInstanceOfSynchronization_class(problem,interpretation,var_s2); + var_s1 != var_s2; +} + +////////// +// 1.4 Containment Indexer +////////// +private pattern mustContains2(source: DefinedElement, target: DefinedElement) { + find mustContains4(_,_,source,target); +} + +private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, + source: DefinedElement, target: DefinedElement) + { find mustInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,source,target); }or + + { find mustInRelationvertices_reference_Region(problem,interpretation,source,target); }or + + { find mustInRelationregions_reference_CompositeElement(problem,interpretation,source,target); } + +private pattern mustTransitiveContains(source,target) { + find mustContains2+(source,target); +} + +////////// +// 2. Invalidation Indexers +////////// +// 2.1 Invalidated by WF Queries +////////// +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern invalidatedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find mustInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 3. Unfinishedness Indexers +////////// +// 3.1 Unfinishedness Measured by Multiplicity +////////// +pattern unfinishedLowerMultiplicity_target_reference_Transition(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference Transition"); + find mustInstanceOfTransition_class(problem,interpretation,object); + numberOfExistingReferences == count find mustInRelationtarget_reference_Transition(problem,interpretation,object,_); + check(numberOfExistingReferences < 1); + missingMultiplicity == eval(1-numberOfExistingReferences); +} + +////////// +// 3.2 Unfinishedness Measured by WF Queries +////////// +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r1) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noEntryInRegion(problem,interpretation,var_r1); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_r) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleEntryInRegion(problem,interpretation,var_r); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_incomingToEntry(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noOutgoingTransitionFromEntry(problem,interpretation,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem:LogicProblem, interpretation:PartialInterpretation, + var_e, var_t1, var_t2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_multipleTransitionFromEntry(problem,interpretation,var_e,var_t1,var_t2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_e) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromExit(problem,interpretation,var_t,var_e); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem:LogicProblem, interpretation:PartialInterpretation, + var_t, var_f) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_outgoingFromFinal(problem,interpretation,var_t,var_f); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_region) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_noStateInRegion(problem,interpretation,var_region); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoOutgoing(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_c) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_choiceHasNoIncoming(problem,interpretation,var_c); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoOutgoing(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchHasNoIncoming(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedIncomingInSameRegion(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_notSynchronizingStates(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v1, var_v2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionsAreNotSiblings(problem,interpretation,var_s,var_v1,var_v2); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem:LogicProblem, interpretation:PartialInterpretation, + var_s, var_v) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_SynchronizedRegionDoesNotHaveMultipleRegions(problem,interpretation,var_s,var_v); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem:LogicProblem, interpretation:PartialInterpretation, + var_s) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_synchThree(problem,interpretation,var_s); +} +pattern unfinishedBy_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem:LogicProblem, interpretation:PartialInterpretation, + var_s1, var_s2) +{ + find currentInRelation_pattern_ca_mcgill_ecse_dslreasoner_standalone_test_yakindu_queries_twoSynch(problem,interpretation,var_s1,var_s2); +} + +////////// +// 4. Refinement Indexers +////////// +// 4.1 Object constructors +////////// +private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) +{ + find interpretation(problem,interpretation); + find mustInstanceOfState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegion_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfSynchronization_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfChoice_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfVertex_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfRegularState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfEntry_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfPseudostate_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfFinalState_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfExit_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfTransition_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_DefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +}or{ + find interpretation(problem,interpretation); + find mustInstanceOfCompositeElement_class_UndefinedPart(problem,interpretation,root); + find mustExist(problem, interpretation, root); +} +pattern createObject_Transition_class_by_outgoingTransitions_reference_Vertex_with_source_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation); + PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"source reference Transition"); + find mustInstanceOfVertex_class(problem,interpretation,container); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayInRelationoutgoingTransitions_reference_Vertex(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Transition_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Transition class"); + find mayInstanceOfTransition_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Entry_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Entry class"); + find mayInstanceOfEntry_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class_by_regions_reference_CompositeElement( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"regions reference CompositeElement"); + find mustInstanceOfCompositeElement_class(problem,interpretation,container); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayInRelationregions_reference_CompositeElement(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Region_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Region class"); + find mayInstanceOfRegion_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Choice_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Choice class"); + find mayInstanceOfChoice_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Synchronization_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Synchronization class"); + find mayInstanceOfSynchronization_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Statechart_class_UndefinedPart( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Statechart class UndefinedPart"); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_State_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"State class"); + find mayInstanceOfState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_Exit_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Exit class"); + find mayInstanceOfExit_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class_by_vertices_reference_Region( + problem:LogicProblem, interpretation:PartialInterpretation, + relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, + container:DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); + PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"vertices reference Region"); + find mustInstanceOfRegion_class(problem,interpretation,container); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayInRelationvertices_reference_Region(problem,interpretation,container,newObject); + find mustExist(problem, interpretation, container); + neg find mustExist(problem, interpretation, newObject); +} +pattern createObject_FinalState_class( + problem:LogicProblem, interpretation:PartialInterpretation, + typeInterpretation:PartialComplexTypeInterpretation) +{ + find interpretation(problem,interpretation); + neg find hasElementInContainment(problem,interpretation); + PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); + PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FinalState class"); + find mayInstanceOfFinalState_class(problem,interpretation,newObject); + find mayExist(problem, interpretation, newObject); + neg find mustExist(problem, interpretation, newObject); +} + +////////// +// 4.2 Type refinement +////////// +pattern refineTypeTo_Transition_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Entry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Region_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); +} +pattern refineTypeTo_Choice_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Synchronization_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_Statechart_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfVertex_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class_UndefinedPart(problem,interpretation,element); +} +pattern refineTypeTo_State_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfStatechart_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfState_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); +} +pattern refineTypeTo_Exit_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfExit_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfEntry_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfChoice_class(problem,interpretation,element); + neg find mustInstanceOfRegularState_class(problem,interpretation,element); + neg find mustInstanceOfSynchronization_class(problem,interpretation,element); + neg find mustInstanceOfExit_class(problem,interpretation,element); +} +pattern refineTypeTo_FinalState_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { + find interpretation(problem,interpretation); + PartialInterpretation.newElements(interpretation,element); + find mayInstanceOfFinalState_class(problem,interpretation,element); + neg find mustInstanceOfPseudostate_class(problem,interpretation,element); + neg find mustInstanceOfTransition_class(problem,interpretation,element); + neg find mustInstanceOfCompositeElement_class(problem,interpretation,element); + neg find mustInstanceOfRegion_class(problem,interpretation,element); + neg find mustInstanceOfFinalState_class(problem,interpretation,element); +} + +////////// +// 4.3 Relation refinement +////////// +pattern refineRelation_incomingTransitions_reference_Vertex_and_target_reference_Transition( + problem:LogicProblem, interpretation:PartialInterpretation, + relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation, + from: DefinedElement, to: DefinedElement) +{ + find interpretation(problem,interpretation); + PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); + PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"incomingTransitions reference Vertex"); + PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation); + PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"target reference Transition"); + find mustExist(problem, interpretation, from); + find mustExist(problem, interpretation, to); + find mustInstanceOfVertex_class(problem,interpretation,from); + find mustInstanceOfTransition_class(problem,interpretation,to); + find mayInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); + neg find mustInRelationincomingTransitions_reference_Vertex(problem,interpretation,from,to); +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem new file mode 100644 index 000000000..3696f838e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/generation.logicproblem @@ -0,0 +1,1454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel new file mode 100644 index 000000000..5479fb8d0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/debug/init.partialmodel @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt new file mode 100644 index 000000000..8d1daafe5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/log.txt @@ -0,0 +1 @@ +Model generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedUnable to solve problem, but 0 model generated!Model generation finishedModel generation startedUnable to solve problem, but 0 model generated!Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finished \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml new file mode 100644 index 000000000..2b44b5304 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.gml @@ -0,0 +1,13622 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 4 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 19 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 20 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 21 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 22 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 23 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 24 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 25 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 26 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 27 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 28 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 29 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 30 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 31 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 32 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 33 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 34 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 35 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 36 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 37 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 38 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 39 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 40 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 41 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 42 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 43 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 44 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 45 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 46 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 47 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 48 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 49 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 50 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 51 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 52 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 53 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 54 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 55 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 15 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 16 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 30 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 51 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 19 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 20 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 21 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 22 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 23 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 24 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 25 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 26 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 27 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 28 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 29 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 30 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 31 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 32 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 33 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 34 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 35 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 36 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 37 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 38 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 39 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 40 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 41 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 42 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 43 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 44 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 45 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 46 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 47 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 48 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 49 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 50 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 51 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 52 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 53 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 54 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 55 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 36 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 37 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 51 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png new file mode 100644 index 000000000..6c9b4ffba Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi new file mode 100644 index 000000000..137f0943a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/1.xmi @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml new file mode 100644 index 000000000..f0112af7b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.gml @@ -0,0 +1,13210 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 19 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 20 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 21 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 22 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 23 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 24 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 25 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 26 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 27 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 28 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 29 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 30 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 31 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 32 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 33 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 34 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 35 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 36 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 37 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 38 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 39 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 40 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 41 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 42 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 43 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 44 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 45 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 46 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 47 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 48 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 49 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 50 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 51 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 52 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 53 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 54 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 55 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 15 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 16 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 30 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 27 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 24 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 14 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 27 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 24 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 12 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 15 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 16 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 30 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 14 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 19 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 20 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 21 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 22 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 23 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 24 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 25 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 26 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 27 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 28 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 29 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 30 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 31 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 32 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 33 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 34 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 35 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 36 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 37 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 38 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 39 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 40 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 41 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 42 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 43 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 44 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 45 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 46 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 47 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 48 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 49 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 50 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 51 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 52 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 53 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 54 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 55 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 13 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 21 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 22 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 26 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 17 + target 28 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 29 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 18 + target 31 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 36 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 34 + target 37 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 38 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 40 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 39 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 42 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 32 + target 43 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 44 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 19 + target 45 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 46 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 47 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 48 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 49 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 50 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 33 + target 51 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 21 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 22 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 26 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 28 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 29 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 31 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 36 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 37 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 38 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 39 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 23 + target 40 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 42 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 43 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 25 + target 44 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 45 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 46 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 47 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 20 + target 48 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 49 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 35 + target 50 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 41 + target 51 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 15 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 16 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 17 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 18 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 19 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 20 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 23 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 24 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 25 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 27 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 30 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 32 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 33 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 34 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 35 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 41 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 17 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 18 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 34 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 32 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 19 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 33 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 13 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 21 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 22 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 26 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 28 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 29 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 31 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 36 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 37 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 38 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 39 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 40 + target 23 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 42 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 43 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 44 + target 25 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 45 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 46 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 47 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 48 + target 20 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 49 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 50 + target 35 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 51 + target 41 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 11 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 7 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 11 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Exit class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 8 + target 6 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 10 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 4 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 8 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 4 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 8 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] +graph +[ + node + [ + id 0 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 138.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Transition class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 7 + target 9 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "incomingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 5 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "outgoingTransitions reference Vertex" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 4 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 5 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 7 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "target reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 9 + target 5 + graphics + [ + fill "#000000" + targetArrow "standard" + ] + LabelGraphics + [ + text "source reference Transition" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 0 + target 3 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png new file mode 100644 index 000000000..548f8daed Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.png differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi new file mode 100644 index 000000000..0d85e1cd1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/models/2.xmi @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv new file mode 100644 index 000000000..290c841ee --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/yakindu/statistics.csv @@ -0,0 +1,20 @@ +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;58;4042;5037;7589962200;537;880;485;48;20;0;6 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;35;3137;3383;1446909200;48;0;24;0;0;2 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;24;2684;30969;24516501600;27279;28245;26662;18;324;0;4 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;23;2143;23882;16188039300;21183;21191;20297;20;189;0;3 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;InsuficientResourcesResultImpl;18;2211;10998;6300;7933;10;95;0;0 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;InsuficientResourcesResultImpl;15;2037;5137;6800;2250;15;169;0;0 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;104;2832;6950;15113591900;777;1074;1256;1824;2107;1521;145;44;0;16 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;42;3179;15266;13359431300;12045;12060;12077;12082;12107;9023;25;176;0;9 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;646;4720;6290;14663107900;900;1000;1126;1525;1621;1177;235;34;0;17 +Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime +1;1;ModelResultImpl;564;4692;4940;13642804600;616;832;966;1014;1191;829;198;27;0;17 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties new file mode 100644 index 000000000..58c2dbb6e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = FAM Model +providerName = www.example.org diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml new file mode 100644 index 000000000..0335dc9f1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/plugin.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking.txt new file mode 100644 index 000000000..ca86fe6bd --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking.txt @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt new file mode 100644 index 000000000..ea39dade4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/pluginWorking2.txt @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql new file mode 100644 index 000000000..a47181503 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/ecore/queries/ecorePatterns.vql @@ -0,0 +1,29 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries + +import epackage "http://www.eclipse.org/emf/2002/Ecore" + +pattern directSupertype(a: EClass, b:EClass) { + EClass.eSuperTypes(a,b); +} + +@Constraint(key={a}, severity="error", message="error") +pattern loopInInheritence(a: EClass) { + find directSupertype+(a,a); +} + +pattern opposite(a:EReference, b: EReference) { + EReference.eOpposite(a,b); +} +//@Constraint(key={a}, severity="error", message="error") +//pattern oppositeDifferentClass(a:EReference) { +// EReference.eOpposite(a,b); +// EReference.eContainingClass(a,aContaining); +// EReference.eType(b,bTarget); +// aContaining != bTarget; +//} + +@Constraint(key={a}, severity="error", message="error") +pattern nonSymmetricOpposite(a:EReference, b:EReference) { + find opposite(a,b); + neg find opposite(b,a); +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql new file mode 100644 index 000000000..7e0db2228 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/fam/queries/famPatterns.vql @@ -0,0 +1,104 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries + +import epackage "FamMetamodel" + +@Constraint(message="terminatorAndInformation", severity="error", key={T}) +pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { + FunctionalOutput.outgoingLinks(Out,I); + FunctionalOutput.terminator(Out,T); +} or { + InformationLink.to(I,In); + FunctionalInput.terminator(In,T); +} + +/* +@QueryBasedFeature +pattern type(This : Function, Target : FunctionType) = { + find rootElements(_Model, This); + Target == FunctionType::Root; +} or { + neg find parent(_Child, This); + neg find rootElements(_Model, This); + Target == FunctionType::Leaf; +} or { + find parent(This, _Par); + find parent(_Child, This); + Target == FunctionType::Intermediate; +} +*/ +pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = { + FunctionalArchitectureModel.rootElements(Model, Root); +} + +pattern parent(Func : Function, Par : Function) = { + Function.parent(Func, Par); +} +/* +@QueryBasedFeature +pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) { + FunctionalElement(This); + FunctionalArchitectureModel(Target); +} + +/* +@Constraint(message="noRoot", severity="error", key={fam}) +pattern noRoot(fam: FunctionalArchitectureModel) { + FunctionalArchitectureModel(fam); + neg find hasRoot(_); +} +@Constraint(message="noIntermediate", severity="error", key={fam}) +pattern noInt(fam: FunctionalArchitectureModel) { + FunctionalArchitectureModel(fam); + neg find hasInt(_); +} +@Constraint(message="noLeaf", severity="error", key={fam}) +pattern noLeaf(fam: FunctionalArchitectureModel) { + FunctionalArchitectureModel(fam); + neg find hasLeaf(_); +} +*/ + +/* +@QueryBasedFeature +pattern model(This : FunctionalElement, Target : FunctionalArchitectureModel) = { + find parent+(This, Parent); + find rootElements(Target, Parent); +} or { + find rootElements(Target, This); +} + +pattern interfaceData(FI : FunctionalInterface, FD : FunctionalData) = { + FunctionalInterface.data(FI, FD); +} + +@QueryBasedFeature +pattern inputs(This : FunctionalInterface, Target : FunctionalInput) = { + find interfaceData(This, Target); +} + +@QueryBasedFeature +pattern outputs(This : FunctionalInterface, Target : FunctionalOutput) = { + find interfaceData(This, Target); +} + +@QueryBasedFeature +pattern outgoingLinks(This : FunctionalElement, Target : InformationLink) = { + FunctionalElement.interface.outputs(This, Output); + InformationLink.from(Target, Output); +} + +@QueryBasedFeature +pattern incomingLinks(This : FunctionalElement, Target : InformationLink) = { + FunctionalElement.interface.inputs(This, Input); + InformationLink.to(Target, Input); +} + +@QueryBasedFeature +pattern connects(This : FunctionalElement, Target : FunctionalElement) = { + FunctionalElement.outgoingLinks(This,Link); + FunctionalElement.incomingLinks(Target,Link); +}*/ + +/*pattern frequency(a: Function, b : EInt) { + Function.minimumFrequency(a,b); +}*/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystemPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystemPatterns.vql new file mode 100644 index 000000000..269a42428 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/FileSystemPatterns.vql @@ -0,0 +1,24 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.queries + +import epackage "FileSystemMetamodel" + +pattern patternContent(o1: FSObject, o2: FSObject) { + Dir.contents(o1,o2); +} + +@QueryBasedFeature +pattern live(this: FileSystem, l: FSObject) { + FileSystem.root(this,l); +} or { + FileSystem.root(this,root); + find patternContent+(root,l); +} + +@Constraint(key={child}, severity="error", message="error") +pattern contentInNotLive(parent : Dir, child: FSObject) { + Dir.contents(parent,child); + neg find live(_,parent); +} or { + Dir.contents(parent,child); + neg find live(_,child); +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql_ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql_ new file mode 100644 index 000000000..2e4986706 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduMutatedPatterns.vql_ @@ -0,0 +1,270 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries + +import epackage "YakinduMetamodel" + +///////// +// Entry +///////// + +pattern entryInRegion_M0(r1 : Region, e1 : Entry) { + Region.vertices(r1, e1); +} +pattern entryInRegion_M1(r1 : Region, e1) { + Region.vertices(r1, e1); +} +pattern entryInRegion_M2(r1 : Region, e1: Entry) { + // For positive constraint + Region(r1);Entry(e1); +} + + +//@Constraint(severity="error", message="error", key = {r1}) +pattern noEntryInRegion_M0(r1 : Region) { + neg find entryInRegion_M0(r1, _); +} +pattern noEntryInRegion_M1(r1 : Region) { + neg find entryInRegion_M1(r1, _); +} +pattern noEntryInRegion_M2(r1 : Region) { + neg find entryInRegion_M2(r1, _); +} +pattern noEntryInRegion_M3(r1 : Region) { + find entryInRegion_M0(r1, _); +} +pattern noEntryInRegion_M4(r1 : Region) { + find entryInRegion_M1(r1, _); +} +pattern noEntryInRegion_M5(r1 : Region) { + find entryInRegion_M2(r1, _); +} + +//@Constraint(severity="error", message="error", key = {r}) +pattern multipleEntryInRegion_M0(r : Region) { + find entryInRegion_M0(r, e1); + find entryInRegion_M0(r, e2); + e1 != e2; +} +pattern multipleEntryInRegion_M1(r : Region) { + find entryInRegion_M1(r, e1); + find entryInRegion_M0(r, e2); + e1 != e2; +} +pattern multipleEntryInRegion_M2(r : Region) { + find entryInRegion_M2(r, e1); + find entryInRegion_M0(r, e2); + e1 != e2; +} +pattern multipleEntryInRegion_M3(r : Region) { + find entryInRegion_M0(r, e1); + find entryInRegion_M1(r, e2); + e1 != e2; +} +pattern multipleEntryInRegion_M4(r : Region) { + find entryInRegion_M2(r, e1); + find entryInRegion_M2(r, e2); + e1 != e2; +} +pattern multipleEntryInRegion_M5(r : Region) { + find entryInRegion_M0(r, e1); + find entryInRegion_M0(r, e2); +} + + +pattern transition_M0(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Transition.target(t, trg); +} +pattern transition_M1(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Vertex(trg); +} +pattern transition_M2(t : Transition, src : Vertex, trg : Vertex) { + Vertex(src); + Transition.target(t, trg); +} +pattern transition_M3(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t_x, src); + Transition.target(t, trg); +} +pattern transition_M4(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Transition.target(t_x, trg); +} + +//@Constraint(severity="error", message="error", key = {e}) +pattern incomingToEntry_M0(t : Transition, e : Entry) { + find transition_M0(t, _, e); +} +pattern incomingToEntry_1(t : Transition, e) { + find transition_M0(t, _, e); +} +pattern incomingToEntry_2(t : Transition, e : Entry) { + find transition_M1(t, _, e); +} +pattern incomingToEntry_3(t : Transition, e : Entry) { + find transition_M2(t, _, e); +} +pattern incomingToEntry_4(t : Transition, e : Entry) { + find transition_M3(t, _, e); +} +pattern incomingToEntry_5(t : Transition, e : Entry) { + find transition_M4(t, _, e); +} + +pattern noOutgoingTransitionFromEntry_M0(e : Entry) { + neg find transition_M0(_, e, _); +} + +pattern noOutgoingTransitionFromEntry_M1(e) { + Vertex(e); + neg find transition_M0(_, e, _); +} +pattern noOutgoingTransitionFromEntry_M2(e : Entry) { + neg find transition_M1(_, e, _); +} +pattern noOutgoingTransitionFromEntry_M3(e : Entry) { + neg find transition_M2(_, e, _); +} +pattern noOutgoingTransitionFromEntry_M4(e : Entry) { + neg find transition_M3(_, e, _); +} +pattern noOutgoingTransitionFromEntry_M5(e : Entry) { + neg find transition_M4(_, e, _); +} + + +//@Constraint(severity="error", message="error", key = {e}) +pattern multipleTransitionFromEntry_M0(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} +pattern multipleTransitionFromEntry_M1(e, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} +pattern multipleTransitionFromEntry_M2(e : Entry, t1 : Transition, t2: Transition) { + Transition(t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} +pattern multipleTransitionFromEntry_M3(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Transition(t2); + t1!=t2; +} +pattern multipleTransitionFromEntry_M4(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); +} + +///////// +// Exit +///////// + +//@Constraint(severity="error", message="error", key = {e}) +pattern outgoingFromExit_M0(t : Transition, e : Exit) { + Exit.outgoingTransitions(e,t); +} +pattern outgoingFromExit_M1(t : Transition, e) { + Vertex.outgoingTransitions(e,t); +} +pattern outgoingFromExit_M2(t : Transition, e : Exit) { + Transition(t); + Exit(e); +} + +///////// +// Final +///////// + +//@Constraint(severity="error", message="error", key = {f}) +pattern outgoingFromFinal_M0(t : Transition, f : FinalState) { + FinalState.outgoingTransitions(f,t); +} +pattern outgoingFromFinal_M1(t : Transition, f) { + Vertex.outgoingTransitions(f,t); +} +pattern outgoingFromFinal_M2(t : Transition, f : FinalState) { + Transition(t); + FinalState(f); +} + +///////// +// State vs Region +///////// + +//@Constraint(severity="error", message="error", key = {region}) +pattern noStateInRegion_M0(region: Region) { + neg find StateInRegion_M0(region,_); +} +pattern noStateInRegion_M1(region: Region) { + neg find StateInRegion_M1(region,_); +} +pattern noStateInRegion_M2(region: Region) { + neg find StateInRegion_M2(region,_); +} +pattern noStateInRegion_M3(region: Region) { + find StateInRegion_M0(region,_); +} + +pattern StateInRegion_M0(region: Region, state: State) { + Region.vertices(region,state); +} +pattern StateInRegion_M1(region: Region, state) { + Region.vertices(region,state); +} +pattern StateInRegion_M2(region: Region, state:State) { + Region(region);State(state); +} + +///////// +// Choice +///////// + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoOutgoing_M0(c : Choice) { + neg find transition_M0(_, c, _); +} +pattern choiceHasNoOutgoing_M1(c:Vertex) { + neg find transition_M0(_, c, _); +} +pattern choiceHasNoOutgoing_M2(c : Choice) { + neg find transition_M1(_, c, _); +} +pattern choiceHasNoOutgoing_M3(c : Choice) { + neg find transition_M2(_, c, _); +} +pattern choiceHasNoOutgoing_M4(c : Choice) { + neg find transition_M3(_, c, _); +} +pattern choiceHasNoOutgoing_M5(c : Choice) { + neg find transition_M4(_, c, _); +} +pattern choiceHasNoOutgoing_M6(c : Choice) { + find transition_M0(_, c, _); +} + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoIncoming_M0(c: Choice) { + neg find transition_M0(_, _, c); +} +pattern choiceHasNoIncoming_M1(c:Vertex) { + neg find transition_M0(_, _, c); +} +pattern choiceHasNoIncoming_M2(c: Choice) { + neg find transition_M1(_, _, c); +} +pattern choiceHasNoIncoming_M3(c: Choice) { + neg find transition_M2(_, _, c); +} +pattern choiceHasNoIncoming_M4(c: Choice) { + neg find transition_M3(_, _, c); +} +pattern choiceHasNoIncoming_M5(c: Choice) { + neg find transition_M4(_, _, c); +} +pattern choiceHasNoIncoming_M6(c: Choice) { + find transition_M0(_, _, c); +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql new file mode 100644 index 000000000..ec9db9804 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/queries/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/yakinduPatterns.vql @@ -0,0 +1,227 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.queries + +import epackage "hu.bme.mit.inf.yakindumm" + +///////// +// Entry +///////// + +pattern entryInRegion(r1 : Region, e1 : Entry) { + Region.vertices(r1, e1); +} + +@Constraint(severity="error", message="error", key = {r1}) +pattern noEntryInRegion(r1 : Region) { + neg find entryInRegion(r1, _); +} + +@Constraint(severity="error", message="error", key = {r}) +pattern multipleEntryInRegion(r : Region) { + find entryInRegion(r, e1); + find entryInRegion(r, e2); + e1 != e2; +} + +pattern transition(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Transition.target(t, trg); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern incomingToEntry(t : Transition, e : Entry) { + find transition(t, _, e); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern noOutgoingTransitionFromEntry(e : Entry) { + neg find transition(_, e, _); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} + +///////// +// Exit +///////// + +@Constraint(severity="error", message="error", key = {e}) +pattern outgoingFromExit(t : Transition, e : Exit) { + Exit.outgoingTransitions(e,t); +} + +///////// +// Final +///////// + +@Constraint(severity="error", message="error", key = {f}) +pattern outgoingFromFinal(t : Transition, f : FinalState) { + FinalState.outgoingTransitions(f,t); +} + +///////// +// State vs Region +///////// + +@Constraint(severity="error", message="error", key = {region}) +pattern noStateInRegion(region: Region) { + neg find StateInRegion(region,_); +} +pattern StateInRegion(region: Region, state: State) { + Region.vertices(region,state); +} + +///////// +// Choice +///////// + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoOutgoing(c : Choice) { + neg find transition(_, c, _); +} + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoIncoming(c: Choice) { + neg find transition(_, _, c); +} + +///////// +// Synchronization +///////// + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoOutgoing(s : Synchronization) { + neg find transition(_, s, _); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoIncoming(s : Synchronization) { + neg find transition(_, _, s); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { + find transition(t1, v1, s); + find transition(t2, v2, s); + t1!=t2; + Region.vertices(r, v1); + Region.vertices(r, v2); +} or { + find transition(t1, s, v1); + find transition(t2, s, v2); + t1!=t2; + Region.vertices(r, v1); + Region.vertices(r, v2); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern notSynchronizingStates(s : Synchronization) { + neg find hasMultipleOutgoingTrainsition(s); + neg find hasMultipleIncomingTrainsition(s); +} + +pattern hasMultipleOutgoingTrainsition(v : Synchronization) { + find transition(_, v, trg1); + find transition(_, v, trg2); + trg1 != trg2; +} + +pattern hasMultipleIncomingTrainsition(v : Synchronization) { + find transition(_, src1, v); + find transition(_, src2, v); + src1 != src2; +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { + find transition(_, v1, s); + find transition(_, v2, s); + CompositeElement.regions.vertices(r1, v1); + CompositeElement.regions.vertices(r2, v2); + r1 != r2; +} or { + find transition(_, s, v1); + find transition(_, s, v2); + CompositeElement.regions.vertices(r1, v1); + CompositeElement.regions.vertices(r2, v2); + r1 != r2; +} + +/////////////////////////////// +// Extra +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) { +// find transition(_, v, s); +// neg find child(_,v); +//} or { +// find transition(_, s, v); +// neg find child(_,v); +//} + +pattern child(parent: CompositeElement, child: Vertex) { + CompositeElement.regions.vertices(parent, child); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) { + find transition(_, v, s); + find child(c,v); + neg find hasMultipleRegions(c); +} or { + find transition(_, s, v); + find child(c,v); + neg find hasMultipleRegions(c); +} + + +pattern hasMultipleRegions(composite: CompositeElement) { + CompositeElement.regions(composite,region1); + CompositeElement.regions(composite,region2); + region1 != region2; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s}) +pattern synchThree(s: Synchronization) { + Transition.target(t1,s); + Transition.target(t2,s); + Transition.target(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} or { + Transition.source(t1,s); + Transition.source(t2,s); + Transition.source(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s1,s2}) +pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { + Synchronization(s1); + Synchronization(s2); + s1 != s2; +} + +/** + * Model generation task: at least one synch + */ +@Constraint(severity="error", message="error", key = {s}) +pattern noSynch(s:Statechart) { + Statechart(s); + neg find synch(_); +} +pattern synch(s:Synchronization) { + Synchronization(s); +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/.gitignore new file mode 100644 index 000000000..dcc36d344 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/queries/.gitignore @@ -0,0 +1,9 @@ +/.ContentInNotLive.java._trace +/.FileSystem.java._trace +/.Live.java._trace +/.PatternContent.java._trace +/.FileSystemPatterns.java._trace +/PatternContent.java +/ContentInNotLive.java +/FileSystemPatterns.java +/Live.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore new file mode 100644 index 000000000..a0ebcd7a2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src-gen/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/queries/.gitignore @@ -0,0 +1,182 @@ +/.EntryInRegion_M0.java._trace +/.EntryInRegion_M1.java._trace +/.EntryInRegion_M2.java._trace +/.MultipleEntryInRegion_M0.java._trace +/.MultipleEntryInRegion_M1.java._trace +/.MultipleEntryInRegion_M2.java._trace +/.NoEntryInRegion_M0.java._trace +/.NoEntryInRegion_M1.java._trace +/.NoEntryInRegion_M2.java._trace +/.NoEntryInRegion_M3.java._trace +/.NoEntryInRegion_M4.java._trace +/.NoEntryInRegion_M5.java._trace +/.MultipleEntryInRegion_M3.java._trace +/.EntryInRegion.java._trace +/.MultipleEntryInRegion.java._trace +/.NoEntryInRegion.java._trace +/.Transition.java._trace +/.Child.java._trace +/.ChoiceHasNoIncoming.java._trace +/.ChoiceHasNoOutgoing.java._trace +/.HasMultipleIncomingTrainsition.java._trace +/.HasMultipleOutgoingTrainsition.java._trace +/.HasMultipleRegions.java._trace +/.IncomingToEntry.java._trace +/.MultipleTransitionFromEntry.java._trace +/.NoOutgoingTransitionFromEntry.java._trace +/.NoStateInRegion.java._trace +/.NotSynchronizingStates.java._trace +/.OutgoingFromExit.java._trace +/.OutgoingFromFinal.java._trace +/.StateInRegion.java._trace +/.SynchHasNoIncoming.java._trace +/.SynchHasNoOutgoing.java._trace +/.SynchThree.java._trace +/.SynchronizedIncomingInSameRegion.java._trace +/.SynchronizedRegionDoesNotHaveMultipleRegions.java._trace +/.SynchronizedRegionsAreNotSiblings.java._trace +/.TwoSynch.java._trace +/.YakinduPatterns.java._trace +/.ChoiceHasNoIncoming_M0.java._trace +/.ChoiceHasNoIncoming_M1.java._trace +/.ChoiceHasNoIncoming_M2.java._trace +/.ChoiceHasNoIncoming_M3.java._trace +/.ChoiceHasNoIncoming_M4.java._trace +/.ChoiceHasNoIncoming_M5.java._trace +/.ChoiceHasNoIncoming_M6.java._trace +/.ChoiceHasNoOutgoing_M0.java._trace +/.ChoiceHasNoOutgoing_M1.java._trace +/.ChoiceHasNoOutgoing_M2.java._trace +/.ChoiceHasNoOutgoing_M3.java._trace +/.ChoiceHasNoOutgoing_M4.java._trace +/.ChoiceHasNoOutgoing_M5.java._trace +/.ChoiceHasNoOutgoing_M6.java._trace +/.IncomingToEntry_1.java._trace +/.IncomingToEntry_2.java._trace +/.IncomingToEntry_3.java._trace +/.IncomingToEntry_4.java._trace +/.IncomingToEntry_5.java._trace +/.IncomingToEntry_M0.java._trace +/.MultipleEntryInRegion_M4.java._trace +/.MultipleEntryInRegion_M5.java._trace +/.MultipleTransitionFromEntry_M0.java._trace +/.MultipleTransitionFromEntry_M1.java._trace +/.MultipleTransitionFromEntry_M2.java._trace +/.MultipleTransitionFromEntry_M3.java._trace +/.MultipleTransitionFromEntry_M4.java._trace +/.NoOutgoingTransitionFromEntry_M0.java._trace +/.NoOutgoingTransitionFromEntry_M1.java._trace +/.NoOutgoingTransitionFromEntry_M2.java._trace +/.NoOutgoingTransitionFromEntry_M3.java._trace +/.NoOutgoingTransitionFromEntry_M4.java._trace +/.NoOutgoingTransitionFromEntry_M5.java._trace +/.NoStateInRegion_M0.java._trace +/.NoStateInRegion_M1.java._trace +/.NoStateInRegion_M2.java._trace +/.NoStateInRegion_M3.java._trace +/.OutgoingFromExit_M0.java._trace +/.OutgoingFromExit_M1.java._trace +/.OutgoingFromExit_M2.java._trace +/.OutgoingFromFinal_M0.java._trace +/.OutgoingFromFinal_M1.java._trace +/.OutgoingFromFinal_M2.java._trace +/.StateInRegion_M0.java._trace +/.StateInRegion_M1.java._trace +/.StateInRegion_M2.java._trace +/.Transition_M0.java._trace +/.Transition_M1.java._trace +/.Transition_M2.java._trace +/.Transition_M3.java._trace +/.Transition_M4.java._trace +/.YakinduMutatedPatterns.java._trace +/YakinduPatterns.java +/MultipleEntryInRegion.java +/ChoiceHasNoIncoming_M0.java +/ChoiceHasNoIncoming_M1.java +/ChoiceHasNoIncoming_M2.java +/ChoiceHasNoIncoming_M3.java +/ChoiceHasNoIncoming_M4.java +/ChoiceHasNoIncoming_M5.java +/ChoiceHasNoIncoming_M6.java +/ChoiceHasNoOutgoing_M0.java +/ChoiceHasNoOutgoing_M1.java +/ChoiceHasNoOutgoing_M2.java +/ChoiceHasNoOutgoing_M3.java +/ChoiceHasNoOutgoing_M4.java +/ChoiceHasNoOutgoing_M5.java +/ChoiceHasNoOutgoing_M6.java +/EntryInRegion_M0.java +/EntryInRegion_M1.java +/EntryInRegion_M2.java +/IncomingToEntry_1.java +/IncomingToEntry_2.java +/IncomingToEntry_3.java +/IncomingToEntry_4.java +/IncomingToEntry_5.java +/IncomingToEntry_M0.java +/MultipleEntryInRegion_M0.java +/MultipleEntryInRegion_M1.java +/MultipleEntryInRegion_M2.java +/MultipleEntryInRegion_M3.java +/MultipleEntryInRegion_M4.java +/MultipleEntryInRegion_M5.java +/MultipleTransitionFromEntry_M0.java +/MultipleTransitionFromEntry_M1.java +/MultipleTransitionFromEntry_M2.java +/MultipleTransitionFromEntry_M3.java +/MultipleTransitionFromEntry_M4.java +/NoEntryInRegion_M0.java +/NoEntryInRegion_M1.java +/NoEntryInRegion_M2.java +/NoEntryInRegion_M3.java +/NoEntryInRegion_M4.java +/NoEntryInRegion_M5.java +/NoOutgoingTransitionFromEntry_M0.java +/NoOutgoingTransitionFromEntry_M1.java +/NoOutgoingTransitionFromEntry_M2.java +/NoOutgoingTransitionFromEntry_M3.java +/NoOutgoingTransitionFromEntry_M4.java +/NoOutgoingTransitionFromEntry_M5.java +/NoStateInRegion_M0.java +/NoStateInRegion_M1.java +/NoStateInRegion_M2.java +/NoStateInRegion_M3.java +/OutgoingFromExit_M0.java +/OutgoingFromExit_M1.java +/OutgoingFromExit_M2.java +/OutgoingFromFinal_M0.java +/OutgoingFromFinal_M1.java +/OutgoingFromFinal_M2.java +/StateInRegion_M0.java +/StateInRegion_M1.java +/StateInRegion_M2.java +/Transition_M0.java +/Transition_M1.java +/Transition_M2.java +/Transition_M3.java +/Transition_M4.java +/YakinduMutatedPatterns.java +/Child.java +/ChoiceHasNoIncoming.java +/ChoiceHasNoOutgoing.java +/EntryInRegion.java +/HasMultipleIncomingTrainsition.java +/HasMultipleOutgoingTrainsition.java +/HasMultipleRegions.java +/IncomingToEntry.java +/MultipleTransitionFromEntry.java +/NoEntryInRegion.java +/NoOutgoingTransitionFromEntry.java +/NoStateInRegion.java +/NotSynchronizingStates.java +/OutgoingFromExit.java +/OutgoingFromFinal.java +/StateInRegion.java +/SynchHasNoIncoming.java +/SynchHasNoOutgoing.java +/SynchThree.java +/SynchronizedIncomingInSameRegion.java +/SynchronizedRegionDoesNotHaveMultipleRegions.java +/SynchronizedRegionsAreNotSiblings.java +/Transition.java +/TwoSynch.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend new file mode 100644 index 000000000..41bb763d9 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/TestExecutionICSE.xtend @@ -0,0 +1,22 @@ +package ca.mcgill.ecse.dslreasoner.standalone.test + +import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor + +class TestExecutionICSE { + def static void main(String[] args) { + val fileSystemPath = "configs/fileSystem.vsconfig"; + val ecorePath = "configs/ecore.vsconfig"; + val yakinduPath = "configs/yakindu.vsconfig"; + val famPath = "configs/fam.vsconfig"; +// val yakinduWithWFPath = "configs/yakinduWF.vsconfig"; +// val famWithWFPath = "configs/famWF.vsconfig"; + val exp1 = StandaloneScriptExecutor.executeScript(fileSystemPath); + println(exp1) +// val exp2 = StandaloneScriptExecutor.executeScript(ecorePath); +// println(exp2) + val exp3 = StandaloneScriptExecutor.executeScript(yakinduPath); + println(exp3) + val exp4 = StandaloneScriptExecutor.executeScript(famPath); + println(exp4) + } +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java new file mode 100644 index 000000000..686af44b9 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FAMTerminator.java @@ -0,0 +1,52 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'FAM Terminator'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData Data}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFAMTerminator() + * @model + * @generated + */ +public interface FAMTerminator extends EObject { + /** + * Returns the value of the 'Data' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator Terminator}'. + * + *

+ * If the meaning of the 'Data' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Data' container reference. + * @see #setData(FunctionalData) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFAMTerminator_Data() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator + * @model opposite="terminator" transient="false" + * @generated + */ + FunctionalData getData(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData Data}' container reference. + * + * + * @param value the new value of the 'Data' container reference. + * @see #getData() + * @generated + */ + void setData(FunctionalData value); + +} // FAMTerminator diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java new file mode 100644 index 000000000..b2e5af297 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/Function.java @@ -0,0 +1,61 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Function'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements Sub Elements}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getType Type}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunction() + * @model + * @generated + */ +public interface Function extends FunctionalElement { + /** + * Returns the value of the 'Sub Elements' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent Parent}'. + * + *

+ * If the meaning of the 'Sub Elements' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Sub Elements' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunction_SubElements() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent + * @model opposite="parent" containment="true" + * @generated + */ + EList getSubElements(); + + /** + * Returns the value of the 'Type' attribute. + * The literals are from the enumeration {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType}. + * + *

+ * If the meaning of the 'Type' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type' attribute. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunction_Type() + * @model required="true" transient="true" changeable="false" volatile="true" derived="true" + * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type'" + * @generated + */ + FunctionType getType(); + +} // Function diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java new file mode 100644 index 000000000..71e3062dc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionType.java @@ -0,0 +1,241 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * + * A representation of the literals of the enumeration 'Function Type', + * and utility methods for working with them. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionType() + * @model + * @generated + */ +public enum FunctionType implements Enumerator { + /** + * The 'Root' literal object. + * + * + * @see #ROOT_VALUE + * @generated + * @ordered + */ + ROOT(0, "Root", "Root"), + + /** + * The 'Intermediate' literal object. + * + * + * @see #INTERMEDIATE_VALUE + * @generated + * @ordered + */ + INTERMEDIATE(1, "Intermediate", "Intermediate"), + + /** + * The 'Leaf' literal object. + * + * + * @see #LEAF_VALUE + * @generated + * @ordered + */ + LEAF(2, "Leaf", "Leaf"); + + /** + * The 'Root' literal value. + * + *

+ * If the meaning of 'Root' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #ROOT + * @model name="Root" + * @generated + * @ordered + */ + public static final int ROOT_VALUE = 0; + + /** + * The 'Intermediate' literal value. + * + *

+ * If the meaning of 'Intermediate' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #INTERMEDIATE + * @model name="Intermediate" + * @generated + * @ordered + */ + public static final int INTERMEDIATE_VALUE = 1; + + /** + * The 'Leaf' literal value. + * + *

+ * If the meaning of 'Leaf' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #LEAF + * @model name="Leaf" + * @generated + * @ordered + */ + public static final int LEAF_VALUE = 2; + + /** + * An array of all the 'Function Type' enumerators. + * + * + * @generated + */ + private static final FunctionType[] VALUES_ARRAY = + new FunctionType[] { + ROOT, + INTERMEDIATE, + LEAF, + }; + + /** + * A public read-only list of all the 'Function Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Function Type' literal with the specified literal value. + * + * + * @param literal the literal. + * @return the matching enumerator or null. + * @generated + */ + public static FunctionType get(String literal) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + FunctionType result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Function Type' literal with the specified name. + * + * + * @param name the name. + * @return the matching enumerator or null. + * @generated + */ + public static FunctionType getByName(String name) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + FunctionType result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Function Type' literal with the specified integer value. + * + * + * @param value the integer value. + * @return the matching enumerator or null. + * @generated + */ + public static FunctionType get(int value) { + switch (value) { + case ROOT_VALUE: return ROOT; + case INTERMEDIATE_VALUE: return INTERMEDIATE; + case LEAF_VALUE: return LEAF; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private FunctionType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @generated + */ + @Override + public String toString() { + return literal; + } + +} //FunctionType diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java new file mode 100644 index 000000000..d1717a9f0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalArchitectureModel.java @@ -0,0 +1,42 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Functional Architecture Model'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel#getRootElements Root Elements}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalArchitectureModel() + * @model + * @generated + */ +public interface FunctionalArchitectureModel extends EObject { + /** + * Returns the value of the 'Root Elements' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement}. + * + *

+ * If the meaning of the 'Root Elements' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Root Elements' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalArchitectureModel_RootElements() + * @model containment="true" + * @generated + */ + EList getRootElements(); + +} // FunctionalArchitectureModel diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java new file mode 100644 index 000000000..675318a82 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalData.java @@ -0,0 +1,81 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Functional Data'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator Terminator}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface Interface}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalData() + * @model abstract="true" + * @generated + */ +public interface FunctionalData extends EObject { + /** + * Returns the value of the 'Terminator' containment reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData Data}'. + * + *

+ * If the meaning of the 'Terminator' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Terminator' containment reference. + * @see #setTerminator(FAMTerminator) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalData_Terminator() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData + * @model opposite="data" containment="true" + * @generated + */ + FAMTerminator getTerminator(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator Terminator}' containment reference. + * + * + * @param value the new value of the 'Terminator' containment reference. + * @see #getTerminator() + * @generated + */ + void setTerminator(FAMTerminator value); + + /** + * Returns the value of the 'Interface' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData Data}'. + * + *

+ * If the meaning of the 'Interface' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Interface' container reference. + * @see #setInterface(FunctionalInterface) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalData_Interface() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData + * @model opposite="data" transient="false" + * @generated + */ + FunctionalInterface getInterface(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface Interface}' container reference. + * + * + * @param value the new value of the 'Interface' container reference. + * @see #getInterface() + * @generated + */ + void setInterface(FunctionalInterface value); + +} // FunctionalData diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java new file mode 100644 index 000000000..acfffbc05 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalElement.java @@ -0,0 +1,109 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Functional Element'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface Interface}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel Model}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent Parent}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement() + * @model abstract="true" + * @generated + */ +public interface FunctionalElement extends EObject { + /** + * Returns the value of the 'Interface' containment reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement Element}'. + * + *

+ * If the meaning of the 'Interface' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Interface' containment reference. + * @see #setInterface(FunctionalInterface) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement_Interface() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement + * @model opposite="element" containment="true" + * @generated + */ + FunctionalInterface getInterface(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface Interface}' containment reference. + * + * + * @param value the new value of the 'Interface' containment reference. + * @see #getInterface() + * @generated + */ + void setInterface(FunctionalInterface value); + + /** + * Returns the value of the 'Model' reference. + * + *

+ * If the meaning of the 'Model' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Model' reference. + * @see #setModel(FunctionalArchitectureModel) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement_Model() + * @model required="true" transient="true" volatile="true" derived="true" + * annotation="org.eclipse.viatra.query.querybasedfeature patternFQN='ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model'" + * @generated + */ + FunctionalArchitectureModel getModel(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel Model}' reference. + * + * + * @param value the new value of the 'Model' reference. + * @see #getModel() + * @generated + */ + void setModel(FunctionalArchitectureModel value); + + /** + * Returns the value of the 'Parent' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements Sub Elements}'. + * + *

+ * If the meaning of the 'Parent' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Parent' container reference. + * @see #setParent(Function) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalElement_Parent() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements + * @model opposite="subElements" transient="false" + * @generated + */ + Function getParent(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent Parent}' container reference. + * + * + * @param value the new value of the 'Parent' container reference. + * @see #getParent() + * @generated + */ + void setParent(Function value); + +} // FunctionalElement diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java new file mode 100644 index 000000000..de629b295 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInput.java @@ -0,0 +1,42 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Functional Input'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks Incoming Links}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInput() + * @model + * @generated + */ +public interface FunctionalInput extends FunctionalData { + /** + * Returns the value of the 'Incoming Links' reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo To}'. + * + *

+ * If the meaning of the 'Incoming Links' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Incoming Links' reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInput_IncomingLinks() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo + * @model opposite="to" + * @generated + */ + EList getIncomingLinks(); + +} // FunctionalInput diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java new file mode 100644 index 000000000..732f3cc6a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalInterface.java @@ -0,0 +1,73 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Functional Interface'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData Data}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement Element}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInterface() + * @model + * @generated + */ +public interface FunctionalInterface extends EObject { + /** + * Returns the value of the 'Data' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface Interface}'. + * + *

+ * If the meaning of the 'Data' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Data' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInterface_Data() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface + * @model opposite="interface" containment="true" + * @generated + */ + EList getData(); + + /** + * Returns the value of the 'Element' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface Interface}'. + * + *

+ * If the meaning of the 'Element' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Element' container reference. + * @see #setElement(FunctionalElement) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalInterface_Element() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface + * @model opposite="interface" transient="false" + * @generated + */ + FunctionalElement getElement(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement Element}' container reference. + * + * + * @param value the new value of the 'Element' container reference. + * @see #getElement() + * @generated + */ + void setElement(FunctionalElement value); + +} // FunctionalInterface diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java new file mode 100644 index 000000000..511947772 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/FunctionalOutput.java @@ -0,0 +1,42 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Functional Output'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks Outgoing Links}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalOutput() + * @model + * @generated + */ +public interface FunctionalOutput extends FunctionalData { + /** + * Returns the value of the 'Outgoing Links' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom From}'. + * + *

+ * If the meaning of the 'Outgoing Links' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Outgoing Links' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getFunctionalOutput_OutgoingLinks() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom + * @model opposite="from" containment="true" + * @generated + */ + EList getOutgoingLinks(); + +} // FunctionalOutput diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java new file mode 100644 index 000000000..26946d01b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/InformationLink.java @@ -0,0 +1,81 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Information Link'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom From}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo To}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getInformationLink() + * @model + * @generated + */ +public interface InformationLink extends EObject { + /** + * Returns the value of the 'From' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks Outgoing Links}'. + * + *

+ * If the meaning of the 'From' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'From' container reference. + * @see #setFrom(FunctionalOutput) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getInformationLink_From() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks + * @model opposite="outgoingLinks" transient="false" + * @generated + */ + FunctionalOutput getFrom(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom From}' container reference. + * + * + * @param value the new value of the 'From' container reference. + * @see #getFrom() + * @generated + */ + void setFrom(FunctionalOutput value); + + /** + * Returns the value of the 'To' reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks Incoming Links}'. + * + *

+ * If the meaning of the 'To' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'To' reference. + * @see #setTo(FunctionalInput) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#getInformationLink_To() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks + * @model opposite="IncomingLinks" required="true" + * @generated + */ + FunctionalInput getTo(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo To}' reference. + * + * + * @param value the new value of the 'To' reference. + * @see #getTo() + * @generated + */ + void setTo(FunctionalInput value); + +} // InformationLink diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java new file mode 100644 index 000000000..cdab00418 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famFactory.java @@ -0,0 +1,96 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage + * @generated + */ +public interface famFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + famFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famFactoryImpl.init(); + + /** + * Returns a new object of class 'Functional Architecture Model'. + * + * + * @return a new object of class 'Functional Architecture Model'. + * @generated + */ + FunctionalArchitectureModel createFunctionalArchitectureModel(); + + /** + * Returns a new object of class 'Function'. + * + * + * @return a new object of class 'Function'. + * @generated + */ + Function createFunction(); + + /** + * Returns a new object of class 'FAM Terminator'. + * + * + * @return a new object of class 'FAM Terminator'. + * @generated + */ + FAMTerminator createFAMTerminator(); + + /** + * Returns a new object of class 'Information Link'. + * + * + * @return a new object of class 'Information Link'. + * @generated + */ + InformationLink createInformationLink(); + + /** + * Returns a new object of class 'Functional Interface'. + * + * + * @return a new object of class 'Functional Interface'. + * @generated + */ + FunctionalInterface createFunctionalInterface(); + + /** + * Returns a new object of class 'Functional Input'. + * + * + * @return a new object of class 'Functional Input'. + * @generated + */ + FunctionalInput createFunctionalInput(); + + /** + * Returns a new object of class 'Functional Output'. + * + * + * @return a new object of class 'Functional Output'. + * @generated + */ + FunctionalOutput createFunctionalOutput(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + famPackage getfamPackage(); + +} //famFactory diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java new file mode 100644 index 000000000..9b876f8bc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/famPackage.java @@ -0,0 +1,1032 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famFactory + * @model kind="package" + * annotation="http://www.eclipse.org/emf/2002/Ecore settingDelegates='org.eclipse.viatra.query.querybasedfeature'" + * @generated + */ +public interface famPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "fam"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "FamMetamodel"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "fam"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + famPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl Functional Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalElement() + * @generated + */ + int FUNCTIONAL_ELEMENT = 0; + + /** + * The feature id for the 'Interface' containment reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ELEMENT__INTERFACE = 0; + + /** + * The feature id for the 'Model' reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ELEMENT__MODEL = 1; + + /** + * The feature id for the 'Parent' container reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ELEMENT__PARENT = 2; + + /** + * The number of structural features of the 'Functional Element' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ELEMENT_FEATURE_COUNT = 3; + + /** + * The number of operations of the 'Functional Element' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl Functional Architecture Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalArchitectureModel() + * @generated + */ + int FUNCTIONAL_ARCHITECTURE_MODEL = 1; + + /** + * The feature id for the 'Root Elements' containment reference list. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS = 0; + + /** + * The number of structural features of the 'Functional Architecture Model' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ARCHITECTURE_MODEL_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Functional Architecture Model' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_ARCHITECTURE_MODEL_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl Function}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunction() + * @generated + */ + int FUNCTION = 2; + + /** + * The feature id for the 'Interface' containment reference. + * + * + * @generated + * @ordered + */ + int FUNCTION__INTERFACE = FUNCTIONAL_ELEMENT__INTERFACE; + + /** + * The feature id for the 'Model' reference. + * + * + * @generated + * @ordered + */ + int FUNCTION__MODEL = FUNCTIONAL_ELEMENT__MODEL; + + /** + * The feature id for the 'Parent' container reference. + * + * + * @generated + * @ordered + */ + int FUNCTION__PARENT = FUNCTIONAL_ELEMENT__PARENT; + + /** + * The feature id for the 'Sub Elements' containment reference list. + * + * + * @generated + * @ordered + */ + int FUNCTION__SUB_ELEMENTS = FUNCTIONAL_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + int FUNCTION__TYPE = FUNCTIONAL_ELEMENT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Function' class. + * + * + * @generated + * @ordered + */ + int FUNCTION_FEATURE_COUNT = FUNCTIONAL_ELEMENT_FEATURE_COUNT + 2; + + /** + * The number of operations of the 'Function' class. + * + * + * @generated + * @ordered + */ + int FUNCTION_OPERATION_COUNT = FUNCTIONAL_ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl FAM Terminator}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFAMTerminator() + * @generated + */ + int FAM_TERMINATOR = 3; + + /** + * The feature id for the 'Data' container reference. + * + * + * @generated + * @ordered + */ + int FAM_TERMINATOR__DATA = 0; + + /** + * The number of structural features of the 'FAM Terminator' class. + * + * + * @generated + * @ordered + */ + int FAM_TERMINATOR_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'FAM Terminator' class. + * + * + * @generated + * @ordered + */ + int FAM_TERMINATOR_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl Information Link}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getInformationLink() + * @generated + */ + int INFORMATION_LINK = 4; + + /** + * The feature id for the 'From' container reference. + * + * + * @generated + * @ordered + */ + int INFORMATION_LINK__FROM = 0; + + /** + * The feature id for the 'To' reference. + * + * + * @generated + * @ordered + */ + int INFORMATION_LINK__TO = 1; + + /** + * The number of structural features of the 'Information Link' class. + * + * + * @generated + * @ordered + */ + int INFORMATION_LINK_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Information Link' class. + * + * + * @generated + * @ordered + */ + int INFORMATION_LINK_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl Functional Interface}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInterface() + * @generated + */ + int FUNCTIONAL_INTERFACE = 5; + + /** + * The feature id for the 'Data' containment reference list. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INTERFACE__DATA = 0; + + /** + * The feature id for the 'Element' container reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INTERFACE__ELEMENT = 1; + + /** + * The number of structural features of the 'Functional Interface' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INTERFACE_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Functional Interface' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INTERFACE_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl Functional Data}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalData() + * @generated + */ + int FUNCTIONAL_DATA = 8; + + /** + * The feature id for the 'Terminator' containment reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_DATA__TERMINATOR = 0; + + /** + * The feature id for the 'Interface' container reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_DATA__INTERFACE = 1; + + /** + * The number of structural features of the 'Functional Data' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_DATA_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Functional Data' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_DATA_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl Functional Input}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInput() + * @generated + */ + int FUNCTIONAL_INPUT = 6; + + /** + * The feature id for the 'Terminator' containment reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INPUT__TERMINATOR = FUNCTIONAL_DATA__TERMINATOR; + + /** + * The feature id for the 'Interface' container reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INPUT__INTERFACE = FUNCTIONAL_DATA__INTERFACE; + + /** + * The feature id for the 'Incoming Links' reference list. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INPUT__INCOMING_LINKS = FUNCTIONAL_DATA_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Functional Input' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INPUT_FEATURE_COUNT = FUNCTIONAL_DATA_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'Functional Input' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_INPUT_OPERATION_COUNT = FUNCTIONAL_DATA_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl Functional Output}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalOutput() + * @generated + */ + int FUNCTIONAL_OUTPUT = 7; + + /** + * The feature id for the 'Terminator' containment reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_OUTPUT__TERMINATOR = FUNCTIONAL_DATA__TERMINATOR; + + /** + * The feature id for the 'Interface' container reference. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_OUTPUT__INTERFACE = FUNCTIONAL_DATA__INTERFACE; + + /** + * The feature id for the 'Outgoing Links' containment reference list. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_OUTPUT__OUTGOING_LINKS = FUNCTIONAL_DATA_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Functional Output' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_OUTPUT_FEATURE_COUNT = FUNCTIONAL_DATA_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'Functional Output' class. + * + * + * @generated + * @ordered + */ + int FUNCTIONAL_OUTPUT_OPERATION_COUNT = FUNCTIONAL_DATA_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType Function Type}' enum. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionType() + * @generated + */ + int FUNCTION_TYPE = 9; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement Functional Element}'. + * + * + * @return the meta object for class 'Functional Element'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement + * @generated + */ + EClass getFunctionalElement(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface Interface}'. + * + * + * @return the meta object for the containment reference 'Interface'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getInterface() + * @see #getFunctionalElement() + * @generated + */ + EReference getFunctionalElement_Interface(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel Model}'. + * + * + * @return the meta object for the reference 'Model'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getModel() + * @see #getFunctionalElement() + * @generated + */ + EReference getFunctionalElement_Model(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent Parent}'. + * + * + * @return the meta object for the container reference 'Parent'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement#getParent() + * @see #getFunctionalElement() + * @generated + */ + EReference getFunctionalElement_Parent(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel Functional Architecture Model}'. + * + * + * @return the meta object for class 'Functional Architecture Model'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel + * @generated + */ + EClass getFunctionalArchitectureModel(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel#getRootElements Root Elements}'. + * + * + * @return the meta object for the containment reference list 'Root Elements'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel#getRootElements() + * @see #getFunctionalArchitectureModel() + * @generated + */ + EReference getFunctionalArchitectureModel_RootElements(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function Function}'. + * + * + * @return the meta object for class 'Function'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function + * @generated + */ + EClass getFunction(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements Sub Elements}'. + * + * + * @return the meta object for the containment reference list 'Sub Elements'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getSubElements() + * @see #getFunction() + * @generated + */ + EReference getFunction_SubElements(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getType Type}'. + * + * + * @return the meta object for the attribute 'Type'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function#getType() + * @see #getFunction() + * @generated + */ + EAttribute getFunction_Type(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator FAM Terminator}'. + * + * + * @return the meta object for class 'FAM Terminator'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator + * @generated + */ + EClass getFAMTerminator(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData Data}'. + * + * + * @return the meta object for the container reference 'Data'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator#getData() + * @see #getFAMTerminator() + * @generated + */ + EReference getFAMTerminator_Data(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink Information Link}'. + * + * + * @return the meta object for class 'Information Link'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink + * @generated + */ + EClass getInformationLink(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom From}'. + * + * + * @return the meta object for the container reference 'From'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getFrom() + * @see #getInformationLink() + * @generated + */ + EReference getInformationLink_From(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo To}'. + * + * + * @return the meta object for the reference 'To'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink#getTo() + * @see #getInformationLink() + * @generated + */ + EReference getInformationLink_To(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface Functional Interface}'. + * + * + * @return the meta object for class 'Functional Interface'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface + * @generated + */ + EClass getFunctionalInterface(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData Data}'. + * + * + * @return the meta object for the containment reference list 'Data'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getData() + * @see #getFunctionalInterface() + * @generated + */ + EReference getFunctionalInterface_Data(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement Element}'. + * + * + * @return the meta object for the container reference 'Element'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface#getElement() + * @see #getFunctionalInterface() + * @generated + */ + EReference getFunctionalInterface_Element(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput Functional Input}'. + * + * + * @return the meta object for class 'Functional Input'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput + * @generated + */ + EClass getFunctionalInput(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks Incoming Links}'. + * + * + * @return the meta object for the reference list 'Incoming Links'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput#getIncomingLinks() + * @see #getFunctionalInput() + * @generated + */ + EReference getFunctionalInput_IncomingLinks(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput Functional Output}'. + * + * + * @return the meta object for class 'Functional Output'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput + * @generated + */ + EClass getFunctionalOutput(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks Outgoing Links}'. + * + * + * @return the meta object for the containment reference list 'Outgoing Links'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput#getOutgoingLinks() + * @see #getFunctionalOutput() + * @generated + */ + EReference getFunctionalOutput_OutgoingLinks(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData Functional Data}'. + * + * + * @return the meta object for class 'Functional Data'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData + * @generated + */ + EClass getFunctionalData(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator Terminator}'. + * + * + * @return the meta object for the containment reference 'Terminator'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getTerminator() + * @see #getFunctionalData() + * @generated + */ + EReference getFunctionalData_Terminator(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface Interface}'. + * + * + * @return the meta object for the container reference 'Interface'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData#getInterface() + * @see #getFunctionalData() + * @generated + */ + EReference getFunctionalData_Interface(); + + /** + * Returns the meta object for enum '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType Function Type}'. + * + * + * @return the meta object for enum 'Function Type'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + * @generated + */ + EEnum getFunctionType(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + famFactory getfamFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl Functional Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalElement() + * @generated + */ + EClass FUNCTIONAL_ELEMENT = eINSTANCE.getFunctionalElement(); + + /** + * The meta object literal for the 'Interface' containment reference feature. + * + * + * @generated + */ + EReference FUNCTIONAL_ELEMENT__INTERFACE = eINSTANCE.getFunctionalElement_Interface(); + + /** + * The meta object literal for the 'Model' reference feature. + * + * + * @generated + */ + EReference FUNCTIONAL_ELEMENT__MODEL = eINSTANCE.getFunctionalElement_Model(); + + /** + * The meta object literal for the 'Parent' container reference feature. + * + * + * @generated + */ + EReference FUNCTIONAL_ELEMENT__PARENT = eINSTANCE.getFunctionalElement_Parent(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl Functional Architecture Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalArchitectureModel() + * @generated + */ + EClass FUNCTIONAL_ARCHITECTURE_MODEL = eINSTANCE.getFunctionalArchitectureModel(); + + /** + * The meta object literal for the 'Root Elements' containment reference list feature. + * + * + * @generated + */ + EReference FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS = eINSTANCE.getFunctionalArchitectureModel_RootElements(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl Function}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunction() + * @generated + */ + EClass FUNCTION = eINSTANCE.getFunction(); + + /** + * The meta object literal for the 'Sub Elements' containment reference list feature. + * + * + * @generated + */ + EReference FUNCTION__SUB_ELEMENTS = eINSTANCE.getFunction_SubElements(); + + /** + * The meta object literal for the 'Type' attribute feature. + * + * + * @generated + */ + EAttribute FUNCTION__TYPE = eINSTANCE.getFunction_Type(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl FAM Terminator}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFAMTerminator() + * @generated + */ + EClass FAM_TERMINATOR = eINSTANCE.getFAMTerminator(); + + /** + * The meta object literal for the 'Data' container reference feature. + * + * + * @generated + */ + EReference FAM_TERMINATOR__DATA = eINSTANCE.getFAMTerminator_Data(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl Information Link}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getInformationLink() + * @generated + */ + EClass INFORMATION_LINK = eINSTANCE.getInformationLink(); + + /** + * The meta object literal for the 'From' container reference feature. + * + * + * @generated + */ + EReference INFORMATION_LINK__FROM = eINSTANCE.getInformationLink_From(); + + /** + * The meta object literal for the 'To' reference feature. + * + * + * @generated + */ + EReference INFORMATION_LINK__TO = eINSTANCE.getInformationLink_To(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl Functional Interface}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInterface() + * @generated + */ + EClass FUNCTIONAL_INTERFACE = eINSTANCE.getFunctionalInterface(); + + /** + * The meta object literal for the 'Data' containment reference list feature. + * + * + * @generated + */ + EReference FUNCTIONAL_INTERFACE__DATA = eINSTANCE.getFunctionalInterface_Data(); + + /** + * The meta object literal for the 'Element' container reference feature. + * + * + * @generated + */ + EReference FUNCTIONAL_INTERFACE__ELEMENT = eINSTANCE.getFunctionalInterface_Element(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl Functional Input}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalInput() + * @generated + */ + EClass FUNCTIONAL_INPUT = eINSTANCE.getFunctionalInput(); + + /** + * The meta object literal for the 'Incoming Links' reference list feature. + * + * + * @generated + */ + EReference FUNCTIONAL_INPUT__INCOMING_LINKS = eINSTANCE.getFunctionalInput_IncomingLinks(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl Functional Output}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalOutput() + * @generated + */ + EClass FUNCTIONAL_OUTPUT = eINSTANCE.getFunctionalOutput(); + + /** + * The meta object literal for the 'Outgoing Links' containment reference list feature. + * + * + * @generated + */ + EReference FUNCTIONAL_OUTPUT__OUTGOING_LINKS = eINSTANCE.getFunctionalOutput_OutgoingLinks(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl Functional Data}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionalData() + * @generated + */ + EClass FUNCTIONAL_DATA = eINSTANCE.getFunctionalData(); + + /** + * The meta object literal for the 'Terminator' containment reference feature. + * + * + * @generated + */ + EReference FUNCTIONAL_DATA__TERMINATOR = eINSTANCE.getFunctionalData_Terminator(); + + /** + * The meta object literal for the 'Interface' container reference feature. + * + * + * @generated + */ + EReference FUNCTIONAL_DATA__INTERFACE = eINSTANCE.getFunctionalData_Interface(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType Function Type}' enum. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.famPackageImpl#getFunctionType() + * @generated + */ + EEnum FUNCTION_TYPE = eINSTANCE.getFunctionType(); + + } + +} //famPackage diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java new file mode 100644 index 000000000..6eba60f6e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FAMTerminatorImpl.java @@ -0,0 +1,196 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'FAM Terminator'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FAMTerminatorImpl#getData Data}
  • + *
+ * + * @generated + */ +public class FAMTerminatorImpl extends MinimalEObjectImpl.Container implements FAMTerminator { + /** + * + * + * @generated + */ + protected FAMTerminatorImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FAM_TERMINATOR; + } + + /** + * + * + * @generated + */ + public FunctionalData getData() { + if (eContainerFeatureID() != famPackage.FAM_TERMINATOR__DATA) return null; + return (FunctionalData)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetData(FunctionalData newData, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newData, famPackage.FAM_TERMINATOR__DATA, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setData(FunctionalData newData) { + if (newData != eInternalContainer() || (eContainerFeatureID() != famPackage.FAM_TERMINATOR__DATA && newData != null)) { + if (EcoreUtil.isAncestor(this, newData)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newData != null) + msgs = ((InternalEObject)newData).eInverseAdd(this, famPackage.FUNCTIONAL_DATA__TERMINATOR, FunctionalData.class, msgs); + msgs = basicSetData(newData, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FAM_TERMINATOR__DATA, newData, newData)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FAM_TERMINATOR__DATA: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetData((FunctionalData)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FAM_TERMINATOR__DATA: + return basicSetData(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case famPackage.FAM_TERMINATOR__DATA: + return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_DATA__TERMINATOR, FunctionalData.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FAM_TERMINATOR__DATA: + return getData(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FAM_TERMINATOR__DATA: + setData((FunctionalData)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FAM_TERMINATOR__DATA: + setData((FunctionalData)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FAM_TERMINATOR__DATA: + return getData() != null; + } + return super.eIsSet(featureID); + } + +} //FAMTerminatorImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java new file mode 100644 index 000000000..ec3e884e3 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionImpl.java @@ -0,0 +1,191 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Function'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl#getSubElements Sub Elements}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionImpl#getType Type}
  • + *
+ * + * @generated + */ +public class FunctionImpl extends FunctionalElementImpl implements Function { + /** + * The cached value of the '{@link #getSubElements() Sub Elements}' containment reference list. + * + * + * @see #getSubElements() + * @generated + * @ordered + */ + protected EList subElements; + + /** + * The cached setting delegate for the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected EStructuralFeature.Internal.SettingDelegate TYPE__ESETTING_DELEGATE = ((EStructuralFeature.Internal)famPackage.Literals.FUNCTION__TYPE).getSettingDelegate(); + + /** + * + * + * @generated + */ + protected FunctionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTION; + } + + /** + * + * + * @generated + */ + public EList getSubElements() { + if (subElements == null) { + subElements = new EObjectContainmentWithInverseEList(FunctionalElement.class, this, famPackage.FUNCTION__SUB_ELEMENTS, famPackage.FUNCTIONAL_ELEMENT__PARENT); + } + return subElements; + } + + /** + * + * + * @generated + */ + public FunctionType getType() { + return (FunctionType)TYPE__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTION__SUB_ELEMENTS: + return ((InternalEList)(InternalEList)getSubElements()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTION__SUB_ELEMENTS: + return ((InternalEList)getSubElements()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTION__SUB_ELEMENTS: + return getSubElements(); + case famPackage.FUNCTION__TYPE: + return getType(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTION__SUB_ELEMENTS: + getSubElements().clear(); + getSubElements().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTION__SUB_ELEMENTS: + getSubElements().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTION__SUB_ELEMENTS: + return subElements != null && !subElements.isEmpty(); + case famPackage.FUNCTION__TYPE: + return TYPE__ESETTING_DELEGATE.dynamicIsSet(this, null, 0); + } + return super.eIsSet(featureID); + } + +} //FunctionImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java new file mode 100644 index 000000000..1b45df449 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalArchitectureModelImpl.java @@ -0,0 +1,152 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Functional Architecture Model'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalArchitectureModelImpl#getRootElements Root Elements}
  • + *
+ * + * @generated + */ +public class FunctionalArchitectureModelImpl extends MinimalEObjectImpl.Container implements FunctionalArchitectureModel { + /** + * The cached value of the '{@link #getRootElements() Root Elements}' containment reference list. + * + * + * @see #getRootElements() + * @generated + * @ordered + */ + protected EList rootElements; + + /** + * + * + * @generated + */ + protected FunctionalArchitectureModelImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTIONAL_ARCHITECTURE_MODEL; + } + + /** + * + * + * @generated + */ + public EList getRootElements() { + if (rootElements == null) { + rootElements = new EObjectContainmentEList(FunctionalElement.class, this, famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS); + } + return rootElements; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS: + return ((InternalEList)getRootElements()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS: + return getRootElements(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS: + getRootElements().clear(); + getRootElements().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS: + getRootElements().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS: + return rootElements != null && !rootElements.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //FunctionalArchitectureModelImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java new file mode 100644 index 000000000..069d53d49 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalDataImpl.java @@ -0,0 +1,267 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'Functional Data'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl#getTerminator Terminator}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalDataImpl#getInterface Interface}
  • + *
+ * + * @generated + */ +public abstract class FunctionalDataImpl extends MinimalEObjectImpl.Container implements FunctionalData { + /** + * The cached value of the '{@link #getTerminator() Terminator}' containment reference. + * + * + * @see #getTerminator() + * @generated + * @ordered + */ + protected FAMTerminator terminator; + + /** + * + * + * @generated + */ + protected FunctionalDataImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTIONAL_DATA; + } + + /** + * + * + * @generated + */ + public FAMTerminator getTerminator() { + return terminator; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetTerminator(FAMTerminator newTerminator, NotificationChain msgs) { + FAMTerminator oldTerminator = terminator; + terminator = newTerminator; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_DATA__TERMINATOR, oldTerminator, newTerminator); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setTerminator(FAMTerminator newTerminator) { + if (newTerminator != terminator) { + NotificationChain msgs = null; + if (terminator != null) + msgs = ((InternalEObject)terminator).eInverseRemove(this, famPackage.FAM_TERMINATOR__DATA, FAMTerminator.class, msgs); + if (newTerminator != null) + msgs = ((InternalEObject)newTerminator).eInverseAdd(this, famPackage.FAM_TERMINATOR__DATA, FAMTerminator.class, msgs); + msgs = basicSetTerminator(newTerminator, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_DATA__TERMINATOR, newTerminator, newTerminator)); + } + + /** + * + * + * @generated + */ + public FunctionalInterface getInterface() { + if (eContainerFeatureID() != famPackage.FUNCTIONAL_DATA__INTERFACE) return null; + return (FunctionalInterface)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetInterface(FunctionalInterface newInterface, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newInterface, famPackage.FUNCTIONAL_DATA__INTERFACE, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setInterface(FunctionalInterface newInterface) { + if (newInterface != eInternalContainer() || (eContainerFeatureID() != famPackage.FUNCTIONAL_DATA__INTERFACE && newInterface != null)) { + if (EcoreUtil.isAncestor(this, newInterface)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newInterface != null) + msgs = ((InternalEObject)newInterface).eInverseAdd(this, famPackage.FUNCTIONAL_INTERFACE__DATA, FunctionalInterface.class, msgs); + msgs = basicSetInterface(newInterface, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_DATA__INTERFACE, newInterface, newInterface)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_DATA__TERMINATOR: + if (terminator != null) + msgs = ((InternalEObject)terminator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - famPackage.FUNCTIONAL_DATA__TERMINATOR, null, msgs); + return basicSetTerminator((FAMTerminator)otherEnd, msgs); + case famPackage.FUNCTIONAL_DATA__INTERFACE: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetInterface((FunctionalInterface)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_DATA__TERMINATOR: + return basicSetTerminator(null, msgs); + case famPackage.FUNCTIONAL_DATA__INTERFACE: + return basicSetInterface(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case famPackage.FUNCTIONAL_DATA__INTERFACE: + return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_INTERFACE__DATA, FunctionalInterface.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTIONAL_DATA__TERMINATOR: + return getTerminator(); + case famPackage.FUNCTIONAL_DATA__INTERFACE: + return getInterface(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTIONAL_DATA__TERMINATOR: + setTerminator((FAMTerminator)newValue); + return; + case famPackage.FUNCTIONAL_DATA__INTERFACE: + setInterface((FunctionalInterface)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_DATA__TERMINATOR: + setTerminator((FAMTerminator)null); + return; + case famPackage.FUNCTIONAL_DATA__INTERFACE: + setInterface((FunctionalInterface)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_DATA__TERMINATOR: + return terminator != null; + case famPackage.FUNCTIONAL_DATA__INTERFACE: + return getInterface() != null; + } + return super.eIsSet(featureID); + } + +} //FunctionalDataImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java new file mode 100644 index 000000000..318a87060 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalElementImpl.java @@ -0,0 +1,318 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'Functional Element'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl#getInterface Interface}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl#getModel Model}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalElementImpl#getParent Parent}
  • + *
+ * + * @generated + */ +public abstract class FunctionalElementImpl extends MinimalEObjectImpl.Container implements FunctionalElement { + /** + * The cached value of the '{@link #getInterface() Interface}' containment reference. + * + * + * @see #getInterface() + * @generated + * @ordered + */ + protected FunctionalInterface interface_; + + /** + * The cached setting delegate for the '{@link #getModel() Model}' reference. + * + * + * @see #getModel() + * @generated + * @ordered + */ + protected EStructuralFeature.Internal.SettingDelegate MODEL__ESETTING_DELEGATE = ((EStructuralFeature.Internal)famPackage.Literals.FUNCTIONAL_ELEMENT__MODEL).getSettingDelegate(); + + /** + * + * + * @generated + */ + protected FunctionalElementImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTIONAL_ELEMENT; + } + + /** + * + * + * @generated + */ + public FunctionalInterface getInterface() { + return interface_; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetInterface(FunctionalInterface newInterface, NotificationChain msgs) { + FunctionalInterface oldInterface = interface_; + interface_ = newInterface; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, oldInterface, newInterface); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setInterface(FunctionalInterface newInterface) { + if (newInterface != interface_) { + NotificationChain msgs = null; + if (interface_ != null) + msgs = ((InternalEObject)interface_).eInverseRemove(this, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, FunctionalInterface.class, msgs); + if (newInterface != null) + msgs = ((InternalEObject)newInterface).eInverseAdd(this, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, FunctionalInterface.class, msgs); + msgs = basicSetInterface(newInterface, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, newInterface, newInterface)); + } + + /** + * + * + * @generated + */ + public FunctionalArchitectureModel getModel() { + return (FunctionalArchitectureModel)MODEL__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false); + } + + /** + * + * + * @generated + */ + public FunctionalArchitectureModel basicGetModel() { + return (FunctionalArchitectureModel)MODEL__ESETTING_DELEGATE.dynamicGet(this, null, 0, false, false); + } + + /** + * + * + * @generated + */ + public void setModel(FunctionalArchitectureModel newModel) { + MODEL__ESETTING_DELEGATE.dynamicSet(this, null, 0, newModel); + } + + /** + * + * + * @generated + */ + public Function getParent() { + if (eContainerFeatureID() != famPackage.FUNCTIONAL_ELEMENT__PARENT) return null; + return (Function)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetParent(Function newParent, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newParent, famPackage.FUNCTIONAL_ELEMENT__PARENT, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setParent(Function newParent) { + if (newParent != eInternalContainer() || (eContainerFeatureID() != famPackage.FUNCTIONAL_ELEMENT__PARENT && newParent != null)) { + if (EcoreUtil.isAncestor(this, newParent)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newParent != null) + msgs = ((InternalEObject)newParent).eInverseAdd(this, famPackage.FUNCTION__SUB_ELEMENTS, Function.class, msgs); + msgs = basicSetParent(newParent, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_ELEMENT__PARENT, newParent, newParent)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_ELEMENT__INTERFACE: + if (interface_ != null) + msgs = ((InternalEObject)interface_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - famPackage.FUNCTIONAL_ELEMENT__INTERFACE, null, msgs); + return basicSetInterface((FunctionalInterface)otherEnd, msgs); + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetParent((Function)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_ELEMENT__INTERFACE: + return basicSetInterface(null, msgs); + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + return basicSetParent(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + return eInternalContainer().eInverseRemove(this, famPackage.FUNCTION__SUB_ELEMENTS, Function.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTIONAL_ELEMENT__INTERFACE: + return getInterface(); + case famPackage.FUNCTIONAL_ELEMENT__MODEL: + if (resolve) return getModel(); + return basicGetModel(); + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + return getParent(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTIONAL_ELEMENT__INTERFACE: + setInterface((FunctionalInterface)newValue); + return; + case famPackage.FUNCTIONAL_ELEMENT__MODEL: + setModel((FunctionalArchitectureModel)newValue); + return; + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + setParent((Function)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_ELEMENT__INTERFACE: + setInterface((FunctionalInterface)null); + return; + case famPackage.FUNCTIONAL_ELEMENT__MODEL: + setModel((FunctionalArchitectureModel)null); + return; + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + setParent((Function)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_ELEMENT__INTERFACE: + return interface_ != null; + case famPackage.FUNCTIONAL_ELEMENT__MODEL: + return MODEL__ESETTING_DELEGATE.dynamicIsSet(this, null, 0); + case famPackage.FUNCTIONAL_ELEMENT__PARENT: + return getParent() != null; + } + return super.eIsSet(featureID); + } + +} //FunctionalElementImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java new file mode 100644 index 000000000..b62e97428 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInputImpl.java @@ -0,0 +1,165 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Functional Input'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInputImpl#getIncomingLinks Incoming Links}
  • + *
+ * + * @generated + */ +public class FunctionalInputImpl extends FunctionalDataImpl implements FunctionalInput { + /** + * The cached value of the '{@link #getIncomingLinks() Incoming Links}' reference list. + * + * + * @see #getIncomingLinks() + * @generated + * @ordered + */ + protected EList incomingLinks; + + /** + * + * + * @generated + */ + protected FunctionalInputImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTIONAL_INPUT; + } + + /** + * + * + * @generated + */ + public EList getIncomingLinks() { + if (incomingLinks == null) { + incomingLinks = new EObjectWithInverseResolvingEList(InformationLink.class, this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, famPackage.INFORMATION_LINK__TO); + } + return incomingLinks; + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS: + return ((InternalEList)(InternalEList)getIncomingLinks()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS: + return ((InternalEList)getIncomingLinks()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS: + return getIncomingLinks(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS: + getIncomingLinks().clear(); + getIncomingLinks().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS: + getIncomingLinks().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS: + return incomingLinks != null && !incomingLinks.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //FunctionalInputImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java new file mode 100644 index 000000000..b9417a23c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalInterfaceImpl.java @@ -0,0 +1,243 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Functional Interface'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl#getData Data}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalInterfaceImpl#getElement Element}
  • + *
+ * + * @generated + */ +public class FunctionalInterfaceImpl extends MinimalEObjectImpl.Container implements FunctionalInterface { + /** + * The cached value of the '{@link #getData() Data}' containment reference list. + * + * + * @see #getData() + * @generated + * @ordered + */ + protected EList data; + + /** + * + * + * @generated + */ + protected FunctionalInterfaceImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTIONAL_INTERFACE; + } + + /** + * + * + * @generated + */ + public EList getData() { + if (data == null) { + data = new EObjectContainmentWithInverseEList(FunctionalData.class, this, famPackage.FUNCTIONAL_INTERFACE__DATA, famPackage.FUNCTIONAL_DATA__INTERFACE); + } + return data; + } + + /** + * + * + * @generated + */ + public FunctionalElement getElement() { + if (eContainerFeatureID() != famPackage.FUNCTIONAL_INTERFACE__ELEMENT) return null; + return (FunctionalElement)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetElement(FunctionalElement newElement, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newElement, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setElement(FunctionalElement newElement) { + if (newElement != eInternalContainer() || (eContainerFeatureID() != famPackage.FUNCTIONAL_INTERFACE__ELEMENT && newElement != null)) { + if (EcoreUtil.isAncestor(this, newElement)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newElement != null) + msgs = ((InternalEObject)newElement).eInverseAdd(this, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, FunctionalElement.class, msgs); + msgs = basicSetElement(newElement, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.FUNCTIONAL_INTERFACE__ELEMENT, newElement, newElement)); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_INTERFACE__DATA: + return ((InternalEList)(InternalEList)getData()).basicAdd(otherEnd, msgs); + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetElement((FunctionalElement)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_INTERFACE__DATA: + return ((InternalEList)getData()).basicRemove(otherEnd, msgs); + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + return basicSetElement(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_ELEMENT__INTERFACE, FunctionalElement.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTIONAL_INTERFACE__DATA: + return getData(); + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + return getElement(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTIONAL_INTERFACE__DATA: + getData().clear(); + getData().addAll((Collection)newValue); + return; + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + setElement((FunctionalElement)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_INTERFACE__DATA: + getData().clear(); + return; + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + setElement((FunctionalElement)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_INTERFACE__DATA: + return data != null && !data.isEmpty(); + case famPackage.FUNCTIONAL_INTERFACE__ELEMENT: + return getElement() != null; + } + return super.eIsSet(featureID); + } + +} //FunctionalInterfaceImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java new file mode 100644 index 000000000..30bde3481 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/FunctionalOutputImpl.java @@ -0,0 +1,165 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Functional Output'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.FunctionalOutputImpl#getOutgoingLinks Outgoing Links}
  • + *
+ * + * @generated + */ +public class FunctionalOutputImpl extends FunctionalDataImpl implements FunctionalOutput { + /** + * The cached value of the '{@link #getOutgoingLinks() Outgoing Links}' containment reference list. + * + * + * @see #getOutgoingLinks() + * @generated + * @ordered + */ + protected EList outgoingLinks; + + /** + * + * + * @generated + */ + protected FunctionalOutputImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.FUNCTIONAL_OUTPUT; + } + + /** + * + * + * @generated + */ + public EList getOutgoingLinks() { + if (outgoingLinks == null) { + outgoingLinks = new EObjectContainmentWithInverseEList(InformationLink.class, this, famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS, famPackage.INFORMATION_LINK__FROM); + } + return outgoingLinks; + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS: + return ((InternalEList)(InternalEList)getOutgoingLinks()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS: + return ((InternalEList)getOutgoingLinks()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS: + return getOutgoingLinks(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS: + getOutgoingLinks().clear(); + getOutgoingLinks().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS: + getOutgoingLinks().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS: + return outgoingLinks != null && !outgoingLinks.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //FunctionalOutputImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java new file mode 100644 index 000000000..b87f42011 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/InformationLinkImpl.java @@ -0,0 +1,285 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'Information Link'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl#getFrom From}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl.InformationLinkImpl#getTo To}
  • + *
+ * + * @generated + */ +public class InformationLinkImpl extends MinimalEObjectImpl.Container implements InformationLink { + /** + * The cached value of the '{@link #getTo() To}' reference. + * + * + * @see #getTo() + * @generated + * @ordered + */ + protected FunctionalInput to; + + /** + * + * + * @generated + */ + protected InformationLinkImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return famPackage.Literals.INFORMATION_LINK; + } + + /** + * + * + * @generated + */ + public FunctionalOutput getFrom() { + if (eContainerFeatureID() != famPackage.INFORMATION_LINK__FROM) return null; + return (FunctionalOutput)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetFrom(FunctionalOutput newFrom, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newFrom, famPackage.INFORMATION_LINK__FROM, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setFrom(FunctionalOutput newFrom) { + if (newFrom != eInternalContainer() || (eContainerFeatureID() != famPackage.INFORMATION_LINK__FROM && newFrom != null)) { + if (EcoreUtil.isAncestor(this, newFrom)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newFrom != null) + msgs = ((InternalEObject)newFrom).eInverseAdd(this, famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS, FunctionalOutput.class, msgs); + msgs = basicSetFrom(newFrom, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.INFORMATION_LINK__FROM, newFrom, newFrom)); + } + + /** + * + * + * @generated + */ + public FunctionalInput getTo() { + if (to != null && to.eIsProxy()) { + InternalEObject oldTo = (InternalEObject)to; + to = (FunctionalInput)eResolveProxy(oldTo); + if (to != oldTo) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, famPackage.INFORMATION_LINK__TO, oldTo, to)); + } + } + return to; + } + + /** + * + * + * @generated + */ + public FunctionalInput basicGetTo() { + return to; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetTo(FunctionalInput newTo, NotificationChain msgs) { + FunctionalInput oldTo = to; + to = newTo; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, famPackage.INFORMATION_LINK__TO, oldTo, newTo); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setTo(FunctionalInput newTo) { + if (newTo != to) { + NotificationChain msgs = null; + if (to != null) + msgs = ((InternalEObject)to).eInverseRemove(this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, FunctionalInput.class, msgs); + if (newTo != null) + msgs = ((InternalEObject)newTo).eInverseAdd(this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, FunctionalInput.class, msgs); + msgs = basicSetTo(newTo, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, famPackage.INFORMATION_LINK__TO, newTo, newTo)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.INFORMATION_LINK__FROM: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetFrom((FunctionalOutput)otherEnd, msgs); + case famPackage.INFORMATION_LINK__TO: + if (to != null) + msgs = ((InternalEObject)to).eInverseRemove(this, famPackage.FUNCTIONAL_INPUT__INCOMING_LINKS, FunctionalInput.class, msgs); + return basicSetTo((FunctionalInput)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case famPackage.INFORMATION_LINK__FROM: + return basicSetFrom(null, msgs); + case famPackage.INFORMATION_LINK__TO: + return basicSetTo(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case famPackage.INFORMATION_LINK__FROM: + return eInternalContainer().eInverseRemove(this, famPackage.FUNCTIONAL_OUTPUT__OUTGOING_LINKS, FunctionalOutput.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case famPackage.INFORMATION_LINK__FROM: + return getFrom(); + case famPackage.INFORMATION_LINK__TO: + if (resolve) return getTo(); + return basicGetTo(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case famPackage.INFORMATION_LINK__FROM: + setFrom((FunctionalOutput)newValue); + return; + case famPackage.INFORMATION_LINK__TO: + setTo((FunctionalInput)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case famPackage.INFORMATION_LINK__FROM: + setFrom((FunctionalOutput)null); + return; + case famPackage.INFORMATION_LINK__TO: + setTo((FunctionalInput)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case famPackage.INFORMATION_LINK__FROM: + return getFrom() != null; + case famPackage.INFORMATION_LINK__TO: + return to != null; + } + return super.eIsSet(featureID); + } + +} //InformationLinkImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java new file mode 100644 index 000000000..5c2a9c510 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famFactoryImpl.java @@ -0,0 +1,219 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.impl.EFactoryImpl; +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famFactory; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class famFactoryImpl extends EFactoryImpl implements famFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static famFactory init() { + try { + famFactory thefamFactory = (famFactory)EPackage.Registry.INSTANCE.getEFactory(famPackage.eNS_URI); + if (thefamFactory != null) { + return thefamFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new famFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public famFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL: return createFunctionalArchitectureModel(); + case famPackage.FUNCTION: return createFunction(); + case famPackage.FAM_TERMINATOR: return createFAMTerminator(); + case famPackage.INFORMATION_LINK: return createInformationLink(); + case famPackage.FUNCTIONAL_INTERFACE: return createFunctionalInterface(); + case famPackage.FUNCTIONAL_INPUT: return createFunctionalInput(); + case famPackage.FUNCTIONAL_OUTPUT: return createFunctionalOutput(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public Object createFromString(EDataType eDataType, String initialValue) { + switch (eDataType.getClassifierID()) { + case famPackage.FUNCTION_TYPE: + return createFunctionTypeFromString(eDataType, initialValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public String convertToString(EDataType eDataType, Object instanceValue) { + switch (eDataType.getClassifierID()) { + case famPackage.FUNCTION_TYPE: + return convertFunctionTypeToString(eDataType, instanceValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public FunctionalArchitectureModel createFunctionalArchitectureModel() { + FunctionalArchitectureModelImpl functionalArchitectureModel = new FunctionalArchitectureModelImpl(); + return functionalArchitectureModel; + } + + /** + * + * + * @generated + */ + public Function createFunction() { + FunctionImpl function = new FunctionImpl(); + return function; + } + + /** + * + * + * @generated + */ + public FAMTerminator createFAMTerminator() { + FAMTerminatorImpl famTerminator = new FAMTerminatorImpl(); + return famTerminator; + } + + /** + * + * + * @generated + */ + public InformationLink createInformationLink() { + InformationLinkImpl informationLink = new InformationLinkImpl(); + return informationLink; + } + + /** + * + * + * @generated + */ + public FunctionalInterface createFunctionalInterface() { + FunctionalInterfaceImpl functionalInterface = new FunctionalInterfaceImpl(); + return functionalInterface; + } + + /** + * + * + * @generated + */ + public FunctionalInput createFunctionalInput() { + FunctionalInputImpl functionalInput = new FunctionalInputImpl(); + return functionalInput; + } + + /** + * + * + * @generated + */ + public FunctionalOutput createFunctionalOutput() { + FunctionalOutputImpl functionalOutput = new FunctionalOutputImpl(); + return functionalOutput; + } + + /** + * + * + * @generated + */ + public FunctionType createFunctionTypeFromString(EDataType eDataType, String initialValue) { + FunctionType result = FunctionType.get(initialValue); + if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); + return result; + } + + /** + * + * + * @generated + */ + public String convertFunctionTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated + */ + public famPackage getfamPackage() { + return (famPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static famPackage getPackage() { + return famPackage.eINSTANCE; + } + +} //famFactoryImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java new file mode 100644 index 000000000..e928e04e6 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/impl/famPackageImpl.java @@ -0,0 +1,574 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famFactory; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class famPackageImpl extends EPackageImpl implements famPackage { + /** + * + * + * @generated + */ + private EClass functionalElementEClass = null; + + /** + * + * + * @generated + */ + private EClass functionalArchitectureModelEClass = null; + + /** + * + * + * @generated + */ + private EClass functionEClass = null; + + /** + * + * + * @generated + */ + private EClass famTerminatorEClass = null; + + /** + * + * + * @generated + */ + private EClass informationLinkEClass = null; + + /** + * + * + * @generated + */ + private EClass functionalInterfaceEClass = null; + + /** + * + * + * @generated + */ + private EClass functionalInputEClass = null; + + /** + * + * + * @generated + */ + private EClass functionalOutputEClass = null; + + /** + * + * + * @generated + */ + private EClass functionalDataEClass = null; + + /** + * + * + * @generated + */ + private EEnum functionTypeEEnum = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage#eNS_URI + * @see #init() + * @generated + */ + private famPackageImpl() { + super(eNS_URI, famFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link famPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static famPackage init() { + if (isInited) return (famPackage)EPackage.Registry.INSTANCE.getEPackage(famPackage.eNS_URI); + + // Obtain or create and register package + famPackageImpl thefamPackage = (famPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof famPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new famPackageImpl()); + + isInited = true; + + // Create package meta-data objects + thefamPackage.createPackageContents(); + + // Initialize created meta-data + thefamPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + thefamPackage.freeze(); + + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(famPackage.eNS_URI, thefamPackage); + return thefamPackage; + } + + /** + * + * + * @generated + */ + public EClass getFunctionalElement() { + return functionalElementEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunctionalElement_Interface() { + return (EReference)functionalElementEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getFunctionalElement_Model() { + return (EReference)functionalElementEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getFunctionalElement_Parent() { + return (EReference)functionalElementEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EClass getFunctionalArchitectureModel() { + return functionalArchitectureModelEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunctionalArchitectureModel_RootElements() { + return (EReference)functionalArchitectureModelEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getFunction() { + return functionEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunction_SubElements() { + return (EReference)functionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getFunction_Type() { + return (EAttribute)functionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getFAMTerminator() { + return famTerminatorEClass; + } + + /** + * + * + * @generated + */ + public EReference getFAMTerminator_Data() { + return (EReference)famTerminatorEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getInformationLink() { + return informationLinkEClass; + } + + /** + * + * + * @generated + */ + public EReference getInformationLink_From() { + return (EReference)informationLinkEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getInformationLink_To() { + return (EReference)informationLinkEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getFunctionalInterface() { + return functionalInterfaceEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunctionalInterface_Data() { + return (EReference)functionalInterfaceEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getFunctionalInterface_Element() { + return (EReference)functionalInterfaceEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getFunctionalInput() { + return functionalInputEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunctionalInput_IncomingLinks() { + return (EReference)functionalInputEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getFunctionalOutput() { + return functionalOutputEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunctionalOutput_OutgoingLinks() { + return (EReference)functionalOutputEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getFunctionalData() { + return functionalDataEClass; + } + + /** + * + * + * @generated + */ + public EReference getFunctionalData_Terminator() { + return (EReference)functionalDataEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getFunctionalData_Interface() { + return (EReference)functionalDataEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EEnum getFunctionType() { + return functionTypeEEnum; + } + + /** + * + * + * @generated + */ + public famFactory getfamFactory() { + return (famFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + functionalElementEClass = createEClass(FUNCTIONAL_ELEMENT); + createEReference(functionalElementEClass, FUNCTIONAL_ELEMENT__INTERFACE); + createEReference(functionalElementEClass, FUNCTIONAL_ELEMENT__MODEL); + createEReference(functionalElementEClass, FUNCTIONAL_ELEMENT__PARENT); + + functionalArchitectureModelEClass = createEClass(FUNCTIONAL_ARCHITECTURE_MODEL); + createEReference(functionalArchitectureModelEClass, FUNCTIONAL_ARCHITECTURE_MODEL__ROOT_ELEMENTS); + + functionEClass = createEClass(FUNCTION); + createEReference(functionEClass, FUNCTION__SUB_ELEMENTS); + createEAttribute(functionEClass, FUNCTION__TYPE); + + famTerminatorEClass = createEClass(FAM_TERMINATOR); + createEReference(famTerminatorEClass, FAM_TERMINATOR__DATA); + + informationLinkEClass = createEClass(INFORMATION_LINK); + createEReference(informationLinkEClass, INFORMATION_LINK__FROM); + createEReference(informationLinkEClass, INFORMATION_LINK__TO); + + functionalInterfaceEClass = createEClass(FUNCTIONAL_INTERFACE); + createEReference(functionalInterfaceEClass, FUNCTIONAL_INTERFACE__DATA); + createEReference(functionalInterfaceEClass, FUNCTIONAL_INTERFACE__ELEMENT); + + functionalInputEClass = createEClass(FUNCTIONAL_INPUT); + createEReference(functionalInputEClass, FUNCTIONAL_INPUT__INCOMING_LINKS); + + functionalOutputEClass = createEClass(FUNCTIONAL_OUTPUT); + createEReference(functionalOutputEClass, FUNCTIONAL_OUTPUT__OUTGOING_LINKS); + + functionalDataEClass = createEClass(FUNCTIONAL_DATA); + createEReference(functionalDataEClass, FUNCTIONAL_DATA__TERMINATOR); + createEReference(functionalDataEClass, FUNCTIONAL_DATA__INTERFACE); + + // Create enums + functionTypeEEnum = createEEnum(FUNCTION_TYPE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + functionEClass.getESuperTypes().add(this.getFunctionalElement()); + functionalInputEClass.getESuperTypes().add(this.getFunctionalData()); + functionalOutputEClass.getESuperTypes().add(this.getFunctionalData()); + + // Initialize classes, features, and operations; add parameters + initEClass(functionalElementEClass, FunctionalElement.class, "FunctionalElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalElement_Interface(), this.getFunctionalInterface(), this.getFunctionalInterface_Element(), "interface", null, 0, 1, FunctionalElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFunctionalElement_Model(), this.getFunctionalArchitectureModel(), null, "model", null, 1, 1, FunctionalElement.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getFunctionalElement_Parent(), this.getFunction(), this.getFunction_SubElements(), "parent", null, 0, 1, FunctionalElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(functionalArchitectureModelEClass, FunctionalArchitectureModel.class, "FunctionalArchitectureModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalArchitectureModel_RootElements(), this.getFunctionalElement(), null, "rootElements", null, 0, -1, FunctionalArchitectureModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(functionEClass, Function.class, "Function", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunction_SubElements(), this.getFunctionalElement(), this.getFunctionalElement_Parent(), "subElements", null, 0, -1, Function.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getFunction_Type(), this.getFunctionType(), "type", null, 1, 1, Function.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + initEClass(famTerminatorEClass, FAMTerminator.class, "FAMTerminator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFAMTerminator_Data(), this.getFunctionalData(), this.getFunctionalData_Terminator(), "data", null, 0, 1, FAMTerminator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(informationLinkEClass, InformationLink.class, "InformationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getInformationLink_From(), this.getFunctionalOutput(), this.getFunctionalOutput_OutgoingLinks(), "from", null, 0, 1, InformationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getInformationLink_To(), this.getFunctionalInput(), this.getFunctionalInput_IncomingLinks(), "to", null, 1, 1, InformationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(functionalInterfaceEClass, FunctionalInterface.class, "FunctionalInterface", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalInterface_Data(), this.getFunctionalData(), this.getFunctionalData_Interface(), "data", null, 0, -1, FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFunctionalInterface_Element(), this.getFunctionalElement(), this.getFunctionalElement_Interface(), "element", null, 0, 1, FunctionalInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(functionalInputEClass, FunctionalInput.class, "FunctionalInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalInput_IncomingLinks(), this.getInformationLink(), this.getInformationLink_To(), "IncomingLinks", null, 0, -1, FunctionalInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(functionalOutputEClass, FunctionalOutput.class, "FunctionalOutput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalOutput_OutgoingLinks(), this.getInformationLink(), this.getInformationLink_From(), "outgoingLinks", null, 0, -1, FunctionalOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(functionalDataEClass, FunctionalData.class, "FunctionalData", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFunctionalData_Terminator(), this.getFAMTerminator(), this.getFAMTerminator_Data(), "terminator", null, 0, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFunctionalData_Interface(), this.getFunctionalInterface(), this.getFunctionalInterface_Data(), "interface", null, 0, 1, FunctionalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + // Initialize enums and add enum literals + initEEnum(functionTypeEEnum, FunctionType.class, "FunctionType"); + addEEnumLiteral(functionTypeEEnum, FunctionType.ROOT); + addEEnumLiteral(functionTypeEEnum, FunctionType.INTERMEDIATE); + addEEnumLiteral(functionTypeEEnum, FunctionType.LEAF); + + // Create resource + createResource(eNS_URI); + + // Create annotations + // http://www.eclipse.org/emf/2002/Ecore + createEcoreAnnotations(); + // org.eclipse.viatra.query.querybasedfeature + createOrgAnnotations(); + } + + /** + * Initializes the annotations for http://www.eclipse.org/emf/2002/Ecore. + * + * + * @generated + */ + protected void createEcoreAnnotations() { + String source = "http://www.eclipse.org/emf/2002/Ecore"; + addAnnotation + (this, + source, + new String[] { + "settingDelegates", "org.eclipse.viatra.query.querybasedfeature" + }); + } + + /** + * Initializes the annotations for org.eclipse.viatra.query.querybasedfeature. + * + * + * @generated + */ + protected void createOrgAnnotations() { + String source = "org.eclipse.viatra.query.querybasedfeature"; + addAnnotation + (getFunctionalElement_Model(), + source, + new String[] { + "patternFQN", "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.model" + }); + addAnnotation + (getFunction_Type(), + source, + new String[] { + "patternFQN", "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type" + }); + } + +} //famPackageImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java new file mode 100644 index 000000000..b5a4e37b5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famAdapterFactory.java @@ -0,0 +1,271 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; +import org.eclipse.emf.ecore.EObject; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage + * @generated + */ +public class famAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static famPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public famAdapterFactory() { + if (modelPackage == null) { + modelPackage = famPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected famSwitch modelSwitch = + new famSwitch() { + @Override + public Adapter caseFunctionalElement(FunctionalElement object) { + return createFunctionalElementAdapter(); + } + @Override + public Adapter caseFunctionalArchitectureModel(FunctionalArchitectureModel object) { + return createFunctionalArchitectureModelAdapter(); + } + @Override + public Adapter caseFunction(Function object) { + return createFunctionAdapter(); + } + @Override + public Adapter caseFAMTerminator(FAMTerminator object) { + return createFAMTerminatorAdapter(); + } + @Override + public Adapter caseInformationLink(InformationLink object) { + return createInformationLinkAdapter(); + } + @Override + public Adapter caseFunctionalInterface(FunctionalInterface object) { + return createFunctionalInterfaceAdapter(); + } + @Override + public Adapter caseFunctionalInput(FunctionalInput object) { + return createFunctionalInputAdapter(); + } + @Override + public Adapter caseFunctionalOutput(FunctionalOutput object) { + return createFunctionalOutputAdapter(); + } + @Override + public Adapter caseFunctionalData(FunctionalData object) { + return createFunctionalDataAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement Functional Element}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement + * @generated + */ + public Adapter createFunctionalElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel Functional Architecture Model}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel + * @generated + */ + public Adapter createFunctionalArchitectureModelAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function Function}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function + * @generated + */ + public Adapter createFunctionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator FAM Terminator}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator + * @generated + */ + public Adapter createFAMTerminatorAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink Information Link}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink + * @generated + */ + public Adapter createInformationLinkAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface Functional Interface}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface + * @generated + */ + public Adapter createFunctionalInterfaceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput Functional Input}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput + * @generated + */ + public Adapter createFunctionalInputAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput Functional Output}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput + * @generated + */ + public Adapter createFunctionalOutputAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData Functional Data}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData + * @generated + */ + public Adapter createFunctionalDataAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //famAdapterFactory diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java new file mode 100644 index 000000000..979bd3e95 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/fam/util/famSwitch.java @@ -0,0 +1,289 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.fam.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.util.Switch; + +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FAMTerminator; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.Function; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalArchitectureModel; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalData; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalInterface; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionalOutput; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.InformationLink; +import ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.fam.famPackage + * @generated + */ +public class famSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static famPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public famSwitch() { + if (modelPackage == null) { + modelPackage = famPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case famPackage.FUNCTIONAL_ELEMENT: { + FunctionalElement functionalElement = (FunctionalElement)theEObject; + T result = caseFunctionalElement(functionalElement); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FUNCTIONAL_ARCHITECTURE_MODEL: { + FunctionalArchitectureModel functionalArchitectureModel = (FunctionalArchitectureModel)theEObject; + T result = caseFunctionalArchitectureModel(functionalArchitectureModel); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FUNCTION: { + Function function = (Function)theEObject; + T result = caseFunction(function); + if (result == null) result = caseFunctionalElement(function); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FAM_TERMINATOR: { + FAMTerminator famTerminator = (FAMTerminator)theEObject; + T result = caseFAMTerminator(famTerminator); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.INFORMATION_LINK: { + InformationLink informationLink = (InformationLink)theEObject; + T result = caseInformationLink(informationLink); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FUNCTIONAL_INTERFACE: { + FunctionalInterface functionalInterface = (FunctionalInterface)theEObject; + T result = caseFunctionalInterface(functionalInterface); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FUNCTIONAL_INPUT: { + FunctionalInput functionalInput = (FunctionalInput)theEObject; + T result = caseFunctionalInput(functionalInput); + if (result == null) result = caseFunctionalData(functionalInput); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FUNCTIONAL_OUTPUT: { + FunctionalOutput functionalOutput = (FunctionalOutput)theEObject; + T result = caseFunctionalOutput(functionalOutput); + if (result == null) result = caseFunctionalData(functionalOutput); + if (result == null) result = defaultCase(theEObject); + return result; + } + case famPackage.FUNCTIONAL_DATA: { + FunctionalData functionalData = (FunctionalData)theEObject; + T result = caseFunctionalData(functionalData); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Functional Element'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Functional Element'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunctionalElement(FunctionalElement object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Functional Architecture Model'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Functional Architecture Model'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunctionalArchitectureModel(FunctionalArchitectureModel object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Function'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Function'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunction(Function object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'FAM Terminator'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'FAM Terminator'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFAMTerminator(FAMTerminator object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Information Link'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Information Link'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseInformationLink(InformationLink object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Functional Interface'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Functional Interface'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunctionalInterface(FunctionalInterface object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Functional Input'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Functional Input'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunctionalInput(FunctionalInput object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Functional Output'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Functional Output'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunctionalOutput(FunctionalOutput object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Functional Data'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Functional Data'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFunctionalData(FunctionalData object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //famSwitch diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java new file mode 100644 index 000000000..032900973 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Dir.java @@ -0,0 +1,42 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Dir'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents Contents}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getDir() + * @model + * @generated + */ +public interface Dir extends FSObject { + /** + * Returns the value of the 'Contents' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent Parent}'. + * + *

+ * If the meaning of the 'Contents' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Contents' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getDir_Contents() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent + * @model opposite="parent" containment="true" + * @generated + */ + EList getContents(); + +} // Dir diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java new file mode 100644 index 000000000..87e4e4df5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FSObject.java @@ -0,0 +1,52 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'FS Object'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent Parent}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFSObject() + * @model abstract="true" + * @generated + */ +public interface FSObject extends EObject { + /** + * Returns the value of the 'Parent' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents Contents}'. + * + *

+ * If the meaning of the 'Parent' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Parent' container reference. + * @see #setParent(Dir) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFSObject_Parent() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents + * @model opposite="contents" transient="false" + * @generated + */ + Dir getParent(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent Parent}' container reference. + * + * + * @param value the new value of the 'Parent' container reference. + * @see #getParent() + * @generated + */ + void setParent(Dir value); + +} // FSObject diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java new file mode 100644 index 000000000..f829076c9 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/File.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + + +/** + * + * A representation of the model object 'File'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFile() + * @model + * @generated + */ +public interface File extends FSObject { +} // File diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java new file mode 100644 index 000000000..d8ca61ea1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/FileSystem.java @@ -0,0 +1,69 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'File System'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot Root}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getLive Live}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem() + * @model + * @generated + */ +public interface FileSystem extends EObject { + /** + * Returns the value of the 'Root' containment reference. + * + *

+ * If the meaning of the 'Root' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Root' containment reference. + * @see #setRoot(Dir) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem_Root() + * @model containment="true" required="true" + * @generated + */ + Dir getRoot(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot Root}' containment reference. + * + * + * @param value the new value of the 'Root' containment reference. + * @see #getRoot() + * @generated + */ + void setRoot(Dir value); + + /** + * Returns the value of the 'Live' reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject}. + * + *

+ * If the meaning of the 'Live' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Live' reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getFileSystem_Live() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList getLive(); + +} // FileSystem diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java new file mode 100644 index 000000000..e75bd41ae --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/Model.java @@ -0,0 +1,69 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Model'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems Filesystems}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getOtherFSObjects Other FS Objects}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getModel() + * @model + * @generated + */ +public interface Model extends EObject { + /** + * Returns the value of the 'Filesystems' containment reference. + * + *

+ * If the meaning of the 'Filesystems' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Filesystems' containment reference. + * @see #setFilesystems(FileSystem) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getModel_Filesystems() + * @model containment="true" required="true" + * @generated + */ + FileSystem getFilesystems(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems Filesystems}' containment reference. + * + * + * @param value the new value of the 'Filesystems' containment reference. + * @see #getFilesystems() + * @generated + */ + void setFilesystems(FileSystem value); + + /** + * Returns the value of the 'Other FS Objects' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject}. + * + *

+ * If the meaning of the 'Other FS Objects' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Other FS Objects' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#getModel_OtherFSObjects() + * @model containment="true" + * @generated + */ + EList getOtherFSObjects(); + +} // Model diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java new file mode 100644 index 000000000..401becfb0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemFactory.java @@ -0,0 +1,69 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage + * @generated + */ +public interface filesystemFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + filesystemFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemFactoryImpl.init(); + + /** + * Returns a new object of class 'File System'. + * + * + * @return a new object of class 'File System'. + * @generated + */ + FileSystem createFileSystem(); + + /** + * Returns a new object of class 'Dir'. + * + * + * @return a new object of class 'Dir'. + * @generated + */ + Dir createDir(); + + /** + * Returns a new object of class 'File'. + * + * + * @return a new object of class 'File'. + * @generated + */ + File createFile(); + + /** + * Returns a new object of class 'Model'. + * + * + * @return a new object of class 'Model'. + * @generated + */ + Model createModel(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + filesystemPackage getfilesystemPackage(); + +} //filesystemFactory diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java new file mode 100644 index 000000000..08133f969 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/filesystemPackage.java @@ -0,0 +1,511 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemFactory + * @model kind="package" + * annotation="http://www.eclipse.org/emf/2002/Ecore settingDelegates='org.eclipse.viatra.query.querybasedfeature'" + * @generated + */ +public interface filesystemPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "filesystem"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "FileSystemMetamodel"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "filesystem"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + filesystemPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl File System}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFileSystem() + * @generated + */ + int FILE_SYSTEM = 0; + + /** + * The feature id for the 'Root' containment reference. + * + * + * @generated + * @ordered + */ + int FILE_SYSTEM__ROOT = 0; + + /** + * The feature id for the 'Live' reference list. + * + * + * @generated + * @ordered + */ + int FILE_SYSTEM__LIVE = 1; + + /** + * The number of structural features of the 'File System' class. + * + * + * @generated + * @ordered + */ + int FILE_SYSTEM_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'File System' class. + * + * + * @generated + * @ordered + */ + int FILE_SYSTEM_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl FS Object}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFSObject() + * @generated + */ + int FS_OBJECT = 1; + + /** + * The feature id for the 'Parent' container reference. + * + * + * @generated + * @ordered + */ + int FS_OBJECT__PARENT = 0; + + /** + * The number of structural features of the 'FS Object' class. + * + * + * @generated + * @ordered + */ + int FS_OBJECT_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'FS Object' class. + * + * + * @generated + * @ordered + */ + int FS_OBJECT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl Dir}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getDir() + * @generated + */ + int DIR = 2; + + /** + * The feature id for the 'Parent' container reference. + * + * + * @generated + * @ordered + */ + int DIR__PARENT = FS_OBJECT__PARENT; + + /** + * The feature id for the 'Contents' containment reference list. + * + * + * @generated + * @ordered + */ + int DIR__CONTENTS = FS_OBJECT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Dir' class. + * + * + * @generated + * @ordered + */ + int DIR_FEATURE_COUNT = FS_OBJECT_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'Dir' class. + * + * + * @generated + * @ordered + */ + int DIR_OPERATION_COUNT = FS_OBJECT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl File}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFile() + * @generated + */ + int FILE = 3; + + /** + * The feature id for the 'Parent' container reference. + * + * + * @generated + * @ordered + */ + int FILE__PARENT = FS_OBJECT__PARENT; + + /** + * The number of structural features of the 'File' class. + * + * + * @generated + * @ordered + */ + int FILE_FEATURE_COUNT = FS_OBJECT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'File' class. + * + * + * @generated + * @ordered + */ + int FILE_OPERATION_COUNT = FS_OBJECT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getModel() + * @generated + */ + int MODEL = 4; + + /** + * The feature id for the 'Filesystems' containment reference. + * + * + * @generated + * @ordered + */ + int MODEL__FILESYSTEMS = 0; + + /** + * The feature id for the 'Other FS Objects' containment reference list. + * + * + * @generated + * @ordered + */ + int MODEL__OTHER_FS_OBJECTS = 1; + + /** + * The number of structural features of the 'Model' class. + * + * + * @generated + * @ordered + */ + int MODEL_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Model' class. + * + * + * @generated + * @ordered + */ + int MODEL_OPERATION_COUNT = 0; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem File System}'. + * + * + * @return the meta object for class 'File System'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem + * @generated + */ + EClass getFileSystem(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot Root}'. + * + * + * @return the meta object for the containment reference 'Root'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getRoot() + * @see #getFileSystem() + * @generated + */ + EReference getFileSystem_Root(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getLive Live}'. + * + * + * @return the meta object for the reference list 'Live'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem#getLive() + * @see #getFileSystem() + * @generated + */ + EReference getFileSystem_Live(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject FS Object}'. + * + * + * @return the meta object for class 'FS Object'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject + * @generated + */ + EClass getFSObject(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent Parent}'. + * + * + * @return the meta object for the container reference 'Parent'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject#getParent() + * @see #getFSObject() + * @generated + */ + EReference getFSObject_Parent(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir Dir}'. + * + * + * @return the meta object for class 'Dir'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir + * @generated + */ + EClass getDir(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents Contents}'. + * + * + * @return the meta object for the containment reference list 'Contents'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir#getContents() + * @see #getDir() + * @generated + */ + EReference getDir_Contents(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File File}'. + * + * + * @return the meta object for class 'File'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File + * @generated + */ + EClass getFile(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model Model}'. + * + * + * @return the meta object for class 'Model'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model + * @generated + */ + EClass getModel(); + + /** + * Returns the meta object for the containment reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems Filesystems}'. + * + * + * @return the meta object for the containment reference 'Filesystems'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getFilesystems() + * @see #getModel() + * @generated + */ + EReference getModel_Filesystems(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getOtherFSObjects Other FS Objects}'. + * + * + * @return the meta object for the containment reference list 'Other FS Objects'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model#getOtherFSObjects() + * @see #getModel() + * @generated + */ + EReference getModel_OtherFSObjects(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + filesystemFactory getfilesystemFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl File System}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFileSystem() + * @generated + */ + EClass FILE_SYSTEM = eINSTANCE.getFileSystem(); + + /** + * The meta object literal for the 'Root' containment reference feature. + * + * + * @generated + */ + EReference FILE_SYSTEM__ROOT = eINSTANCE.getFileSystem_Root(); + + /** + * The meta object literal for the 'Live' reference list feature. + * + * + * @generated + */ + EReference FILE_SYSTEM__LIVE = eINSTANCE.getFileSystem_Live(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl FS Object}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFSObject() + * @generated + */ + EClass FS_OBJECT = eINSTANCE.getFSObject(); + + /** + * The meta object literal for the 'Parent' container reference feature. + * + * + * @generated + */ + EReference FS_OBJECT__PARENT = eINSTANCE.getFSObject_Parent(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl Dir}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getDir() + * @generated + */ + EClass DIR = eINSTANCE.getDir(); + + /** + * The meta object literal for the 'Contents' containment reference list feature. + * + * + * @generated + */ + EReference DIR__CONTENTS = eINSTANCE.getDir_Contents(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl File}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getFile() + * @generated + */ + EClass FILE = eINSTANCE.getFile(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl Model}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.filesystemPackageImpl#getModel() + * @generated + */ + EClass MODEL = eINSTANCE.getModel(); + + /** + * The meta object literal for the 'Filesystems' containment reference feature. + * + * + * @generated + */ + EReference MODEL__FILESYSTEMS = eINSTANCE.getModel_Filesystems(); + + /** + * The meta object literal for the 'Other FS Objects' containment reference list feature. + * + * + * @generated + */ + EReference MODEL__OTHER_FS_OBJECTS = eINSTANCE.getModel_OtherFSObjects(); + + } + +} //filesystemPackage diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java new file mode 100644 index 000000000..2e2fbcba2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/DirImpl.java @@ -0,0 +1,165 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Dir'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.DirImpl#getContents Contents}
  • + *
+ * + * @generated + */ +public class DirImpl extends FSObjectImpl implements Dir { + /** + * The cached value of the '{@link #getContents() Contents}' containment reference list. + * + * + * @see #getContents() + * @generated + * @ordered + */ + protected EList contents; + + /** + * + * + * @generated + */ + protected DirImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return filesystemPackage.Literals.DIR; + } + + /** + * + * + * @generated + */ + public EList getContents() { + if (contents == null) { + contents = new EObjectContainmentWithInverseEList(FSObject.class, this, filesystemPackage.DIR__CONTENTS, filesystemPackage.FS_OBJECT__PARENT); + } + return contents; + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.DIR__CONTENTS: + return ((InternalEList)(InternalEList)getContents()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.DIR__CONTENTS: + return ((InternalEList)getContents()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case filesystemPackage.DIR__CONTENTS: + return getContents(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case filesystemPackage.DIR__CONTENTS: + getContents().clear(); + getContents().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case filesystemPackage.DIR__CONTENTS: + getContents().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case filesystemPackage.DIR__CONTENTS: + return contents != null && !contents.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //DirImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java new file mode 100644 index 000000000..25ea1fbbd --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FSObjectImpl.java @@ -0,0 +1,196 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'FS Object'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FSObjectImpl#getParent Parent}
  • + *
+ * + * @generated + */ +public abstract class FSObjectImpl extends MinimalEObjectImpl.Container implements FSObject { + /** + * + * + * @generated + */ + protected FSObjectImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return filesystemPackage.Literals.FS_OBJECT; + } + + /** + * + * + * @generated + */ + public Dir getParent() { + if (eContainerFeatureID() != filesystemPackage.FS_OBJECT__PARENT) return null; + return (Dir)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetParent(Dir newParent, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newParent, filesystemPackage.FS_OBJECT__PARENT, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setParent(Dir newParent) { + if (newParent != eInternalContainer() || (eContainerFeatureID() != filesystemPackage.FS_OBJECT__PARENT && newParent != null)) { + if (EcoreUtil.isAncestor(this, newParent)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newParent != null) + msgs = ((InternalEObject)newParent).eInverseAdd(this, filesystemPackage.DIR__CONTENTS, Dir.class, msgs); + msgs = basicSetParent(newParent, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.FS_OBJECT__PARENT, newParent, newParent)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.FS_OBJECT__PARENT: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetParent((Dir)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.FS_OBJECT__PARENT: + return basicSetParent(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case filesystemPackage.FS_OBJECT__PARENT: + return eInternalContainer().eInverseRemove(this, filesystemPackage.DIR__CONTENTS, Dir.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case filesystemPackage.FS_OBJECT__PARENT: + return getParent(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case filesystemPackage.FS_OBJECT__PARENT: + setParent((Dir)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case filesystemPackage.FS_OBJECT__PARENT: + setParent((Dir)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case filesystemPackage.FS_OBJECT__PARENT: + return getParent() != null; + } + return super.eIsSet(featureID); + } + +} //FSObjectImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java new file mode 100644 index 000000000..29eb47fd8 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'File'. + * + * + * @generated + */ +public class FileImpl extends FSObjectImpl implements File { + /** + * + * + * @generated + */ + protected FileImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return filesystemPackage.Literals.FILE; + } + +} //FileImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java new file mode 100644 index 000000000..b5ef2b66a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/FileSystemImpl.java @@ -0,0 +1,198 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +/** + * + * An implementation of the model object 'File System'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl#getRoot Root}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.FileSystemImpl#getLive Live}
  • + *
+ * + * @generated + */ +public class FileSystemImpl extends MinimalEObjectImpl.Container implements FileSystem { + /** + * The cached value of the '{@link #getRoot() Root}' containment reference. + * + * + * @see #getRoot() + * @generated + * @ordered + */ + protected Dir root; + + /** + * + * + * @generated + */ + protected FileSystemImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return filesystemPackage.Literals.FILE_SYSTEM; + } + + /** + * + * + * @generated + */ + public Dir getRoot() { + return root; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetRoot(Dir newRoot, NotificationChain msgs) { + Dir oldRoot = root; + root = newRoot; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, filesystemPackage.FILE_SYSTEM__ROOT, oldRoot, newRoot); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setRoot(Dir newRoot) { + if (newRoot != root) { + NotificationChain msgs = null; + if (root != null) + msgs = ((InternalEObject)root).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.FILE_SYSTEM__ROOT, null, msgs); + if (newRoot != null) + msgs = ((InternalEObject)newRoot).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.FILE_SYSTEM__ROOT, null, msgs); + msgs = basicSetRoot(newRoot, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.FILE_SYSTEM__ROOT, newRoot, newRoot)); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + public EList getLive() { + // TODO: implement this method to return the 'Live' reference list + // Ensure that you remove @generated or mark it @generated NOT + // The list is expected to implement org.eclipse.emf.ecore.util.InternalEList and org.eclipse.emf.ecore.EStructuralFeature.Setting + // so it's likely that an appropriate subclass of org.eclipse.emf.ecore.util.EcoreEList should be used. + throw new UnsupportedOperationException(); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + return basicSetRoot(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + return getRoot(); + case filesystemPackage.FILE_SYSTEM__LIVE: + return getLive(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + setRoot((Dir)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + setRoot((Dir)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case filesystemPackage.FILE_SYSTEM__ROOT: + return root != null; + case filesystemPackage.FILE_SYSTEM__LIVE: + return !getLive().isEmpty(); + } + return super.eIsSet(featureID); + } + +} //FileSystemImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java new file mode 100644 index 000000000..a21f5b6e8 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/ModelImpl.java @@ -0,0 +1,221 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Model'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl#getFilesystems Filesystems}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl.ModelImpl#getOtherFSObjects Other FS Objects}
  • + *
+ * + * @generated + */ +public class ModelImpl extends MinimalEObjectImpl.Container implements Model { + /** + * The cached value of the '{@link #getFilesystems() Filesystems}' containment reference. + * + * + * @see #getFilesystems() + * @generated + * @ordered + */ + protected FileSystem filesystems; + + /** + * The cached value of the '{@link #getOtherFSObjects() Other FS Objects}' containment reference list. + * + * + * @see #getOtherFSObjects() + * @generated + * @ordered + */ + protected EList otherFSObjects; + + /** + * + * + * @generated + */ + protected ModelImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return filesystemPackage.Literals.MODEL; + } + + /** + * + * + * @generated + */ + public FileSystem getFilesystems() { + return filesystems; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetFilesystems(FileSystem newFilesystems, NotificationChain msgs) { + FileSystem oldFilesystems = filesystems; + filesystems = newFilesystems; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, filesystemPackage.MODEL__FILESYSTEMS, oldFilesystems, newFilesystems); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setFilesystems(FileSystem newFilesystems) { + if (newFilesystems != filesystems) { + NotificationChain msgs = null; + if (filesystems != null) + msgs = ((InternalEObject)filesystems).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.MODEL__FILESYSTEMS, null, msgs); + if (newFilesystems != null) + msgs = ((InternalEObject)newFilesystems).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - filesystemPackage.MODEL__FILESYSTEMS, null, msgs); + msgs = basicSetFilesystems(newFilesystems, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, filesystemPackage.MODEL__FILESYSTEMS, newFilesystems, newFilesystems)); + } + + /** + * + * + * @generated + */ + public EList getOtherFSObjects() { + if (otherFSObjects == null) { + otherFSObjects = new EObjectContainmentEList(FSObject.class, this, filesystemPackage.MODEL__OTHER_FS_OBJECTS); + } + return otherFSObjects; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case filesystemPackage.MODEL__FILESYSTEMS: + return basicSetFilesystems(null, msgs); + case filesystemPackage.MODEL__OTHER_FS_OBJECTS: + return ((InternalEList)getOtherFSObjects()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case filesystemPackage.MODEL__FILESYSTEMS: + return getFilesystems(); + case filesystemPackage.MODEL__OTHER_FS_OBJECTS: + return getOtherFSObjects(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case filesystemPackage.MODEL__FILESYSTEMS: + setFilesystems((FileSystem)newValue); + return; + case filesystemPackage.MODEL__OTHER_FS_OBJECTS: + getOtherFSObjects().clear(); + getOtherFSObjects().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case filesystemPackage.MODEL__FILESYSTEMS: + setFilesystems((FileSystem)null); + return; + case filesystemPackage.MODEL__OTHER_FS_OBJECTS: + getOtherFSObjects().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case filesystemPackage.MODEL__FILESYSTEMS: + return filesystems != null; + case filesystemPackage.MODEL__OTHER_FS_OBJECTS: + return otherFSObjects != null && !otherFSObjects.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //ModelImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java new file mode 100644 index 000000000..a3526e36f --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemFactoryImpl.java @@ -0,0 +1,128 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class filesystemFactoryImpl extends EFactoryImpl implements filesystemFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static filesystemFactory init() { + try { + filesystemFactory thefilesystemFactory = (filesystemFactory)EPackage.Registry.INSTANCE.getEFactory(filesystemPackage.eNS_URI); + if (thefilesystemFactory != null) { + return thefilesystemFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new filesystemFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public filesystemFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case filesystemPackage.FILE_SYSTEM: return createFileSystem(); + case filesystemPackage.DIR: return createDir(); + case filesystemPackage.FILE: return createFile(); + case filesystemPackage.MODEL: return createModel(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public FileSystem createFileSystem() { + FileSystemImpl fileSystem = new FileSystemImpl(); + return fileSystem; + } + + /** + * + * + * @generated + */ + public Dir createDir() { + DirImpl dir = new DirImpl(); + return dir; + } + + /** + * + * + * @generated + */ + public File createFile() { + FileImpl file = new FileImpl(); + return file; + } + + /** + * + * + * @generated + */ + public Model createModel() { + ModelImpl model = new ModelImpl(); + return model; + } + + /** + * + * + * @generated + */ + public filesystemPackage getfilesystemPackage() { + return (filesystemPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static filesystemPackage getPackage() { + return filesystemPackage.eINSTANCE; + } + +} //filesystemFactoryImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java new file mode 100644 index 000000000..5bd410201 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/impl/filesystemPackageImpl.java @@ -0,0 +1,338 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemFactory; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class filesystemPackageImpl extends EPackageImpl implements filesystemPackage { + /** + * + * + * @generated + */ + private EClass fileSystemEClass = null; + + /** + * + * + * @generated + */ + private EClass fsObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass dirEClass = null; + + /** + * + * + * @generated + */ + private EClass fileEClass = null; + + /** + * + * + * @generated + */ + private EClass modelEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage#eNS_URI + * @see #init() + * @generated + */ + private filesystemPackageImpl() { + super(eNS_URI, filesystemFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link filesystemPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static filesystemPackage init() { + if (isInited) return (filesystemPackage)EPackage.Registry.INSTANCE.getEPackage(filesystemPackage.eNS_URI); + + // Obtain or create and register package + filesystemPackageImpl thefilesystemPackage = (filesystemPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof filesystemPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new filesystemPackageImpl()); + + isInited = true; + + // Create package meta-data objects + thefilesystemPackage.createPackageContents(); + + // Initialize created meta-data + thefilesystemPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + thefilesystemPackage.freeze(); + + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(filesystemPackage.eNS_URI, thefilesystemPackage); + return thefilesystemPackage; + } + + /** + * + * + * @generated + */ + public EClass getFileSystem() { + return fileSystemEClass; + } + + /** + * + * + * @generated + */ + public EReference getFileSystem_Root() { + return (EReference)fileSystemEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getFileSystem_Live() { + return (EReference)fileSystemEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getFSObject() { + return fsObjectEClass; + } + + /** + * + * + * @generated + */ + public EReference getFSObject_Parent() { + return (EReference)fsObjectEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getDir() { + return dirEClass; + } + + /** + * + * + * @generated + */ + public EReference getDir_Contents() { + return (EReference)dirEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getFile() { + return fileEClass; + } + + /** + * + * + * @generated + */ + public EClass getModel() { + return modelEClass; + } + + /** + * + * + * @generated + */ + public EReference getModel_Filesystems() { + return (EReference)modelEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getModel_OtherFSObjects() { + return (EReference)modelEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public filesystemFactory getfilesystemFactory() { + return (filesystemFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + fileSystemEClass = createEClass(FILE_SYSTEM); + createEReference(fileSystemEClass, FILE_SYSTEM__ROOT); + createEReference(fileSystemEClass, FILE_SYSTEM__LIVE); + + fsObjectEClass = createEClass(FS_OBJECT); + createEReference(fsObjectEClass, FS_OBJECT__PARENT); + + dirEClass = createEClass(DIR); + createEReference(dirEClass, DIR__CONTENTS); + + fileEClass = createEClass(FILE); + + modelEClass = createEClass(MODEL); + createEReference(modelEClass, MODEL__FILESYSTEMS); + createEReference(modelEClass, MODEL__OTHER_FS_OBJECTS); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + dirEClass.getESuperTypes().add(this.getFSObject()); + fileEClass.getESuperTypes().add(this.getFSObject()); + + // Initialize classes, features, and operations; add parameters + initEClass(fileSystemEClass, FileSystem.class, "FileSystem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFileSystem_Root(), this.getDir(), null, "root", null, 1, 1, FileSystem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFileSystem_Live(), this.getFSObject(), null, "live", null, 0, -1, FileSystem.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + initEClass(fsObjectEClass, FSObject.class, "FSObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFSObject_Parent(), this.getDir(), this.getDir_Contents(), "parent", null, 0, 1, FSObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(dirEClass, Dir.class, "Dir", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getDir_Contents(), this.getFSObject(), this.getFSObject_Parent(), "contents", null, 0, -1, Dir.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(fileEClass, File.class, "File", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getModel_Filesystems(), this.getFileSystem(), null, "filesystems", null, 1, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getModel_OtherFSObjects(), this.getFSObject(), null, "otherFSObjects", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + // Create resource + createResource(eNS_URI); + + // Create annotations + // http://www.eclipse.org/emf/2002/Ecore + createEcoreAnnotations(); + } + + /** + * Initializes the annotations for http://www.eclipse.org/emf/2002/Ecore. + * + * + * @generated + */ + protected void createEcoreAnnotations() { + String source = "http://www.eclipse.org/emf/2002/Ecore"; + addAnnotation + (this, + source, + new String[] { + "settingDelegates", "org.eclipse.viatra.query.querybasedfeature" + }); + } + +} //filesystemPackageImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java new file mode 100644 index 000000000..d9aed046c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemAdapterFactory.java @@ -0,0 +1,192 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage + * @generated + */ +public class filesystemAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static filesystemPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public filesystemAdapterFactory() { + if (modelPackage == null) { + modelPackage = filesystemPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected filesystemSwitch modelSwitch = + new filesystemSwitch() { + @Override + public Adapter caseFileSystem(FileSystem object) { + return createFileSystemAdapter(); + } + @Override + public Adapter caseFSObject(FSObject object) { + return createFSObjectAdapter(); + } + @Override + public Adapter caseDir(Dir object) { + return createDirAdapter(); + } + @Override + public Adapter caseFile(File object) { + return createFileAdapter(); + } + @Override + public Adapter caseModel(Model object) { + return createModelAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem File System}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FileSystem + * @generated + */ + public Adapter createFileSystemAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject FS Object}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.FSObject + * @generated + */ + public Adapter createFSObjectAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir Dir}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir + * @generated + */ + public Adapter createDirAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File File}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File + * @generated + */ + public Adapter createFileAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model Model}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Model + * @generated + */ + public Adapter createModelAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //filesystemAdapterFactory diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java new file mode 100644 index 000000000..33f4c7a4b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/filesystem/util/filesystemSwitch.java @@ -0,0 +1,196 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage + * @generated + */ +public class filesystemSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static filesystemPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public filesystemSwitch() { + if (modelPackage == null) { + modelPackage = filesystemPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case filesystemPackage.FILE_SYSTEM: { + FileSystem fileSystem = (FileSystem)theEObject; + T result = caseFileSystem(fileSystem); + if (result == null) result = defaultCase(theEObject); + return result; + } + case filesystemPackage.FS_OBJECT: { + FSObject fsObject = (FSObject)theEObject; + T result = caseFSObject(fsObject); + if (result == null) result = defaultCase(theEObject); + return result; + } + case filesystemPackage.DIR: { + Dir dir = (Dir)theEObject; + T result = caseDir(dir); + if (result == null) result = caseFSObject(dir); + if (result == null) result = defaultCase(theEObject); + return result; + } + case filesystemPackage.FILE: { + File file = (File)theEObject; + T result = caseFile(file); + if (result == null) result = caseFSObject(file); + if (result == null) result = defaultCase(theEObject); + return result; + } + case filesystemPackage.MODEL: { + Model model = (Model)theEObject; + T result = caseModel(model); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'File System'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'File System'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFileSystem(FileSystem object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'FS Object'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'FS Object'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFSObject(FSObject object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Dir'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Dir'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseDir(Dir object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'File'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'File'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFile(File object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Model'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Model'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseModel(Model object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //filesystemSwitch diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java new file mode 100644 index 000000000..fc2f0328b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Choice'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getChoice() + * @model + * @generated + */ +public interface Choice extends Pseudostate { +} // Choice diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java new file mode 100644 index 000000000..b0e38bcf2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java @@ -0,0 +1,42 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Composite Element'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions Regions}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getCompositeElement() + * @model abstract="true" + * @generated + */ +public interface CompositeElement extends EObject { + /** + * Returns the value of the 'Regions' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region}. + * + *

+ * If the meaning of the 'Regions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Regions' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getCompositeElement_Regions() + * @model containment="true" + * @generated + */ + EList getRegions(); + +} // CompositeElement diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java new file mode 100644 index 000000000..253dd2d1d --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Entry.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Entry'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getEntry() + * @model + * @generated + */ +public interface Entry extends Pseudostate { +} // Entry diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java new file mode 100644 index 000000000..b134c14f5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Exit'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getExit() + * @model + * @generated + */ +public interface Exit extends Pseudostate { +} // Exit diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java new file mode 100644 index 000000000..5ec2a16a4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Final State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getFinalState() + * @model + * @generated + */ +public interface FinalState extends RegularState { +} // FinalState diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java new file mode 100644 index 000000000..670a172a4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Pseudostate'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getPseudostate() + * @model abstract="true" + * @generated + */ +public interface Pseudostate extends Vertex { +} // Pseudostate diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java new file mode 100644 index 000000000..84081ae8a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java @@ -0,0 +1,42 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Region'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices Vertices}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getRegion() + * @model + * @generated + */ +public interface Region extends EObject { + /** + * Returns the value of the 'Vertices' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex}. + * + *

+ * If the meaning of the 'Vertices' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Vertices' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getRegion_Vertices() + * @model containment="true" ordered="false" + * @generated + */ + EList getVertices(); + +} // Region diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java new file mode 100644 index 000000000..4ad056449 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Regular State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getRegularState() + * @model abstract="true" + * @generated + */ +public interface RegularState extends Vertex { +} // RegularState diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java new file mode 100644 index 000000000..09667a011 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getState() + * @model + * @generated + */ +public interface State extends RegularState, CompositeElement { +} // State diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java new file mode 100644 index 000000000..0f8e383d6 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Statechart'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getStatechart() + * @model + * @generated + */ +public interface Statechart extends CompositeElement { +} // Statechart diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java new file mode 100644 index 000000000..6c6c80e79 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Synchronization.java @@ -0,0 +1,17 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Synchronization'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getSynchronization() + * @model + * @generated + */ +public interface Synchronization extends Pseudostate { +} // Synchronization diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java new file mode 100644 index 000000000..c90c8d239 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java @@ -0,0 +1,81 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Transition'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getTransition() + * @model + * @generated + */ +public interface Transition extends EObject { + /** + * Returns the value of the 'Target' reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}'. + * + *

+ * If the meaning of the 'Target' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Target' reference. + * @see #setTarget(Vertex) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getTransition_Target() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions + * @model opposite="incomingTransitions" required="true" ordered="false" + * @generated + */ + Vertex getTarget(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}' reference. + * + * + * @param value the new value of the 'Target' reference. + * @see #getTarget() + * @generated + */ + void setTarget(Vertex value); + + /** + * Returns the value of the 'Source' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + *

+ * If the meaning of the 'Source' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Source' container reference. + * @see #setSource(Vertex) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getTransition_Source() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions + * @model opposite="outgoingTransitions" transient="false" ordered="false" + * @generated + */ + Vertex getSource(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}' container reference. + * + * + * @param value the new value of the 'Source' container reference. + * @see #getSource() + * @generated + */ + void setSource(Vertex value); + +} // Transition diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java new file mode 100644 index 000000000..e4631e42a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java @@ -0,0 +1,63 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Vertex'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getVertex() + * @model abstract="true" + * @generated + */ +public interface Vertex extends EObject { + /** + * Returns the value of the 'Incoming Transitions' reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}'. + * + *

+ * If the meaning of the 'Incoming Transitions' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Incoming Transitions' reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getVertex_IncomingTransitions() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget + * @model opposite="target" ordered="false" + * @generated + */ + EList getIncomingTransitions(); + + /** + * Returns the value of the 'Outgoing Transitions' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}'. + * + *

+ * If the meaning of the 'Outgoing Transitions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Outgoing Transitions' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getVertex_OutgoingTransitions() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource + * @model opposite="source" containment="true" ordered="false" + * @generated + */ + EList getOutgoingTransitions(); + +} // Vertex diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/YakinduFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/YakinduFactory.java new file mode 100644 index 000000000..53afae227 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/YakinduFactory.java @@ -0,0 +1,114 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public interface YakinduFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + YakinduFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduFactoryImpl.init(); + + /** + * Returns a new object of class 'Region'. + * + * + * @return a new object of class 'Region'. + * @generated + */ + Region createRegion(); + + /** + * Returns a new object of class 'Transition'. + * + * + * @return a new object of class 'Transition'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class 'Statechart'. + * + * + * @return a new object of class 'Statechart'. + * @generated + */ + Statechart createStatechart(); + + /** + * Returns a new object of class 'Entry'. + * + * + * @return a new object of class 'Entry'. + * @generated + */ + Entry createEntry(); + + /** + * Returns a new object of class 'Synchronization'. + * + * + * @return a new object of class 'Synchronization'. + * @generated + */ + Synchronization createSynchronization(); + + /** + * Returns a new object of class 'State'. + * + * + * @return a new object of class 'State'. + * @generated + */ + State createState(); + + /** + * Returns a new object of class 'Choice'. + * + * + * @return a new object of class 'Choice'. + * @generated + */ + Choice createChoice(); + + /** + * Returns a new object of class 'Exit'. + * + * + * @return a new object of class 'Exit'. + * @generated + */ + Exit createExit(); + + /** + * Returns a new object of class 'Final State'. + * + * + * @return a new object of class 'Final State'. + * @generated + */ + FinalState createFinalState(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + YakinduPackage getYakinduPackage(); + +} //YakinduFactory diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/YakinduPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/YakinduPackage.java new file mode 100644 index 000000000..7fbe176cb --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/YakinduPackage.java @@ -0,0 +1,1038 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduFactory + * @model kind="package" + * @generated + */ +public interface YakinduPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "yakindu"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "YakinduMetamodel"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "yakindu"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + YakinduPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getVertex() + * @generated + */ + int VERTEX = 1; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__INCOMING_TRANSITIONS = 0; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__OUTGOING_TRANSITIONS = 1; + + /** + * The number of structural features of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getPseudostate() + * @generated + */ + int PSEUDOSTATE = 0; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegion() + * @generated + */ + int REGION = 2; + + /** + * The feature id for the 'Vertices' containment reference list. + * + * + * @generated + * @ordered + */ + int REGION__VERTICES = 0; + + /** + * The number of structural features of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getTransition() + * @generated + */ + int TRANSITION = 3; + + /** + * The feature id for the 'Target' reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__TARGET = 0; + + /** + * The feature id for the 'Source' container reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__SOURCE = 1; + + /** + * The number of structural features of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getCompositeElement() + * @generated + */ + int COMPOSITE_ELEMENT = 9; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT__REGIONS = 0; + + /** + * The number of structural features of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getStatechart() + * @generated + */ + int STATECHART = 4; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATECHART__REGIONS = COMPOSITE_ELEMENT__REGIONS; + + /** + * The number of structural features of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_FEATURE_COUNT = COMPOSITE_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_OPERATION_COUNT = COMPOSITE_ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getEntry() + * @generated + */ + int ENTRY = 5; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl Synchronization}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getSynchronization() + * @generated + */ + int SYNCHRONIZATION = 6; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Synchronization' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Synchronization' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegularState() + * @generated + */ + int REGULAR_STATE = 8; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getState() + * @generated + */ + int STATE = 7; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__REGIONS = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getChoice() + * @generated + */ + int CHOICE = 10; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getExit() + * @generated + */ + int EXIT = 11; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getFinalState() + * @generated + */ + int FINAL_STATE = 12; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate Pseudostate}'. + * + * + * @return the meta object for class 'Pseudostate'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate + * @generated + */ + EClass getPseudostate(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex Vertex}'. + * + * + * @return the meta object for class 'Vertex'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex + * @generated + */ + EClass getVertex(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}'. + * + * + * @return the meta object for the reference list 'Incoming Transitions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_IncomingTransitions(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + * + * @return the meta object for the containment reference list 'Outgoing Transitions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_OutgoingTransitions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region Region}'. + * + * + * @return the meta object for class 'Region'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region + * @generated + */ + EClass getRegion(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices Vertices}'. + * + * + * @return the meta object for the containment reference list 'Vertices'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices() + * @see #getRegion() + * @generated + */ + EReference getRegion_Vertices(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition Transition}'. + * + * + * @return the meta object for class 'Transition'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}'. + * + * + * @return the meta object for the reference 'Target'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget() + * @see #getTransition() + * @generated + */ + EReference getTransition_Target(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}'. + * + * + * @return the meta object for the container reference 'Source'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource() + * @see #getTransition() + * @generated + */ + EReference getTransition_Source(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart Statechart}'. + * + * + * @return the meta object for class 'Statechart'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart + * @generated + */ + EClass getStatechart(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry Entry}'. + * + * + * @return the meta object for class 'Entry'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry + * @generated + */ + EClass getEntry(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization Synchronization}'. + * + * + * @return the meta object for class 'Synchronization'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization + * @generated + */ + EClass getSynchronization(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State State}'. + * + * + * @return the meta object for class 'State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State + * @generated + */ + EClass getState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState Regular State}'. + * + * + * @return the meta object for class 'Regular State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState + * @generated + */ + EClass getRegularState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement Composite Element}'. + * + * + * @return the meta object for class 'Composite Element'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement + * @generated + */ + EClass getCompositeElement(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions Regions}'. + * + * + * @return the meta object for the containment reference list 'Regions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions() + * @see #getCompositeElement() + * @generated + */ + EReference getCompositeElement_Regions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice Choice}'. + * + * + * @return the meta object for class 'Choice'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice + * @generated + */ + EClass getChoice(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit Exit}'. + * + * + * @return the meta object for class 'Exit'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit + * @generated + */ + EClass getExit(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState Final State}'. + * + * + * @return the meta object for class 'Final State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState + * @generated + */ + EClass getFinalState(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + YakinduFactory getYakinduFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getPseudostate() + * @generated + */ + EClass PSEUDOSTATE = eINSTANCE.getPseudostate(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getVertex() + * @generated + */ + EClass VERTEX = eINSTANCE.getVertex(); + + /** + * The meta object literal for the 'Incoming Transitions' reference list feature. + * + * + * @generated + */ + EReference VERTEX__INCOMING_TRANSITIONS = eINSTANCE.getVertex_IncomingTransitions(); + + /** + * The meta object literal for the 'Outgoing Transitions' containment reference list feature. + * + * + * @generated + */ + EReference VERTEX__OUTGOING_TRANSITIONS = eINSTANCE.getVertex_OutgoingTransitions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegion() + * @generated + */ + EClass REGION = eINSTANCE.getRegion(); + + /** + * The meta object literal for the 'Vertices' containment reference list feature. + * + * + * @generated + */ + EReference REGION__VERTICES = eINSTANCE.getRegion_Vertices(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the 'Target' reference feature. + * + * + * @generated + */ + EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target(); + + /** + * The meta object literal for the 'Source' container reference feature. + * + * + * @generated + */ + EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getStatechart() + * @generated + */ + EClass STATECHART = eINSTANCE.getStatechart(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getEntry() + * @generated + */ + EClass ENTRY = eINSTANCE.getEntry(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl Synchronization}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getSynchronization() + * @generated + */ + EClass SYNCHRONIZATION = eINSTANCE.getSynchronization(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getState() + * @generated + */ + EClass STATE = eINSTANCE.getState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegularState() + * @generated + */ + EClass REGULAR_STATE = eINSTANCE.getRegularState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getCompositeElement() + * @generated + */ + EClass COMPOSITE_ELEMENT = eINSTANCE.getCompositeElement(); + + /** + * The meta object literal for the 'Regions' containment reference list feature. + * + * + * @generated + */ + EReference COMPOSITE_ELEMENT__REGIONS = eINSTANCE.getCompositeElement_Regions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getChoice() + * @generated + */ + EClass CHOICE = eINSTANCE.getChoice(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getExit() + * @generated + */ + EClass EXIT = eINSTANCE.getExit(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getFinalState() + * @generated + */ + EClass FINAL_STATE = eINSTANCE.getFinalState(); + + } + +} //YakinduPackage diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java new file mode 100644 index 000000000..b757b42f5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Choice'. + * + * + * @generated + */ +public class ChoiceImpl extends PseudostateImpl implements Choice { + /** + * + * + * @generated + */ + protected ChoiceImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.CHOICE; + } + +} //ChoiceImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java new file mode 100644 index 000000000..8441ed271 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java @@ -0,0 +1,152 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Composite Element'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl#getRegions Regions}
  • + *
+ * + * @generated + */ +public abstract class CompositeElementImpl extends MinimalEObjectImpl.Container implements CompositeElement { + /** + * The cached value of the '{@link #getRegions() Regions}' containment reference list. + * + * + * @see #getRegions() + * @generated + * @ordered + */ + protected EList regions; + + /** + * + * + * @generated + */ + protected CompositeElementImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.COMPOSITE_ELEMENT; + } + + /** + * + * + * @generated + */ + public EList getRegions() { + if (regions == null) { + regions = new EObjectContainmentEList(Region.class, this, YakinduPackage.COMPOSITE_ELEMENT__REGIONS); + } + return regions; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + return ((InternalEList)getRegions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + return getRegions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + getRegions().clear(); + getRegions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + getRegions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + return regions != null && !regions.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //CompositeElementImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java new file mode 100644 index 000000000..eeba7c63e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/EntryImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Entry'. + * + * + * @generated + */ +public class EntryImpl extends PseudostateImpl implements Entry { + /** + * + * + * @generated + */ + protected EntryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.ENTRY; + } + +} //EntryImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java new file mode 100644 index 000000000..4859ef034 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Exit'. + * + * + * @generated + */ +public class ExitImpl extends PseudostateImpl implements Exit { + /** + * + * + * @generated + */ + protected ExitImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.EXIT; + } + +} //ExitImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java new file mode 100644 index 000000000..c4d4e1570 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Final State'. + * + * + * @generated + */ +public class FinalStateImpl extends RegularStateImpl implements FinalState { + /** + * + * + * @generated + */ + protected FinalStateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.FINAL_STATE; + } + +} //FinalStateImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java new file mode 100644 index 000000000..56c44b786 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Pseudostate'. + * + * + * @generated + */ +public abstract class PseudostateImpl extends VertexImpl implements Pseudostate { + /** + * + * + * @generated + */ + protected PseudostateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.PSEUDOSTATE; + } + +} //PseudostateImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java new file mode 100644 index 000000000..fa529ad63 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java @@ -0,0 +1,152 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Region'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl#getVertices Vertices}
  • + *
+ * + * @generated + */ +public class RegionImpl extends MinimalEObjectImpl.Container implements Region { + /** + * The cached value of the '{@link #getVertices() Vertices}' containment reference list. + * + * + * @see #getVertices() + * @generated + * @ordered + */ + protected EList vertices; + + /** + * + * + * @generated + */ + protected RegionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.REGION; + } + + /** + * + * + * @generated + */ + public EList getVertices() { + if (vertices == null) { + vertices = new EObjectContainmentEList(Vertex.class, this, YakinduPackage.REGION__VERTICES); + } + return vertices; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + return ((InternalEList)getVertices()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + return getVertices(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + getVertices().clear(); + getVertices().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + getVertices().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + return vertices != null && !vertices.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //RegionImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java new file mode 100644 index 000000000..5361d4d5a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Regular State'. + * + * + * @generated + */ +public abstract class RegularStateImpl extends VertexImpl implements RegularState { + /** + * + * + * @generated + */ + protected RegularStateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.REGULAR_STATE; + } + +} //RegularStateImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java new file mode 100644 index 000000000..85938d633 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java @@ -0,0 +1,183 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'State'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl#getRegions Regions}
  • + *
+ * + * @generated + */ +public class StateImpl extends RegularStateImpl implements State { + /** + * The cached value of the '{@link #getRegions() Regions}' containment reference list. + * + * + * @see #getRegions() + * @generated + * @ordered + */ + protected EList regions; + + /** + * + * + * @generated + */ + protected StateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.STATE; + } + + /** + * + * + * @generated + */ + public EList getRegions() { + if (regions == null) { + regions = new EObjectContainmentEList(Region.class, this, YakinduPackage.STATE__REGIONS); + } + return regions; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + return ((InternalEList)getRegions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + return getRegions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + getRegions().clear(); + getRegions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + getRegions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + return regions != null && !regions.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) { + if (baseClass == CompositeElement.class) { + switch (derivedFeatureID) { + case YakinduPackage.STATE__REGIONS: return YakinduPackage.COMPOSITE_ELEMENT__REGIONS; + default: return -1; + } + } + return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); + } + + /** + * + * + * @generated + */ + @Override + public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) { + if (baseClass == CompositeElement.class) { + switch (baseFeatureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: return YakinduPackage.STATE__REGIONS; + default: return -1; + } + } + return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); + } + +} //StateImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java new file mode 100644 index 000000000..a74110da7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Statechart'. + * + * + * @generated + */ +public class StatechartImpl extends CompositeElementImpl implements Statechart { + /** + * + * + * @generated + */ + protected StatechartImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.STATECHART; + } + +} //StatechartImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java new file mode 100644 index 000000000..eaf5ef231 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/SynchronizationImpl.java @@ -0,0 +1,37 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Synchronization'. + * + * + * @generated + */ +public class SynchronizationImpl extends PseudostateImpl implements Synchronization { + /** + * + * + * @generated + */ + protected SynchronizationImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.SYNCHRONIZATION; + } + +} //SynchronizationImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java new file mode 100644 index 000000000..dfbca0483 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java @@ -0,0 +1,284 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'Transition'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl#getTarget Target}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl#getSource Source}
  • + *
+ * + * @generated + */ +public class TransitionImpl extends MinimalEObjectImpl.Container implements Transition { + /** + * The cached value of the '{@link #getTarget() Target}' reference. + * + * + * @see #getTarget() + * @generated + * @ordered + */ + protected Vertex target; + + /** + * + * + * @generated + */ + protected TransitionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.TRANSITION; + } + + /** + * + * + * @generated + */ + public Vertex getTarget() { + if (target != null && target.eIsProxy()) { + InternalEObject oldTarget = (InternalEObject)target; + target = (Vertex)eResolveProxy(oldTarget); + if (target != oldTarget) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, YakinduPackage.TRANSITION__TARGET, oldTarget, target)); + } + } + return target; + } + + /** + * + * + * @generated + */ + public Vertex basicGetTarget() { + return target; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetTarget(Vertex newTarget, NotificationChain msgs) { + Vertex oldTarget = target; + target = newTarget; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, YakinduPackage.TRANSITION__TARGET, oldTarget, newTarget); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setTarget(Vertex newTarget) { + if (newTarget != target) { + NotificationChain msgs = null; + if (target != null) + msgs = ((InternalEObject)target).eInverseRemove(this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + if (newTarget != null) + msgs = ((InternalEObject)newTarget).eInverseAdd(this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + msgs = basicSetTarget(newTarget, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakinduPackage.TRANSITION__TARGET, newTarget, newTarget)); + } + + /** + * + * + * @generated + */ + public Vertex getSource() { + if (eContainerFeatureID() != YakinduPackage.TRANSITION__SOURCE) return null; + return (Vertex)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetSource(Vertex newSource, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newSource, YakinduPackage.TRANSITION__SOURCE, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setSource(Vertex newSource) { + if (newSource != eInternalContainer() || (eContainerFeatureID() != YakinduPackage.TRANSITION__SOURCE && newSource != null)) { + if (EcoreUtil.isAncestor(this, newSource)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newSource != null) + msgs = ((InternalEObject)newSource).eInverseAdd(this, YakinduPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs); + msgs = basicSetSource(newSource, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakinduPackage.TRANSITION__SOURCE, newSource, newSource)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + if (target != null) + msgs = ((InternalEObject)target).eInverseRemove(this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + return basicSetTarget((Vertex)otherEnd, msgs); + case YakinduPackage.TRANSITION__SOURCE: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetSource((Vertex)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + return basicSetTarget(null, msgs); + case YakinduPackage.TRANSITION__SOURCE: + return basicSetSource(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case YakinduPackage.TRANSITION__SOURCE: + return eInternalContainer().eInverseRemove(this, YakinduPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + if (resolve) return getTarget(); + return basicGetTarget(); + case YakinduPackage.TRANSITION__SOURCE: + return getSource(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + setTarget((Vertex)newValue); + return; + case YakinduPackage.TRANSITION__SOURCE: + setSource((Vertex)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + setTarget((Vertex)null); + return; + case YakinduPackage.TRANSITION__SOURCE: + setSource((Vertex)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + return target != null; + case YakinduPackage.TRANSITION__SOURCE: + return getSource() != null; + } + return super.eIsSet(featureID); + } + +} //TransitionImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java new file mode 100644 index 000000000..6384fb51d --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java @@ -0,0 +1,206 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Vertex'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl#getIncomingTransitions Incoming Transitions}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl#getOutgoingTransitions Outgoing Transitions}
  • + *
+ * + * @generated + */ +public abstract class VertexImpl extends MinimalEObjectImpl.Container implements Vertex { + /** + * The cached value of the '{@link #getIncomingTransitions() Incoming Transitions}' reference list. + * + * + * @see #getIncomingTransitions() + * @generated + * @ordered + */ + protected EList incomingTransitions; + + /** + * The cached value of the '{@link #getOutgoingTransitions() Outgoing Transitions}' containment reference list. + * + * + * @see #getOutgoingTransitions() + * @generated + * @ordered + */ + protected EList outgoingTransitions; + + /** + * + * + * @generated + */ + protected VertexImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.VERTEX; + } + + /** + * + * + * @generated + */ + public EList getIncomingTransitions() { + if (incomingTransitions == null) { + incomingTransitions = new EObjectWithInverseResolvingEList(Transition.class, this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, YakinduPackage.TRANSITION__TARGET); + } + return incomingTransitions; + } + + /** + * + * + * @generated + */ + public EList getOutgoingTransitions() { + if (outgoingTransitions == null) { + outgoingTransitions = new EObjectContainmentWithInverseEList(Transition.class, this, YakinduPackage.VERTEX__OUTGOING_TRANSITIONS, YakinduPackage.TRANSITION__SOURCE); + } + return outgoingTransitions; + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return ((InternalEList)(InternalEList)getIncomingTransitions()).basicAdd(otherEnd, msgs); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return ((InternalEList)(InternalEList)getOutgoingTransitions()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return ((InternalEList)getIncomingTransitions()).basicRemove(otherEnd, msgs); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return ((InternalEList)getOutgoingTransitions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return getIncomingTransitions(); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return getOutgoingTransitions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + getIncomingTransitions().clear(); + getIncomingTransitions().addAll((Collection)newValue); + return; + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + getOutgoingTransitions().clear(); + getOutgoingTransitions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + getIncomingTransitions().clear(); + return; + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + getOutgoingTransitions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return incomingTransitions != null && !incomingTransitions.isEmpty(); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return outgoingTransitions != null && !outgoingTransitions.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //VertexImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/YakinduFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/YakinduFactoryImpl.java new file mode 100644 index 000000000..bd5ee1bdc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/YakinduFactoryImpl.java @@ -0,0 +1,183 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class YakinduFactoryImpl extends EFactoryImpl implements YakinduFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static YakinduFactory init() { + try { + YakinduFactory theYakinduFactory = (YakinduFactory)EPackage.Registry.INSTANCE.getEFactory(YakinduPackage.eNS_URI); + if (theYakinduFactory != null) { + return theYakinduFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new YakinduFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public YakinduFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case YakinduPackage.REGION: return createRegion(); + case YakinduPackage.TRANSITION: return createTransition(); + case YakinduPackage.STATECHART: return createStatechart(); + case YakinduPackage.ENTRY: return createEntry(); + case YakinduPackage.SYNCHRONIZATION: return createSynchronization(); + case YakinduPackage.STATE: return createState(); + case YakinduPackage.CHOICE: return createChoice(); + case YakinduPackage.EXIT: return createExit(); + case YakinduPackage.FINAL_STATE: return createFinalState(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Region createRegion() { + RegionImpl region = new RegionImpl(); + return region; + } + + /** + * + * + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * + * + * @generated + */ + public Statechart createStatechart() { + StatechartImpl statechart = new StatechartImpl(); + return statechart; + } + + /** + * + * + * @generated + */ + public Entry createEntry() { + EntryImpl entry = new EntryImpl(); + return entry; + } + + /** + * + * + * @generated + */ + public Synchronization createSynchronization() { + SynchronizationImpl synchronization = new SynchronizationImpl(); + return synchronization; + } + + /** + * + * + * @generated + */ + public State createState() { + StateImpl state = new StateImpl(); + return state; + } + + /** + * + * + * @generated + */ + public Choice createChoice() { + ChoiceImpl choice = new ChoiceImpl(); + return choice; + } + + /** + * + * + * @generated + */ + public Exit createExit() { + ExitImpl exit = new ExitImpl(); + return exit; + } + + /** + * + * + * @generated + */ + public FinalState createFinalState() { + FinalStateImpl finalState = new FinalStateImpl(); + return finalState; + } + + /** + * + * + * @generated + */ + public YakinduPackage getYakinduPackage() { + return (YakinduPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static YakinduPackage getPackage() { + return YakinduPackage.eINSTANCE; + } + +} //YakinduFactoryImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/YakinduPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/YakinduPackageImpl.java new file mode 100644 index 000000000..0796c5d85 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/YakinduPackageImpl.java @@ -0,0 +1,494 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduFactory; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class YakinduPackageImpl extends EPackageImpl implements YakinduPackage { + /** + * + * + * @generated + */ + private EClass pseudostateEClass = null; + + /** + * + * + * @generated + */ + private EClass vertexEClass = null; + + /** + * + * + * @generated + */ + private EClass regionEClass = null; + + /** + * + * + * @generated + */ + private EClass transitionEClass = null; + + /** + * + * + * @generated + */ + private EClass statechartEClass = null; + + /** + * + * + * @generated + */ + private EClass entryEClass = null; + + /** + * + * + * @generated + */ + private EClass synchronizationEClass = null; + + /** + * + * + * @generated + */ + private EClass stateEClass = null; + + /** + * + * + * @generated + */ + private EClass regularStateEClass = null; + + /** + * + * + * @generated + */ + private EClass compositeElementEClass = null; + + /** + * + * + * @generated + */ + private EClass choiceEClass = null; + + /** + * + * + * @generated + */ + private EClass exitEClass = null; + + /** + * + * + * @generated + */ + private EClass finalStateEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#eNS_URI + * @see #init() + * @generated + */ + private YakinduPackageImpl() { + super(eNS_URI, YakinduFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link YakinduPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static YakinduPackage init() { + if (isInited) return (YakinduPackage)EPackage.Registry.INSTANCE.getEPackage(YakinduPackage.eNS_URI); + + // Obtain or create and register package + Object registeredYakinduPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + YakinduPackageImpl theYakinduPackage = registeredYakinduPackage instanceof YakinduPackageImpl ? (YakinduPackageImpl)registeredYakinduPackage : new YakinduPackageImpl(); + + isInited = true; + + // Create package meta-data objects + theYakinduPackage.createPackageContents(); + + // Initialize created meta-data + theYakinduPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theYakinduPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(YakinduPackage.eNS_URI, theYakinduPackage); + return theYakinduPackage; + } + + /** + * + * + * @generated + */ + public EClass getPseudostate() { + return pseudostateEClass; + } + + /** + * + * + * @generated + */ + public EClass getVertex() { + return vertexEClass; + } + + /** + * + * + * @generated + */ + public EReference getVertex_IncomingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVertex_OutgoingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getRegion() { + return regionEClass; + } + + /** + * + * + * @generated + */ + public EReference getRegion_Vertices() { + return (EReference)regionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * + * + * @generated + */ + public EReference getTransition_Target() { + return (EReference)transitionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getTransition_Source() { + return (EReference)transitionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getStatechart() { + return statechartEClass; + } + + /** + * + * + * @generated + */ + public EClass getEntry() { + return entryEClass; + } + + /** + * + * + * @generated + */ + public EClass getSynchronization() { + return synchronizationEClass; + } + + /** + * + * + * @generated + */ + public EClass getState() { + return stateEClass; + } + + /** + * + * + * @generated + */ + public EClass getRegularState() { + return regularStateEClass; + } + + /** + * + * + * @generated + */ + public EClass getCompositeElement() { + return compositeElementEClass; + } + + /** + * + * + * @generated + */ + public EReference getCompositeElement_Regions() { + return (EReference)compositeElementEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getChoice() { + return choiceEClass; + } + + /** + * + * + * @generated + */ + public EClass getExit() { + return exitEClass; + } + + /** + * + * + * @generated + */ + public EClass getFinalState() { + return finalStateEClass; + } + + /** + * + * + * @generated + */ + public YakinduFactory getYakinduFactory() { + return (YakinduFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + pseudostateEClass = createEClass(PSEUDOSTATE); + + vertexEClass = createEClass(VERTEX); + createEReference(vertexEClass, VERTEX__INCOMING_TRANSITIONS); + createEReference(vertexEClass, VERTEX__OUTGOING_TRANSITIONS); + + regionEClass = createEClass(REGION); + createEReference(regionEClass, REGION__VERTICES); + + transitionEClass = createEClass(TRANSITION); + createEReference(transitionEClass, TRANSITION__TARGET); + createEReference(transitionEClass, TRANSITION__SOURCE); + + statechartEClass = createEClass(STATECHART); + + entryEClass = createEClass(ENTRY); + + synchronizationEClass = createEClass(SYNCHRONIZATION); + + stateEClass = createEClass(STATE); + + regularStateEClass = createEClass(REGULAR_STATE); + + compositeElementEClass = createEClass(COMPOSITE_ELEMENT); + createEReference(compositeElementEClass, COMPOSITE_ELEMENT__REGIONS); + + choiceEClass = createEClass(CHOICE); + + exitEClass = createEClass(EXIT); + + finalStateEClass = createEClass(FINAL_STATE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + pseudostateEClass.getESuperTypes().add(this.getVertex()); + statechartEClass.getESuperTypes().add(this.getCompositeElement()); + entryEClass.getESuperTypes().add(this.getPseudostate()); + synchronizationEClass.getESuperTypes().add(this.getPseudostate()); + stateEClass.getESuperTypes().add(this.getRegularState()); + stateEClass.getESuperTypes().add(this.getCompositeElement()); + regularStateEClass.getESuperTypes().add(this.getVertex()); + choiceEClass.getESuperTypes().add(this.getPseudostate()); + exitEClass.getESuperTypes().add(this.getPseudostate()); + finalStateEClass.getESuperTypes().add(this.getRegularState()); + + // Initialize classes, features, and operations; add parameters + initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getRegion_Vertices(), this.getVertex(), null, "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(regularStateEClass, RegularState.class, "RegularState", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getCompositeElement_Regions(), this.getRegion(), null, "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + } + +} //YakinduPackageImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/YakinduAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/YakinduAdapterFactory.java new file mode 100644 index 000000000..566f01e5a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/YakinduAdapterFactory.java @@ -0,0 +1,336 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public class YakinduAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static YakinduPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public YakinduAdapterFactory() { + if (modelPackage == null) { + modelPackage = YakinduPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected YakinduSwitch modelSwitch = + new YakinduSwitch() { + @Override + public Adapter casePseudostate(Pseudostate object) { + return createPseudostateAdapter(); + } + @Override + public Adapter caseVertex(Vertex object) { + return createVertexAdapter(); + } + @Override + public Adapter caseRegion(Region object) { + return createRegionAdapter(); + } + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + @Override + public Adapter caseStatechart(Statechart object) { + return createStatechartAdapter(); + } + @Override + public Adapter caseEntry(Entry object) { + return createEntryAdapter(); + } + @Override + public Adapter caseSynchronization(Synchronization object) { + return createSynchronizationAdapter(); + } + @Override + public Adapter caseState(State object) { + return createStateAdapter(); + } + @Override + public Adapter caseRegularState(RegularState object) { + return createRegularStateAdapter(); + } + @Override + public Adapter caseCompositeElement(CompositeElement object) { + return createCompositeElementAdapter(); + } + @Override + public Adapter caseChoice(Choice object) { + return createChoiceAdapter(); + } + @Override + public Adapter caseExit(Exit object) { + return createExitAdapter(); + } + @Override + public Adapter caseFinalState(FinalState object) { + return createFinalStateAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate Pseudostate}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate + * @generated + */ + public Adapter createPseudostateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex Vertex}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex + * @generated + */ + public Adapter createVertexAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region Region}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region + * @generated + */ + public Adapter createRegionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition Transition}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart Statechart}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart + * @generated + */ + public Adapter createStatechartAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry Entry}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry + * @generated + */ + public Adapter createEntryAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization Synchronization}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization + * @generated + */ + public Adapter createSynchronizationAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State + * @generated + */ + public Adapter createStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState Regular State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState + * @generated + */ + public Adapter createRegularStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement Composite Element}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement + * @generated + */ + public Adapter createCompositeElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice Choice}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice + * @generated + */ + public Adapter createChoiceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit Exit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit + * @generated + */ + public Adapter createExitAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState Final State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState + * @generated + */ + public Adapter createFinalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //YakinduAdapterFactory diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/YakinduSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/YakinduSwitch.java new file mode 100644 index 000000000..fdaff54df --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/util/YakinduSwitch.java @@ -0,0 +1,378 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public class YakinduSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static YakinduPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public YakinduSwitch() { + if (modelPackage == null) { + modelPackage = YakinduPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case YakinduPackage.PSEUDOSTATE: { + Pseudostate pseudostate = (Pseudostate)theEObject; + T result = casePseudostate(pseudostate); + if (result == null) result = caseVertex(pseudostate); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.VERTEX: { + Vertex vertex = (Vertex)theEObject; + T result = caseVertex(vertex); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.REGION: { + Region region = (Region)theEObject; + T result = caseRegion(region); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.TRANSITION: { + Transition transition = (Transition)theEObject; + T result = caseTransition(transition); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.STATECHART: { + Statechart statechart = (Statechart)theEObject; + T result = caseStatechart(statechart); + if (result == null) result = caseCompositeElement(statechart); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.ENTRY: { + Entry entry = (Entry)theEObject; + T result = caseEntry(entry); + if (result == null) result = casePseudostate(entry); + if (result == null) result = caseVertex(entry); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.SYNCHRONIZATION: { + Synchronization synchronization = (Synchronization)theEObject; + T result = caseSynchronization(synchronization); + if (result == null) result = casePseudostate(synchronization); + if (result == null) result = caseVertex(synchronization); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.STATE: { + State state = (State)theEObject; + T result = caseState(state); + if (result == null) result = caseRegularState(state); + if (result == null) result = caseCompositeElement(state); + if (result == null) result = caseVertex(state); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.REGULAR_STATE: { + RegularState regularState = (RegularState)theEObject; + T result = caseRegularState(regularState); + if (result == null) result = caseVertex(regularState); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.COMPOSITE_ELEMENT: { + CompositeElement compositeElement = (CompositeElement)theEObject; + T result = caseCompositeElement(compositeElement); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.CHOICE: { + Choice choice = (Choice)theEObject; + T result = caseChoice(choice); + if (result == null) result = casePseudostate(choice); + if (result == null) result = caseVertex(choice); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.EXIT: { + Exit exit = (Exit)theEObject; + T result = caseExit(exit); + if (result == null) result = casePseudostate(exit); + if (result == null) result = caseVertex(exit); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.FINAL_STATE: { + FinalState finalState = (FinalState)theEObject; + T result = caseFinalState(finalState); + if (result == null) result = caseRegularState(finalState); + if (result == null) result = caseVertex(finalState); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Pseudostate'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Pseudostate'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePseudostate(Pseudostate object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Vertex'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Vertex'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVertex(Vertex object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Region'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Region'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegion(Region object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Transition'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Transition'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Statechart'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Statechart'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStatechart(Statechart object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Entry'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Entry'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEntry(Entry object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Synchronization'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Synchronization'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseSynchronization(Synchronization object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseState(State object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Regular State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Regular State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegularState(RegularState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Composite Element'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Composite Element'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseCompositeElement(CompositeElement object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Choice'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Choice'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseChoice(Choice object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Exit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Exit'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseExit(Exit object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Final State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Final State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFinalState(FinalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //YakinduSwitch diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath new file mode 100644 index 000000000..7618afdfa --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.classpath @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.gitignore new file mode 100644 index 000000000..20d8648e4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.gitignore @@ -0,0 +1,5 @@ +/bin/ +/xtend-gen/ +/src-gen/ +/output/* +/*/ \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.project b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.project new file mode 100644 index 000000000..87dc2baaa --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.project @@ -0,0 +1,40 @@ + + + ca.mcgill.ecse.dslreasoner.vampire.test + + + + + + org.eclipse.viatra.query.tooling.ui.projectbuilder + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.viatra.query.projectnature + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.settings/org.eclipse.jdt.core.prefs b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..295926d96 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/InputLPs/medicalSystem.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/InputLPs/medicalSystem.logicproblem new file mode 100644 index 000000000..6c5f1457e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/InputLPs/medicalSystem.logicproblem @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/InputLPs/newMedicalSystem.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/InputLPs/newMedicalSystem.logicproblem new file mode 100644 index 000000000..a8e595b48 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/InputLPs/newMedicalSystem.logicproblem @@ -0,0 +1,962 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF new file mode 100644 index 000000000..10da7ca1e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/META-INF/MANIFEST.MF @@ -0,0 +1,52 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.vampire.test;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Export-Package: ca.mcgill.ecse.dslreasoner.vampire.queries, + ca.mcgill.ecse.dslreasoner.vampire.yakindumm, + ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl, + ca.mcgill.ecse.dslreasoner.vampire.yakindumm.util +Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime, + org.eclipse.core.runtime, + org.eclipse.emf.ecore;visibility:=reexport, + org.eclipse.viatra.query.runtime.rete, + org.eclipse.viatra.query.runtime.localsearch, + com.google.guava, + org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib, + org.eclipse.xtend.lib.macro, + ca.mcgill.ecse.dslreasoner.vampire.language;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", + ca.mcgill.ecse.dslreasoner.vampire.reasoner;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0", + org.eclipse.emf.ecore.xmi;bundle-version="2.13.0", + hu.bme.mit.inf.dlsreasoner.alloy.reasoner;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.logic2ecore;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.visualisation;bundle-version="1.0.0", + ModelGenExampleFAM_plugin;bundle-version="1.0.0", + ModelGenExampleFAM_plugin.validation;bundle-version="0.0.1", + hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation;bundle-version="0.0.1", + org.eclipse.viatra.query.runtime;bundle-version="2.1.0", + org.eclipse.collections;bundle-version="9.2.0", + hu.bme.mit.inf.dslreasoner.application.FAMTest;bundle-version="1.0.0", + ca.mcgill.ecse.dslreasoner.standalone.test;bundle-version="1.0.0", + org.apache.httpcomponents.httpcore;bundle-version="4.4.6", + org.apache.httpcomponents.httpclient;bundle-version="4.5.2", + org.apache.httpcomponents.httpclient.source;bundle-version="4.5.2", + org.apache.httpcomponents.httpclient.win;bundle-version="4.5.2", + org.apache.httpcomponents.httpcore.source;bundle-version="4.4.6", + hu.bme.mit.inf.dslreasoner.alloy.language;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.alloy.language.ui;bundle-version="1.0.0" +Import-Package: org.apache.log4j +Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.vampire.test +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/build.properties b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/build.properties new file mode 100644 index 000000000..aed85a48d --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/build.properties @@ -0,0 +1,5 @@ +bin.includes = META-INF/,\ + . +source.. = src/,\ + src-gen/ +output.. = bin/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM.xmi new file mode 100644 index 000000000..c79e58ede --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM.xmi @@ -0,0 +1,3 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FaModel.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FaModel.xmi new file mode 100644 index 000000000..cef17e1b7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FaModel.xmi @@ -0,0 +1,7 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FamMetamodel.ecore b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FamMetamodel.ecore new file mode 100644 index 000000000..68943e557 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FAM/FamMetamodel.ecore @@ -0,0 +1,61 @@ + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FamInstance.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FamInstance.xmi new file mode 100644 index 000000000..8500678c9 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FamInstance.xmi @@ -0,0 +1,12 @@ + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FunctionalArchitectureModel.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FunctionalArchitectureModel.xmi new file mode 100644 index 000000000..8500678c9 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FunctionalArchitectureModel.xmi @@ -0,0 +1,12 @@ + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FunctionalArchitectureModel2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FunctionalArchitectureModel2.xmi new file mode 100644 index 000000000..59935a2c6 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/FunctionalArchitectureModel2.xmi @@ -0,0 +1,4 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/ecore.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/ecore.xmi new file mode 100644 index 000000000..867e50495 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/ecore.xmi @@ -0,0 +1,6 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/fs.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/fs.xmi new file mode 100644 index 000000000..56879c1a1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/fs.xmi @@ -0,0 +1,3 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/Yakindu.xmi b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/Yakindu.xmi new file mode 100644 index 000000000..49b1f89d3 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/Yakindu.xmi @@ -0,0 +1,4 @@ + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakinduPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakinduPatterns.vql new file mode 100644 index 000000000..f52113ca4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakinduPatterns.vql @@ -0,0 +1,227 @@ +package ca.mcgill.ecse.dslreasoner.yakindu.queries + +import epackage "hu.bme.mit.inf.yakindumm" + +///////// +// Entry +///////// + +pattern entryInRegion(r1 : Region, e1 : Entry) { + Region.vertices(r1, e1); +} + +@Constraint(severity="error", message="error", key = {r1}) +pattern noEntryInRegion(r1 : Region) { + neg find entryInRegion(r1, _); +} + +@Constraint(severity="error", message="error", key = {r}) +pattern multipleEntryInRegion(r : Region) { + find entryInRegion(r, e1); + find entryInRegion(r, e2); + e1 != e2; +} + +pattern transition(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Transition.target(t, trg); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern incomingToEntry(t : Transition, e : Entry) { + find transition(t, _, e); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern noOutgoingTransitionFromEntry(e : Entry) { + neg find transition(_, e, _); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} + +///////// +// Exit +///////// + +@Constraint(severity="error", message="error", key = {e}) +pattern outgoingFromExit(t : Transition, e : Exit) { + Exit.outgoingTransitions(e,t); +} + +///////// +// Final +///////// + +@Constraint(severity="error", message="error", key = {f}) +pattern outgoingFromFinal(t : Transition, f : FinalState) { + FinalState.outgoingTransitions(f,t); +} + +///////// +// State vs Region +///////// + +@Constraint(severity="error", message="error", key = {region}) +pattern noStateInRegion(region: Region) { + neg find StateInRegion(region,_); +} +pattern StateInRegion(region: Region, state: State) { + Region.vertices(region,state); +} + +///////// +// Choice +///////// + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoOutgoing(c : Choice) { + neg find transition(_, c, _); +} + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoIncoming(c: Choice) { + neg find transition(_, _, c); +} + +///////// +// Synchronization +///////// + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoOutgoing(s : Synchronization) { + neg find transition(_, s, _); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoIncoming(s : Synchronization) { + neg find transition(_, _, s); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { + find transition(t1, v1, s); + find transition(t2, v2, s); + t1!=t2; + Region.vertices(r, v1); + Region.vertices(r, v2); +} or { + find transition(t1, s, v1); + find transition(t2, s, v2); + t1!=t2; + Region.vertices(r, v1); + Region.vertices(r, v2); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern notSynchronizingStates(s : Synchronization) { + neg find hasMultipleOutgoingTrainsition(s); + neg find hasMultipleIncomingTrainsition(s); +} + +pattern hasMultipleOutgoingTrainsition(v : Synchronization) { + find transition(_, v, trg1); + find transition(_, v, trg2); + trg1 != trg2; +} + +pattern hasMultipleIncomingTrainsition(v : Synchronization) { + find transition(_, src1, v); + find transition(_, src2, v); + src1 != src2; +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { + find transition(_, v1, s); + find transition(_, v2, s); + CompositeElement.regions.vertices(r1, v1); + CompositeElement.regions.vertices(r2, v2); + r1 != r2; +} or { + find transition(_, s, v1); + find transition(_, s, v2); + CompositeElement.regions.vertices(r1, v1); + CompositeElement.regions.vertices(r2, v2); + r1 != r2; +} + +/////////////////////////////// +// Extra +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) { +// find transition(_, v, s); +// neg find child(_,v); +//} or { +// find transition(_, s, v); +// neg find child(_,v); +//} + +pattern child(parent: CompositeElement, child: Vertex) { + CompositeElement.regions.vertices(parent, child); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) { + find transition(_, v, s); + find child(c,v); + neg find hasMultipleRegions(c); +} or { + find transition(_, s, v); + find child(c,v); + neg find hasMultipleRegions(c); +} + + +pattern hasMultipleRegions(composite: CompositeElement) { + CompositeElement.regions(composite,region1); + CompositeElement.regions(composite,region2); + region1 != region2; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s}) +pattern synchThree(s: Synchronization) { + Transition.target(t1,s); + Transition.target(t2,s); + Transition.target(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} or { + Transition.source(t1,s); + Transition.source(t2,s); + Transition.source(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s1,s2}) +pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { + Synchronization(s1); + Synchronization(s2); + s1 != s2; +} + +/** + * Model generation task: at least one synch + */ +@Constraint(severity="error", message="error", key = {s}) +pattern noSynch(s:Statechart) { + Statechart(s); + neg find synch(_); +} +pattern synch(s:Synchronization) { + Synchronization(s); +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.aird b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.aird new file mode 100644 index 000000000..38b2b4100 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.aird @@ -0,0 +1,704 @@ + + + + yakindu_simplified.ecore + yakindu_simplified.genmodel + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + italic + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.ecore b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.ecore new file mode 100644 index 000000000..02b572526 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.ecore @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.genmodel new file mode 100644 index 000000000..cfbafce66 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/initialModels/yakindu/yakindu_simplified.genmodel @@ -0,0 +1,40 @@ + + + yakindu_simplified.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/DslTest/vampireProblem.tptp b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/DslTest/vampireProblem.tptp new file mode 100644 index 000000000..301c2736d --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/DslTest/vampireProblem.tptp @@ -0,0 +1,37 @@ +% This is an initial Test Comment +fof ( typeDef_FunctionType_enum , axiom , ! [ A ] : ( type_FunctionType_enum ( A ) <=> ( A = "aRoot literal FunctionType" | ( A = "aIntermediate literal FunctionType" | A = "aLeaf literal FunctionType" ) ) ) ) . +fof ( hierarchyHandler , axiom , ! [ A ] : ( object ( A ) <=> ( ( type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . +fof ( compliance_interface_reference_FunctionalElement , axiom , ! [ Var_0 , Var_1 ] : ( rel_interface_reference_FunctionalElement ( Var_0 , Var_1 ) => ( type_FunctionalElement_class ( Var_0 ) & type_FunctionalInterface_class ( Var_1 ) ) ) ) . +fof ( compliance_model_reference_FunctionalElement , axiom , ! [ Var_0 , Var_1 ] : ( rel_model_reference_FunctionalElement ( Var_0 , Var_1 ) => ( type_FunctionalElement_class ( Var_0 ) & type_FunctionalArchitectureModel_class ( Var_1 ) ) ) ) . +fof ( compliance_parent_reference_FunctionalElement , axiom , ! [ Var_0 , Var_1 ] : ( rel_parent_reference_FunctionalElement ( Var_0 , Var_1 ) => ( type_FunctionalElement_class ( Var_0 ) & type_Function_class ( Var_1 ) ) ) ) . +fof ( compliance_rootElements_reference_FunctionalArchitectureModel , axiom , ! [ Var_0 , Var_1 ] : ( rel_rootElements_reference_FunctionalArchitectureModel ( Var_0 , Var_1 ) => ( type_FunctionalArchitectureModel_class ( Var_0 ) & type_FunctionalElement_class ( Var_1 ) ) ) ) . +fof ( compliance_subElements_reference_Function , axiom , ! [ Var_0 , Var_1 ] : ( rel_subElements_reference_Function ( Var_0 , Var_1 ) => ( type_Function_class ( Var_0 ) & type_FunctionalElement_class ( Var_1 ) ) ) ) . +fof ( compliance_data_reference_FAMTerminator , axiom , ! [ Var_0 , Var_1 ] : ( rel_data_reference_FAMTerminator ( Var_0 , Var_1 ) => ( type_FAMTerminator_class ( Var_0 ) & type_FunctionalData_class ( Var_1 ) ) ) ) . +fof ( compliance_from_reference_InformationLink , axiom , ! [ Var_0 , Var_1 ] : ( rel_from_reference_InformationLink ( Var_0 , Var_1 ) => ( type_InformationLink_class ( Var_0 ) & type_FunctionalOutput_class ( Var_1 ) ) ) ) . +fof ( compliance_to_reference_InformationLink , axiom , ! [ Var_0 , Var_1 ] : ( rel_to_reference_InformationLink ( Var_0 , Var_1 ) => ( type_InformationLink_class ( Var_0 ) & type_FunctionalInput_class ( Var_1 ) ) ) ) . +fof ( compliance_data_reference_FunctionalInterface , axiom , ! [ Var_0 , Var_1 ] : ( rel_data_reference_FunctionalInterface ( Var_0 , Var_1 ) => ( type_FunctionalInterface_class ( Var_0 ) & type_FunctionalData_class ( Var_1 ) ) ) ) . +fof ( compliance_element_reference_FunctionalInterface , axiom , ! [ Var_0 , Var_1 ] : ( rel_element_reference_FunctionalInterface ( Var_0 , Var_1 ) => ( type_FunctionalInterface_class ( Var_0 ) & type_FunctionalElement_class ( Var_1 ) ) ) ) . +fof ( compliance_IncomingLinks_reference_FunctionalInput , axiom , ! [ Var_0 , Var_1 ] : ( rel_IncomingLinks_reference_FunctionalInput ( Var_0 , Var_1 ) => ( type_FunctionalInput_class ( Var_0 ) & type_InformationLink_class ( Var_1 ) ) ) ) . +fof ( compliance_outgoingLinks_reference_FunctionalOutput , axiom , ! [ Var_0 , Var_1 ] : ( rel_outgoingLinks_reference_FunctionalOutput ( Var_0 , Var_1 ) => ( type_FunctionalOutput_class ( Var_0 ) & type_InformationLink_class ( Var_1 ) ) ) ) . +fof ( compliance_terminator_reference_FunctionalData , axiom , ! [ Var_0 , Var_1 ] : ( rel_terminator_reference_FunctionalData ( Var_0 , Var_1 ) => ( type_FunctionalData_class ( Var_0 ) & type_FAMTerminator_class ( Var_1 ) ) ) ) . +fof ( compliance_interface_reference_FunctionalData , axiom , ! [ Var_0 , Var_1 ] : ( rel_interface_reference_FunctionalData ( Var_0 , Var_1 ) => ( type_FunctionalData_class ( Var_0 ) & type_FunctionalInterface_class ( Var_1 ) ) ) ) . +fof ( compliance_type_attribute_Function , axiom , ! [ Var_0 , Var_1 ] : ( rel_type_attribute_Function ( Var_0 , Var_1 ) => ( type_Function_class ( Var_0 ) & type_FunctionType_enum ( Var_1 ) ) ) ) . +fof ( upperMultiplicity_interface_FunctionalElement , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalElement_class ( Var_src ) & ( type_FunctionalInterface_class ( Var_trg_1 ) & type_FunctionalInterface_class ( Var_trg_2 ) ) ) => ( ( rel_interface_reference_FunctionalElement ( Var_src , Var_trg_1 ) & rel_interface_reference_FunctionalElement ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_model_FunctionalElement , axiom , ! [ Var_src ] : ( type_FunctionalElement_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_FunctionalArchitectureModel_class ( Var_trg_1 ) & rel_model_reference_FunctionalElement ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_model_FunctionalElement , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalElement_class ( Var_src ) & ( type_FunctionalArchitectureModel_class ( Var_trg_1 ) & type_FunctionalArchitectureModel_class ( Var_trg_2 ) ) ) => ( ( rel_model_reference_FunctionalElement ( Var_src , Var_trg_1 ) & rel_model_reference_FunctionalElement ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_parent_FunctionalElement , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalElement_class ( Var_src ) & ( type_Function_class ( Var_trg_1 ) & type_Function_class ( Var_trg_2 ) ) ) => ( ( rel_parent_reference_FunctionalElement ( Var_src , Var_trg_1 ) & rel_parent_reference_FunctionalElement ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_data_FAMTerminator , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FAMTerminator_class ( Var_src ) & ( type_FunctionalData_class ( Var_trg_1 ) & type_FunctionalData_class ( Var_trg_2 ) ) ) => ( ( rel_data_reference_FAMTerminator ( Var_src , Var_trg_1 ) & rel_data_reference_FAMTerminator ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_from_InformationLink , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_InformationLink_class ( Var_src ) & ( type_FunctionalOutput_class ( Var_trg_1 ) & type_FunctionalOutput_class ( Var_trg_2 ) ) ) => ( ( rel_from_reference_InformationLink ( Var_src , Var_trg_1 ) & rel_from_reference_InformationLink ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_to_InformationLink , axiom , ! [ Var_src ] : ( type_InformationLink_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_FunctionalInput_class ( Var_trg_1 ) & rel_to_reference_InformationLink ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_to_InformationLink , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_InformationLink_class ( Var_src ) & ( type_FunctionalInput_class ( Var_trg_1 ) & type_FunctionalInput_class ( Var_trg_2 ) ) ) => ( ( rel_to_reference_InformationLink ( Var_src , Var_trg_1 ) & rel_to_reference_InformationLink ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_element_FunctionalInterface , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalInterface_class ( Var_src ) & ( type_FunctionalElement_class ( Var_trg_1 ) & type_FunctionalElement_class ( Var_trg_2 ) ) ) => ( ( rel_element_reference_FunctionalInterface ( Var_src , Var_trg_1 ) & rel_element_reference_FunctionalInterface ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_terminator_FunctionalData , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalData_class ( Var_src ) & ( type_FAMTerminator_class ( Var_trg_1 ) & type_FAMTerminator_class ( Var_trg_2 ) ) ) => ( ( rel_terminator_reference_FunctionalData ( Var_src , Var_trg_1 ) & rel_terminator_reference_FunctionalData ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_interface_FunctionalData , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalData_class ( Var_src ) & ( type_FunctionalInterface_class ( Var_trg_1 ) & type_FunctionalInterface_class ( Var_trg_2 ) ) ) => ( ( rel_interface_reference_FunctionalData ( Var_src , Var_trg_1 ) & rel_interface_reference_FunctionalData ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( oppositeReference_interface_FunctionalElement , axiom , ! [ Var_src , Var_trg ] : ( ( type_FunctionalElement_class ( Var_src ) & type_FunctionalInterface_class ( Var_trg ) ) => ( rel_interface_reference_FunctionalElement ( Var_src , Var_trg ) <=> rel_element_reference_FunctionalInterface ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_parent_FunctionalElement , axiom , ! [ Var_src , Var_trg ] : ( ( type_FunctionalElement_class ( Var_src ) & type_Function_class ( Var_trg ) ) => ( rel_parent_reference_FunctionalElement ( Var_src , Var_trg ) <=> rel_subElements_reference_Function ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_data_FAMTerminator , axiom , ! [ Var_src , Var_trg ] : ( ( type_FAMTerminator_class ( Var_src ) & type_FunctionalData_class ( Var_trg ) ) => ( rel_data_reference_FAMTerminator ( Var_src , Var_trg ) <=> rel_terminator_reference_FunctionalData ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_from_InformationLink , axiom , ! [ Var_src , Var_trg ] : ( ( type_InformationLink_class ( Var_src ) & type_FunctionalOutput_class ( Var_trg ) ) => ( rel_from_reference_InformationLink ( Var_src , Var_trg ) <=> rel_outgoingLinks_reference_FunctionalOutput ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_to_InformationLink , axiom , ! [ Var_src , Var_trg ] : ( ( type_InformationLink_class ( Var_src ) & type_FunctionalInput_class ( Var_trg ) ) => ( rel_to_reference_InformationLink ( Var_src , Var_trg ) <=> rel_IncomingLinks_reference_FunctionalInput ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_data_FunctionalInterface , axiom , ! [ Var_src , Var_trg ] : ( ( type_FunctionalInterface_class ( Var_src ) & type_FunctionalData_class ( Var_trg ) ) => ( rel_data_reference_FunctionalInterface ( Var_src , Var_trg ) <=> rel_interface_reference_FunctionalData ( Var_trg , Var_src ) ) ) ) . +fof ( lowerMultiplicity_type_Function , axiom , ! [ Var_src ] : ( type_Function_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_FunctionType_enum ( Var_trg_1 ) & rel_type_attribute_Function ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_type_Function , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_Function_class ( Var_src ) & ( type_FunctionType_enum ( Var_trg_1 ) & type_FunctionType_enum ( Var_trg_2 ) ) ) => ( ( rel_type_attribute_Function ( Var_src , Var_trg_1 ) & rel_type_attribute_Function ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem new file mode 100644 index 000000000..48991faa3 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/FAMTest/Fam.logicproblem @@ -0,0 +1,635 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/MedicalSystem/vampireProblem.tptp b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/MedicalSystem/vampireProblem.tptp new file mode 100644 index 000000000..c23afb9a7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/MedicalSystem/vampireProblem.tptp @@ -0,0 +1,67 @@ +% This is an initial Test Comment +fof ( typeDef_HealthSystem_class_DefinedPart , axiom , ! [ A ] : ( type_HealthSystem_class_DefinedPart ( A ) <=> A = "ao 1" ) ) . +fof ( hierarchyHandler , axiom , ! [ A ] : ( object ( A ) <=> ( ( type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( type_Immunization_class ( A ) & ( type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( ~ type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & ~ type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) | ( ~ type_MedicalRecord_class ( A ) & ( ~ type_Medicine_class ( A ) & ( ~ type_ExaminationResult_class ( A ) & ( ~ type_HealthSystem_class_DefinedPart ( A ) & ( ~ type_Patient_class ( A ) & ( ~ type_HealthSystem_class_UndefinedPart ( A ) & ( ~ type_Immunization_class ( A ) & ( type_Treatment_class ( A ) & ( ~ type_Disease_class ( A ) & ( ~ type_HealthSystem_class ( A ) & ( ~ type_Examination_class ( A ) & ( ~ type_Injury_class ( A ) & ( ~ type_Allergy_class ( A ) & ( ~ type_Symptom_class ( A ) & ( ~ type_HealthProblem_class ( A ) & type_Medication_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . +fof ( compliance_records_reference_Patient , axiom , ! [ Var_0 , Var_1 ] : ( rel_records_reference_Patient ( Var_0 , Var_1 ) => ( type_Patient_class ( Var_0 ) & type_MedicalRecord_class ( Var_1 ) ) ) ) . +fof ( compliance_healthsystem_reference_Patient , axiom , ! [ Var_0 , Var_1 ] : ( rel_healthsystem_reference_Patient ( Var_0 , Var_1 ) => ( type_Patient_class ( Var_0 ) & type_HealthSystem_class ( Var_1 ) ) ) ) . +fof ( compliance_patient_reference_HealthSystem , axiom , ! [ Var_0 , Var_1 ] : ( rel_patient_reference_HealthSystem ( Var_0 , Var_1 ) => ( type_HealthSystem_class ( Var_0 ) & type_Patient_class ( Var_1 ) ) ) ) . +fof ( compliance_examination_reference_HealthSystem , axiom , ! [ Var_0 , Var_1 ] : ( rel_examination_reference_HealthSystem ( Var_0 , Var_1 ) => ( type_HealthSystem_class ( Var_0 ) & type_Examination_class ( Var_1 ) ) ) ) . +fof ( compliance_medicine_reference_HealthSystem , axiom , ! [ Var_0 , Var_1 ] : ( rel_medicine_reference_HealthSystem ( Var_0 , Var_1 ) => ( type_HealthSystem_class ( Var_0 ) & type_Medicine_class ( Var_1 ) ) ) ) . +fof ( compliance_examinationResult_reference_Examination , axiom , ! [ Var_0 , Var_1 ] : ( rel_examinationResult_reference_Examination ( Var_0 , Var_1 ) => ( type_Examination_class ( Var_0 ) & type_ExaminationResult_class ( Var_1 ) ) ) ) . +fof ( compliance_healthsystem_reference_Examination , axiom , ! [ Var_0 , Var_1 ] : ( rel_healthsystem_reference_Examination ( Var_0 , Var_1 ) => ( type_Examination_class ( Var_0 ) & type_HealthSystem_class ( Var_1 ) ) ) ) . +fof ( compliance_medicalrecord_reference_Symptom , axiom , ! [ Var_0 , Var_1 ] : ( rel_medicalrecord_reference_Symptom ( Var_0 , Var_1 ) => ( type_Symptom_class ( Var_0 ) & type_MedicalRecord_class ( Var_1 ) ) ) ) . +fof ( compliance_examinationType_reference_ExaminationResult , axiom , ! [ Var_0 , Var_1 ] : ( rel_examinationType_reference_ExaminationResult ( Var_0 , Var_1 ) => ( type_ExaminationResult_class ( Var_0 ) & type_Examination_class ( Var_1 ) ) ) ) . +fof ( compliance_medicalrecord_reference_ExaminationResult , axiom , ! [ Var_0 , Var_1 ] : ( rel_medicalrecord_reference_ExaminationResult ( Var_0 , Var_1 ) => ( type_ExaminationResult_class ( Var_0 ) & type_MedicalRecord_class ( Var_1 ) ) ) ) . +fof ( compliance_patient_reference_MedicalRecord , axiom , ! [ Var_0 , Var_1 ] : ( rel_patient_reference_MedicalRecord ( Var_0 , Var_1 ) => ( type_MedicalRecord_class ( Var_0 ) & type_Patient_class ( Var_1 ) ) ) ) . +fof ( compliance_healthProblems_reference_MedicalRecord , axiom , ! [ Var_0 , Var_1 ] : ( rel_healthProblems_reference_MedicalRecord ( Var_0 , Var_1 ) => ( type_MedicalRecord_class ( Var_0 ) & type_HealthProblem_class ( Var_1 ) ) ) ) . +fof ( compliance_symptom_reference_MedicalRecord , axiom , ! [ Var_0 , Var_1 ] : ( rel_symptom_reference_MedicalRecord ( Var_0 , Var_1 ) => ( type_MedicalRecord_class ( Var_0 ) & type_Symptom_class ( Var_1 ) ) ) ) . +fof ( compliance_examinationResults_reference_MedicalRecord , axiom , ! [ Var_0 , Var_1 ] : ( rel_examinationResults_reference_MedicalRecord ( Var_0 , Var_1 ) => ( type_MedicalRecord_class ( Var_0 ) & type_ExaminationResult_class ( Var_1 ) ) ) ) . +fof ( compliance_treatment_reference_MedicalRecord , axiom , ! [ Var_0 , Var_1 ] : ( rel_treatment_reference_MedicalRecord ( Var_0 , Var_1 ) => ( type_MedicalRecord_class ( Var_0 ) & type_Treatment_class ( Var_1 ) ) ) ) . +fof ( compliance_record_reference_HealthProblem , axiom , ! [ Var_0 , Var_1 ] : ( rel_record_reference_HealthProblem ( Var_0 , Var_1 ) => ( type_HealthProblem_class ( Var_0 ) & type_MedicalRecord_class ( Var_1 ) ) ) ) . +fof ( compliance_recommended_medicine_reference_HealthProblem , axiom , ! [ Var_0 , Var_1 ] : ( rel_recommended_medicine_reference_HealthProblem ( Var_0 , Var_1 ) => ( type_HealthProblem_class ( Var_0 ) & type_Medicine_class ( Var_1 ) ) ) ) . +fof ( compliance_medicine_reference_Treatment , axiom , ! [ Var_0 , Var_1 ] : ( rel_medicine_reference_Treatment ( Var_0 , Var_1 ) => ( type_Treatment_class ( Var_0 ) & type_Medicine_class ( Var_1 ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_treatment , axiom , ! [ Var_parameter_mr , Var_parameter_tr ] : ( rel_pattern_ca_mcgill_dp19_queries_treatment ( Var_parameter_mr , Var_parameter_tr ) => ( type_MedicalRecord_class ( Var_parameter_mr ) & type_Treatment_class ( Var_parameter_tr ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_treatment , axiom , ! [ Var_parameter_mr , Var_parameter_tr ] : ( ( type_MedicalRecord_class ( Var_parameter_mr ) & type_Treatment_class ( Var_parameter_tr ) ) => ( rel_pattern_ca_mcgill_dp19_queries_treatment ( Var_parameter_mr , Var_parameter_tr ) <=> ( rel_treatment_reference_MedicalRecord ( Var_parameter_mr , Var_parameter_tr ) & type_Treatment_class ( Var_parameter_tr ) ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_examinationresult , axiom , ! [ Var_parameter_mr , Var_parameter_er ] : ( rel_pattern_ca_mcgill_dp19_queries_examinationresult ( Var_parameter_mr , Var_parameter_er ) => ( type_ExaminationResult_class ( Var_parameter_er ) & type_MedicalRecord_class ( Var_parameter_mr ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_examinationresult , axiom , ! [ Var_parameter_mr , Var_parameter_er ] : ( ( type_ExaminationResult_class ( Var_parameter_er ) & type_MedicalRecord_class ( Var_parameter_mr ) ) => ( rel_pattern_ca_mcgill_dp19_queries_examinationresult ( Var_parameter_mr , Var_parameter_er ) <=> rel_examinationResults_reference_MedicalRecord ( Var_parameter_mr , Var_parameter_er ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_symptom , axiom , ! [ Var_parameter_mr , Var_parameter_sy ] : ( rel_pattern_ca_mcgill_dp19_queries_symptom ( Var_parameter_mr , Var_parameter_sy ) => ( type_MedicalRecord_class ( Var_parameter_mr ) & type_Symptom_class ( Var_parameter_sy ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_symptom , axiom , ! [ Var_parameter_mr , Var_parameter_sy ] : ( ( type_MedicalRecord_class ( Var_parameter_mr ) & type_Symptom_class ( Var_parameter_sy ) ) => ( rel_pattern_ca_mcgill_dp19_queries_symptom ( Var_parameter_mr , Var_parameter_sy ) <=> rel_symptom_reference_MedicalRecord ( Var_parameter_mr , Var_parameter_sy ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_treatmentWithoutSymptom , axiom , ! [ Var_parameter_mr ] : ( rel_pattern_ca_mcgill_dp19_queries_treatmentWithoutSymptom ( Var_parameter_mr ) => type_MedicalRecord_class ( Var_parameter_mr ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_treatmentWithoutSymptom , axiom , ! [ Var_parameter_mr ] : ( type_MedicalRecord_class ( Var_parameter_mr ) => ( rel_pattern_ca_mcgill_dp19_queries_treatmentWithoutSymptom ( Var_parameter_mr ) <=> ? [ Var_variable_tr ] : ( type_Treatment_class ( Var_variable_tr ) & ! [ Var_variable_0 ] : ( type_Symptom_class ( Var_variable_0 ) => ( rel_pattern_ca_mcgill_dp19_queries_treatment ( Var_parameter_mr , Var_variable_tr ) & ~ rel_pattern_ca_mcgill_dp19_queries_symptom ( Var_parameter_mr , Var_variable_0 ) ) ) ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_healthProblems , axiom , ! [ Var_parameter_mr , Var_parameter_hp ] : ( rel_pattern_ca_mcgill_dp19_queries_healthProblems ( Var_parameter_mr , Var_parameter_hp ) => ( type_MedicalRecord_class ( Var_parameter_mr ) & type_HealthProblem_class ( Var_parameter_hp ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_healthProblems , axiom , ! [ Var_parameter_mr , Var_parameter_hp ] : ( ( type_MedicalRecord_class ( Var_parameter_mr ) & type_HealthProblem_class ( Var_parameter_hp ) ) => ( rel_pattern_ca_mcgill_dp19_queries_healthProblems ( Var_parameter_mr , Var_parameter_hp ) <=> rel_healthProblems_reference_MedicalRecord ( Var_parameter_mr , Var_parameter_hp ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_healthProblemsWithoutExaminationResult , axiom , ! [ Var_parameter_mr ] : ( rel_pattern_ca_mcgill_dp19_queries_healthProblemsWithoutExaminationResult ( Var_parameter_mr ) => type_MedicalRecord_class ( Var_parameter_mr ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_healthProblemsWithoutExaminationResult , axiom , ! [ Var_parameter_mr ] : ( type_MedicalRecord_class ( Var_parameter_mr ) => ( rel_pattern_ca_mcgill_dp19_queries_healthProblemsWithoutExaminationResult ( Var_parameter_mr ) <=> ? [ Var_variable_hp ] : ( type_HealthProblem_class ( Var_variable_hp ) & ! [ Var_variable_0 ] : ( type_ExaminationResult_class ( Var_variable_0 ) => ( rel_pattern_ca_mcgill_dp19_queries_healthProblems ( Var_parameter_mr , Var_variable_hp ) & ~ rel_pattern_ca_mcgill_dp19_queries_examinationresult ( Var_parameter_mr , Var_variable_0 ) ) ) ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_allergy , axiom , ! [ Var_parameter_mr , Var_parameter_al ] : ( rel_pattern_ca_mcgill_dp19_queries_allergy ( Var_parameter_mr , Var_parameter_al ) => ( type_Allergy_class ( Var_parameter_al ) & type_MedicalRecord_class ( Var_parameter_mr ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_allergy , axiom , ! [ Var_parameter_mr , Var_parameter_al ] : ( ( type_Allergy_class ( Var_parameter_al ) & type_MedicalRecord_class ( Var_parameter_mr ) ) => ( rel_pattern_ca_mcgill_dp19_queries_allergy ( Var_parameter_mr , Var_parameter_al ) <=> ( type_Allergy_class ( Var_parameter_al ) & rel_pattern_ca_mcgill_dp19_queries_healthProblems ( Var_parameter_mr , Var_parameter_al ) ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_allergyWithoutSymptom , axiom , ! [ Var_parameter_mr ] : ( rel_pattern_ca_mcgill_dp19_queries_allergyWithoutSymptom ( Var_parameter_mr ) => type_MedicalRecord_class ( Var_parameter_mr ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_allergyWithoutSymptom , axiom , ! [ Var_parameter_mr ] : ( type_MedicalRecord_class ( Var_parameter_mr ) => ( rel_pattern_ca_mcgill_dp19_queries_allergyWithoutSymptom ( Var_parameter_mr ) <=> ? [ Var_variable_al ] : ( type_Allergy_class ( Var_variable_al ) & ! [ Var_variable_0 ] : ( type_Symptom_class ( Var_variable_0 ) => ( rel_pattern_ca_mcgill_dp19_queries_allergy ( Var_parameter_mr , Var_variable_al ) & ~ rel_pattern_ca_mcgill_dp19_queries_symptom ( Var_parameter_mr , Var_variable_0 ) ) ) ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_recommended , axiom , ! [ Var_parameter_hp , Var_parameter_med ] : ( rel_pattern_ca_mcgill_dp19_queries_recommended ( Var_parameter_hp , Var_parameter_med ) => ( type_HealthProblem_class ( Var_parameter_hp ) & type_Medicine_class ( Var_parameter_med ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_recommended , axiom , ! [ Var_parameter_hp , Var_parameter_med ] : ( ( type_HealthProblem_class ( Var_parameter_hp ) & type_Medicine_class ( Var_parameter_med ) ) => ( rel_pattern_ca_mcgill_dp19_queries_recommended ( Var_parameter_hp , Var_parameter_med ) <=> ( rel_recommended_medicine_reference_HealthProblem ( Var_parameter_hp , Var_parameter_med ) & type_Medicine_class ( Var_parameter_med ) ) ) ) ) . +fof ( compliance_pattern_ca_mcgill_dp19_queries_prescribedMedicineNotRecommended , axiom , ! [ Var_parameter_mr , Var_parameter_med ] : ( rel_pattern_ca_mcgill_dp19_queries_prescribedMedicineNotRecommended ( Var_parameter_mr , Var_parameter_med ) => ( type_Medicine_class ( Var_parameter_med ) & type_MedicalRecord_class ( Var_parameter_mr ) ) ) ) . +fof ( relation_pattern_ca_mcgill_dp19_queries_prescribedMedicineNotRecommended , axiom , ! [ Var_parameter_mr , Var_parameter_med ] : ( ( type_Medicine_class ( Var_parameter_med ) & type_MedicalRecord_class ( Var_parameter_mr ) ) => ( rel_pattern_ca_mcgill_dp19_queries_prescribedMedicineNotRecommended ( Var_parameter_mr , Var_parameter_med ) <=> ? [ Var_variable_hp , Var_variable_tr ] : ( type_HealthProblem_class ( Var_variable_hp ) & ( type_Treatment_class ( Var_variable_tr ) & ( rel_pattern_ca_mcgill_dp19_queries_healthProblems ( Var_parameter_mr , Var_variable_hp ) & ( rel_pattern_ca_mcgill_dp19_queries_treatment ( Var_parameter_mr , Var_variable_tr ) & ( rel_medicine_reference_Treatment ( Var_variable_tr , Var_parameter_med ) & ( type_Medicine_class ( Var_parameter_med ) & ~ rel_pattern_ca_mcgill_dp19_queries_recommended ( Var_variable_hp , Var_parameter_med ) ) ) ) ) ) ) ) ) ) . +fof ( upperMultiplicity_healthsystem_Patient , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_Patient_class ( Var_src ) & ( type_HealthSystem_class ( Var_trg_1 ) & type_HealthSystem_class ( Var_trg_2 ) ) ) => ( ( rel_healthsystem_reference_Patient ( Var_src , Var_trg_1 ) & rel_healthsystem_reference_Patient ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_examination_HealthSystem , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_HealthSystem_class ( Var_src ) & ( type_Examination_class ( Var_trg_1 ) & type_Examination_class ( Var_trg_2 ) ) ) => ( ( rel_examination_reference_HealthSystem ( Var_src , Var_trg_1 ) & rel_examination_reference_HealthSystem ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_healthsystem_Examination , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_Examination_class ( Var_src ) & ( type_HealthSystem_class ( Var_trg_1 ) & type_HealthSystem_class ( Var_trg_2 ) ) ) => ( ( rel_healthsystem_reference_Examination ( Var_src , Var_trg_1 ) & rel_healthsystem_reference_Examination ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_medicalrecord_Symptom , axiom , ! [ Var_src ] : ( type_Symptom_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_MedicalRecord_class ( Var_trg_1 ) & rel_medicalrecord_reference_Symptom ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_medicalrecord_Symptom , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_Symptom_class ( Var_src ) & ( type_MedicalRecord_class ( Var_trg_1 ) & type_MedicalRecord_class ( Var_trg_2 ) ) ) => ( ( rel_medicalrecord_reference_Symptom ( Var_src , Var_trg_1 ) & rel_medicalrecord_reference_Symptom ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_examinationType_ExaminationResult , axiom , ! [ Var_src ] : ( type_ExaminationResult_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_Examination_class ( Var_trg_1 ) & rel_examinationType_reference_ExaminationResult ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_examinationType_ExaminationResult , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_ExaminationResult_class ( Var_src ) & ( type_Examination_class ( Var_trg_1 ) & type_Examination_class ( Var_trg_2 ) ) ) => ( ( rel_examinationType_reference_ExaminationResult ( Var_src , Var_trg_1 ) & rel_examinationType_reference_ExaminationResult ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_medicalrecord_ExaminationResult , axiom , ! [ Var_src ] : ( type_ExaminationResult_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_MedicalRecord_class ( Var_trg_1 ) & rel_medicalrecord_reference_ExaminationResult ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_medicalrecord_ExaminationResult , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_ExaminationResult_class ( Var_src ) & ( type_MedicalRecord_class ( Var_trg_1 ) & type_MedicalRecord_class ( Var_trg_2 ) ) ) => ( ( rel_medicalrecord_reference_ExaminationResult ( Var_src , Var_trg_1 ) & rel_medicalrecord_reference_ExaminationResult ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_patient_MedicalRecord , axiom , ! [ Var_src ] : ( type_MedicalRecord_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_Patient_class ( Var_trg_1 ) & rel_patient_reference_MedicalRecord ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_patient_MedicalRecord , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_MedicalRecord_class ( Var_src ) & ( type_Patient_class ( Var_trg_1 ) & type_Patient_class ( Var_trg_2 ) ) ) => ( ( rel_patient_reference_MedicalRecord ( Var_src , Var_trg_1 ) & rel_patient_reference_MedicalRecord ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_record_HealthProblem , axiom , ! [ Var_src ] : ( type_HealthProblem_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_MedicalRecord_class ( Var_trg_1 ) & rel_record_reference_HealthProblem ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_record_HealthProblem , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_HealthProblem_class ( Var_src ) & ( type_MedicalRecord_class ( Var_trg_1 ) & type_MedicalRecord_class ( Var_trg_2 ) ) ) => ( ( rel_record_reference_HealthProblem ( Var_src , Var_trg_1 ) & rel_record_reference_HealthProblem ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_medicine_Treatment , axiom , ! [ Var_src ] : ( type_Treatment_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_Medicine_class ( Var_trg_1 ) & rel_medicine_reference_Treatment ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_medicine_Treatment , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_Treatment_class ( Var_src ) & ( type_Medicine_class ( Var_trg_1 ) & type_Medicine_class ( Var_trg_2 ) ) ) => ( ( rel_medicine_reference_Treatment ( Var_src , Var_trg_1 ) & rel_medicine_reference_Treatment ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( oppositeReference_records_Patient , axiom , ! [ Var_src , Var_trg ] : ( ( type_Patient_class ( Var_src ) & type_MedicalRecord_class ( Var_trg ) ) => ( rel_records_reference_Patient ( Var_src , Var_trg ) <=> rel_patient_reference_MedicalRecord ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_healthsystem_Patient , axiom , ! [ Var_src , Var_trg ] : ( ( type_Patient_class ( Var_src ) & type_HealthSystem_class ( Var_trg ) ) => ( rel_healthsystem_reference_Patient ( Var_src , Var_trg ) <=> rel_patient_reference_HealthSystem ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_examination_HealthSystem , axiom , ! [ Var_src , Var_trg ] : ( ( type_HealthSystem_class ( Var_src ) & type_Examination_class ( Var_trg ) ) => ( rel_examination_reference_HealthSystem ( Var_src , Var_trg ) <=> rel_healthsystem_reference_Examination ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_examinationResult_Examination , axiom , ! [ Var_src , Var_trg ] : ( ( type_Examination_class ( Var_src ) & type_ExaminationResult_class ( Var_trg ) ) => ( rel_examinationResult_reference_Examination ( Var_src , Var_trg ) <=> rel_examinationType_reference_ExaminationResult ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_medicalrecord_Symptom , axiom , ! [ Var_src , Var_trg ] : ( ( type_Symptom_class ( Var_src ) & type_MedicalRecord_class ( Var_trg ) ) => ( rel_medicalrecord_reference_Symptom ( Var_src , Var_trg ) <=> rel_symptom_reference_MedicalRecord ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_medicalrecord_ExaminationResult , axiom , ! [ Var_src , Var_trg ] : ( ( type_ExaminationResult_class ( Var_src ) & type_MedicalRecord_class ( Var_trg ) ) => ( rel_medicalrecord_reference_ExaminationResult ( Var_src , Var_trg ) <=> rel_examinationResults_reference_MedicalRecord ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_healthProblems_MedicalRecord , axiom , ! [ Var_src , Var_trg ] : ( ( type_MedicalRecord_class ( Var_src ) & type_HealthProblem_class ( Var_trg ) ) => ( rel_healthProblems_reference_MedicalRecord ( Var_src , Var_trg ) <=> rel_record_reference_HealthProblem ( Var_trg , Var_src ) ) ) ) . +fof ( errorpattern_ca_mcgill_dp19_queries_treatmentWithoutSymptom , axiom , ! [ Var_mr ] : ( type_MedicalRecord_class ( Var_mr ) => ~ rel_pattern_ca_mcgill_dp19_queries_treatmentWithoutSymptom ( Var_mr ) ) ) . +fof ( errorpattern_ca_mcgill_dp19_queries_healthProblemsWithoutExaminationResult , axiom , ! [ Var_mr ] : ( type_MedicalRecord_class ( Var_mr ) => ~ rel_pattern_ca_mcgill_dp19_queries_healthProblemsWithoutExaminationResult ( Var_mr ) ) ) . +fof ( errorpattern_ca_mcgill_dp19_queries_allergyWithoutSymptom , axiom , ! [ Var_mr ] : ( type_MedicalRecord_class ( Var_mr ) => ~ rel_pattern_ca_mcgill_dp19_queries_allergyWithoutSymptom ( Var_mr ) ) ) . +fof ( errorpattern_ca_mcgill_dp19_queries_prescribedMedicineNotRecommended , axiom , ! [ Var_mr , Var_med ] : ( ( type_MedicalRecord_class ( Var_mr ) & type_Medicine_class ( Var_med ) ) => ~ rel_pattern_ca_mcgill_dp19_queries_prescribedMedicineNotRecommended ( Var_mr , Var_med ) ) ) . diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/VampireTest/problem.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/VampireTest/problem.logicproblem new file mode 100644 index 000000000..751860c5a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/VampireTest/problem.logicproblem @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/files/logProb.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/files/logProb.logicproblem new file mode 100644 index 000000000..2529b6d72 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/files/logProb.logicproblem @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/files/vampireCode.tptp b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/files/vampireCode.tptp new file mode 100644 index 000000000..6decf0707 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/output/files/vampireCode.tptp @@ -0,0 +1,38 @@ +% This is an initial Test Comment +fof ( typeDef_FunctionType_enum , axiom , ! [ A ] : ( type_FunctionType_enum ( A ) <=> ( A = "aRoot literal FunctionType" | ( A = "aIntermediate literal FunctionType" | A = "aLeaf literal FunctionType" ) ) ) ) . +fof ( hierarchyHandler , axiom , ! [ A ] : ( object ( A ) <=> ( ( type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( type_FunctionalOutput_class ( A ) & ~ type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) | ( ~ type_InformationLink_class ( A ) & ( ~ type_FunctionalElement_class ( A ) & ( ~ type_FunctionalInput_class ( A ) & ( ~ type_FunctionType_enum ( A ) & ( ~ type_FAMTerminator_class ( A ) & ( ~ type_FunctionalData_class ( A ) & ( ~ type_FunctionalInterface_class ( A ) & ( ~ type_Function_class ( A ) & ( ~ type_FunctionalOutput_class ( A ) & type_FunctionalArchitectureModel_class ( A ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . +fof ( compliance_interface_reference_FunctionalElement , axiom , ! [ Var_0 , Var_1 ] : ( rel_interface_reference_FunctionalElement ( Var_0 , Var_1 ) => ( type_FunctionalElement_class ( Var_0 ) & type_FunctionalInterface_class ( Var_1 ) ) ) ) . +fof ( compliance_model_reference_FunctionalElement , axiom , ! [ Var_0 , Var_1 ] : ( rel_model_reference_FunctionalElement ( Var_0 , Var_1 ) => ( type_FunctionalElement_class ( Var_0 ) & type_FunctionalArchitectureModel_class ( Var_1 ) ) ) ) . +fof ( compliance_parent_reference_FunctionalElement , axiom , ! [ Var_0 , Var_1 ] : ( rel_parent_reference_FunctionalElement ( Var_0 , Var_1 ) => ( type_FunctionalElement_class ( Var_0 ) & type_Function_class ( Var_1 ) ) ) ) . +fof ( compliance_rootElements_reference_FunctionalArchitectureModel , axiom , ! [ Var_0 , Var_1 ] : ( rel_rootElements_reference_FunctionalArchitectureModel ( Var_0 , Var_1 ) => ( type_FunctionalArchitectureModel_class ( Var_0 ) & type_FunctionalElement_class ( Var_1 ) ) ) ) . +fof ( compliance_subElements_reference_Function , axiom , ! [ Var_0 , Var_1 ] : ( rel_subElements_reference_Function ( Var_0 , Var_1 ) => ( type_Function_class ( Var_0 ) & type_FunctionalElement_class ( Var_1 ) ) ) ) . +fof ( compliance_data_reference_FAMTerminator , axiom , ! [ Var_0 , Var_1 ] : ( rel_data_reference_FAMTerminator ( Var_0 , Var_1 ) => ( type_FAMTerminator_class ( Var_0 ) & type_FunctionalData_class ( Var_1 ) ) ) ) . +fof ( compliance_from_reference_InformationLink , axiom , ! [ Var_0 , Var_1 ] : ( rel_from_reference_InformationLink ( Var_0 , Var_1 ) => ( type_InformationLink_class ( Var_0 ) & type_FunctionalOutput_class ( Var_1 ) ) ) ) . +fof ( compliance_to_reference_InformationLink , axiom , ! [ Var_0 , Var_1 ] : ( rel_to_reference_InformationLink ( Var_0 , Var_1 ) => ( type_InformationLink_class ( Var_0 ) & type_FunctionalInput_class ( Var_1 ) ) ) ) . +fof ( compliance_data_reference_FunctionalInterface , axiom , ! [ Var_0 , Var_1 ] : ( rel_data_reference_FunctionalInterface ( Var_0 , Var_1 ) => ( type_FunctionalInterface_class ( Var_0 ) & type_FunctionalData_class ( Var_1 ) ) ) ) . +fof ( compliance_element_reference_FunctionalInterface , axiom , ! [ Var_0 , Var_1 ] : ( rel_element_reference_FunctionalInterface ( Var_0 , Var_1 ) => ( type_FunctionalInterface_class ( Var_0 ) & type_FunctionalElement_class ( Var_1 ) ) ) ) . +fof ( compliance_IncomingLinks_reference_FunctionalInput , axiom , ! [ Var_0 , Var_1 ] : ( rel_IncomingLinks_reference_FunctionalInput ( Var_0 , Var_1 ) => ( type_FunctionalInput_class ( Var_0 ) & type_InformationLink_class ( Var_1 ) ) ) ) . +fof ( compliance_outgoingLinks_reference_FunctionalOutput , axiom , ! [ Var_0 , Var_1 ] : ( rel_outgoingLinks_reference_FunctionalOutput ( Var_0 , Var_1 ) => ( type_FunctionalOutput_class ( Var_0 ) & type_InformationLink_class ( Var_1 ) ) ) ) . +fof ( compliance_terminator_reference_FunctionalData , axiom , ! [ Var_0 , Var_1 ] : ( rel_terminator_reference_FunctionalData ( Var_0 , Var_1 ) => ( type_FunctionalData_class ( Var_0 ) & type_FAMTerminator_class ( Var_1 ) ) ) ) . +fof ( compliance_interface_reference_FunctionalData , axiom , ! [ Var_0 , Var_1 ] : ( rel_interface_reference_FunctionalData ( Var_0 , Var_1 ) => ( type_FunctionalData_class ( Var_0 ) & type_FunctionalInterface_class ( Var_1 ) ) ) ) . +fof ( compliance_type_attribute_Function , axiom , ! [ Var_0 , Var_1 ] : ( rel_type_attribute_Function ( Var_0 , Var_1 ) => ( type_Function_class ( Var_0 ) & type_FunctionType_enum ( Var_1 ) ) ) ) . +fof ( upperMultiplicity_interface_FunctionalElement , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalElement_class ( Var_src ) & ( type_FunctionalInterface_class ( Var_trg_1 ) & type_FunctionalInterface_class ( Var_trg_2 ) ) ) => ( ( rel_interface_reference_FunctionalElement ( Var_src , Var_trg_1 ) & rel_interface_reference_FunctionalElement ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_model_FunctionalElement , axiom , ! [ Var_src ] : ( type_FunctionalElement_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_FunctionalArchitectureModel_class ( Var_trg_1 ) & rel_model_reference_FunctionalElement ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_model_FunctionalElement , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalElement_class ( Var_src ) & ( type_FunctionalArchitectureModel_class ( Var_trg_1 ) & type_FunctionalArchitectureModel_class ( Var_trg_2 ) ) ) => ( ( rel_model_reference_FunctionalElement ( Var_src , Var_trg_1 ) & rel_model_reference_FunctionalElement ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_parent_FunctionalElement , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalElement_class ( Var_src ) & ( type_Function_class ( Var_trg_1 ) & type_Function_class ( Var_trg_2 ) ) ) => ( ( rel_parent_reference_FunctionalElement ( Var_src , Var_trg_1 ) & rel_parent_reference_FunctionalElement ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_data_FAMTerminator , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FAMTerminator_class ( Var_src ) & ( type_FunctionalData_class ( Var_trg_1 ) & type_FunctionalData_class ( Var_trg_2 ) ) ) => ( ( rel_data_reference_FAMTerminator ( Var_src , Var_trg_1 ) & rel_data_reference_FAMTerminator ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_from_InformationLink , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_InformationLink_class ( Var_src ) & ( type_FunctionalOutput_class ( Var_trg_1 ) & type_FunctionalOutput_class ( Var_trg_2 ) ) ) => ( ( rel_from_reference_InformationLink ( Var_src , Var_trg_1 ) & rel_from_reference_InformationLink ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( lowerMultiplicity_to_InformationLink , axiom , ! [ Var_src ] : ( type_InformationLink_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_FunctionalInput_class ( Var_trg_1 ) & rel_to_reference_InformationLink ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_to_InformationLink , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_InformationLink_class ( Var_src ) & ( type_FunctionalInput_class ( Var_trg_1 ) & type_FunctionalInput_class ( Var_trg_2 ) ) ) => ( ( rel_to_reference_InformationLink ( Var_src , Var_trg_1 ) & rel_to_reference_InformationLink ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_element_FunctionalInterface , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalInterface_class ( Var_src ) & ( type_FunctionalElement_class ( Var_trg_1 ) & type_FunctionalElement_class ( Var_trg_2 ) ) ) => ( ( rel_element_reference_FunctionalInterface ( Var_src , Var_trg_1 ) & rel_element_reference_FunctionalInterface ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_terminator_FunctionalData , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalData_class ( Var_src ) & ( type_FAMTerminator_class ( Var_trg_1 ) & type_FAMTerminator_class ( Var_trg_2 ) ) ) => ( ( rel_terminator_reference_FunctionalData ( Var_src , Var_trg_1 ) & rel_terminator_reference_FunctionalData ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( upperMultiplicity_interface_FunctionalData , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_FunctionalData_class ( Var_src ) & ( type_FunctionalInterface_class ( Var_trg_1 ) & type_FunctionalInterface_class ( Var_trg_2 ) ) ) => ( ( rel_interface_reference_FunctionalData ( Var_src , Var_trg_1 ) & rel_interface_reference_FunctionalData ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . +fof ( oppositeReference_interface_FunctionalElement , axiom , ! [ Var_src , Var_trg ] : ( ( type_FunctionalElement_class ( Var_src ) & type_FunctionalInterface_class ( Var_trg ) ) => ( rel_interface_reference_FunctionalElement ( Var_src , Var_trg ) <=> rel_element_reference_FunctionalInterface ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_parent_FunctionalElement , axiom , ! [ Var_src , Var_trg ] : ( ( type_FunctionalElement_class ( Var_src ) & type_Function_class ( Var_trg ) ) => ( rel_parent_reference_FunctionalElement ( Var_src , Var_trg ) <=> rel_subElements_reference_Function ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_data_FAMTerminator , axiom , ! [ Var_src , Var_trg ] : ( ( type_FAMTerminator_class ( Var_src ) & type_FunctionalData_class ( Var_trg ) ) => ( rel_data_reference_FAMTerminator ( Var_src , Var_trg ) <=> rel_terminator_reference_FunctionalData ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_from_InformationLink , axiom , ! [ Var_src , Var_trg ] : ( ( type_InformationLink_class ( Var_src ) & type_FunctionalOutput_class ( Var_trg ) ) => ( rel_from_reference_InformationLink ( Var_src , Var_trg ) <=> rel_outgoingLinks_reference_FunctionalOutput ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_to_InformationLink , axiom , ! [ Var_src , Var_trg ] : ( ( type_InformationLink_class ( Var_src ) & type_FunctionalInput_class ( Var_trg ) ) => ( rel_to_reference_InformationLink ( Var_src , Var_trg ) <=> rel_IncomingLinks_reference_FunctionalInput ( Var_trg , Var_src ) ) ) ) . +fof ( oppositeReference_data_FunctionalInterface , axiom , ! [ Var_src , Var_trg ] : ( ( type_FunctionalInterface_class ( Var_src ) & type_FunctionalData_class ( Var_trg ) ) => ( rel_data_reference_FunctionalInterface ( Var_src , Var_trg ) <=> rel_interface_reference_FunctionalData ( Var_trg , Var_src ) ) ) ) . +fof ( lowerMultiplicity_type_Function , axiom , ! [ Var_src ] : ( type_Function_class ( Var_src ) => ? [ Var_trg_1 ] : ( type_FunctionType_enum ( Var_trg_1 ) & rel_type_attribute_Function ( Var_src , Var_trg_1 ) ) ) ) . +fof ( upperMultiplicity_type_Function , axiom , ! [ Var_src , Var_trg_1 , Var_trg_2 ] : ( ( type_Function_class ( Var_src ) & ( type_FunctionType_enum ( Var_trg_1 ) & type_FunctionType_enum ( Var_trg_2 ) ) ) => ( ( rel_type_attribute_Function ( Var_src , Var_trg_1 ) & rel_type_attribute_Function ( Var_src , Var_trg_2 ) ) => ~ Var_trg_1 != Var_trg_2 ) ) ) . + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.properties b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.properties new file mode 100644 index 000000000..6021c31d4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = Test +providerName = www.example.org diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml new file mode 100644 index 000000000..fa271bd32 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/plugin.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/.gitignore new file mode 100644 index 000000000..96fc598c5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src-gen/ca/mcgill/ecse/dslreasoner/vampire/queries/.gitignore @@ -0,0 +1,50 @@ +/.EntryInRegion_M0.java._trace +/.EntryInRegion_M1.java._trace +/.EntryInRegion_M2.java._trace +/.FamPatterns.java._trace +/.MultipleEntryInRegion_M0.java._trace +/.MultipleEntryInRegion_M1.java._trace +/.MultipleEntryInRegion_M2.java._trace +/.MultipleEntryInRegion_M3.java._trace +/.MultipleEntryInRegion_M4.java._trace +/.MultipleEntryInRegion_M5.java._trace +/.NoEntryInRegion_M0.java._trace +/.NoEntryInRegion_M1.java._trace +/.NoEntryInRegion_M2.java._trace +/.NoEntryInRegion_M3.java._trace +/.NoEntryInRegion_M4.java._trace +/.NoEntryInRegion_M5.java._trace +/.TerminatorAndInformation.java._trace +/.Transition_M0.java._trace +/.Transition_M1.java._trace +/.EntryInRegion.java._trace +/.IncomingToEntry.java._trace +/.MultipleEntryInRegion.java._trace +/.MultipleTransitionFromEntry.java._trace +/.NoEntryInRegion.java._trace +/.NoOutgoingTransitionFromEntry.java._trace +/.NoStateInRegion.java._trace +/.OutgoingFromExit.java._trace +/.OutgoingFromFinal.java._trace +/.StateInRegion.java._trace +/.Transition.java._trace +/.Child.java._trace +/.ChoiceHasNoIncoming.java._trace +/.ChoiceHasNoOutgoing.java._trace +/.HasMultipleIncomingTrainsition.java._trace +/.HasMultipleOutgoingTrainsition.java._trace +/.HasMultipleRegions.java._trace +/.NotSynchronizingStates.java._trace +/.SynchHasNoIncoming.java._trace +/.SynchHasNoOutgoing.java._trace +/.SynchThree.java._trace +/.SynchronizedIncomingInSameRegion.java._trace +/.SynchronizedRegionDoesNotHaveMultipleRegions.java._trace +/.SynchronizedRegionsAreNotSiblings.java._trace +/.TwoSynch.java._trace +/.YakinduPatterns.java._trace +/.Transition_M2.java._trace +/.Transition_M3.java._trace +/.IncomingToEntry_1.java._trace +/.IncomingToEntry_M0.java._trace +/.Transition_M4.java._trace diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend new file mode 100644 index 000000000..35b763503 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend @@ -0,0 +1,59 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +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 + +class EcoreTest { + def static void main(String[] args) { + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val workspace = new FileSystemWorkspace('''output/FEcoreTest/''', "") + workspace.initAndClear + + println("Input and output workspaces are created") + + val metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE) + val partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi") +// val queries = GeneralTest.loadQueries(metamodel, ecorePatterns.instance) + val queries = null + + 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.documentationLevel = DocumentationLevel::FULL + ] + + solution = reasoner.solve(logicProblem, vampireConfig, workspace) + + println("Problem solved") + + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend new file mode 100644 index 000000000..17f9ae5e1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.xtend @@ -0,0 +1,153 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import functionalarchitecture.FAMTerminator +import functionalarchitecture.Function +import functionalarchitecture.FunctionalArchitectureModel +import functionalarchitecture.FunctionalInterface +import functionalarchitecture.FunctionalOutput +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.logic.model.builder.DocumentationLevel +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.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.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import java.util.HashMap +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl + +class FAMTest { + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + val InstanceModel2PartialInterpretation im2pi = new InstanceModel2PartialInterpretation + + // Workspace setup + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val workspace = new FileSystemWorkspace('''output/FAMTest/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + // Load DSL + val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) +// val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") +// val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) + val queries = null + + println("DSL loaded") + + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) + var problem = modelGenerationProblem.output +// problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output +// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output + workspace.writeModel(problem, "Fam.logicproblem") + + println("Problem created") + + // Start Time + var startTime = System.currentTimeMillis + + var VampireSolver reasoner + // * + reasoner = new VampireSolver + + // ///////////////////////////////////////////////////// + // Minimum Scope + val classMapMin = new HashMap +// classMapMin.put(FunctionalArchitectureModel, 1) +// classMapMin.put(Function, 1) +// classMapMin.put(FunctionalInterface, 2) +// classMapMin.put(FunctionalOutput, 3) + classMapMin.put(FAMTerminator, 1) + + val typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.trace) + + // Maximum Scope + val classMapMax = new HashMap + classMapMax.put(FunctionalArchitectureModel, 3) + classMapMax.put(Function, 5) + classMapMax.put(FunctionalInterface, 3) + classMapMax.put(FunctionalOutput, 4) + + val typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, modelGenerationProblem.trace) + + // Define Config File + val vampireConfig = new VampireSolverConfiguration => [ + // add configuration things, in config file first + it.documentationLevel = DocumentationLevel::FULL + + it.typeScopes.minNewElements = 8//24 + it.typeScopes.maxNewElements = 10//25 +// if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin +// if(typeMapMax.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax + it.solver = BackendSolver::LOCVAMP + it.contCycleLevel = 5 + it.uniquenessDuplicates = false + ] + + var LogicResult solution = reasoner.solve(problem, vampireConfig, workspace) + + println("Problem solved") + // visualisation, see + var interpretations = reasoner.getInterpretations(solution as ModelResult) +// interpretations.get(0) as VampireModelInterpretation +// println(ecore2Logic.IsAttributeValue(modelGenerationProblem.trace, ) +// Literal(modelGenerationProblem.trace, ecore2Logic.allLiteralsInScope(modelGenerationProblem.trace).get(0) ) +// ) +// println((ecore2Logic.allAttributesInScope(modelGenerationProblem.trace)).get(0).EAttributeType) +// print(interpretations.class) +// for (interpretation : interpretations) { +// val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) +// workspace.writeModel(model, "model.xmi") +// +//// val representation = im2pi.transform(modelGenerationProblem, model.eAllContents.toList, false)//solution.representation.get(0) // TODO: fix for multiple represenations +//// if (representation instanceof PartialInterpretation) { +//// val vis1 = new PartialInterpretation2Gml +//// val gml = vis1.transform(representation) +//// workspace.writeText("model.gml", gml) +//// +//// val vis2 = new GraphvizVisualiser +//// val dot = vis2.visualiseConcretization(representation) +//// dot.writeToFile(workspace, "model.png") +//// } else { +//// println("ERROR") +//// } +//// look here: hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor +// } + +// transform interpretation to ecore, and it is easy from there + /*/ + * + * reasoner = new AlloySolver + * val alloyConfig = new AlloySolverConfiguration => [ + * it.typeScopes.maxNewElements = 7 + * it.typeScopes.minNewElements = 3 + * it.solutionScope.numberOfRequiredSolution = 1 + * it.typeScopes.maxNewIntegers = 0 + * it.documentationLevel = DocumentationLevel::NORMAL + * ] + * solution = reasoner.solve(problem, alloyConfig, workspace) + //*/ +// ///////////////////////////////////////////////////// + var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 + var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 + + println("Time was: " + totalTimeMin + ":" + totalTimeSec) + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend new file mode 100644 index 000000000..5289371f2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.xtend @@ -0,0 +1,111 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult +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 java.util.HashMap +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl + +class FileSystemTest { + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + // Workspace setup + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val workspace = new FileSystemWorkspace('''output/FileSystemTest/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + + val metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE) + val partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi") +// val queries = GeneralTest.loadQueries(metamodel, FileSystemPatterns.instance) + + println("DSL loaded") + + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) + var problem = modelGenerationProblem.output + problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).output +// problem = viatra2Logic.transformQueries(queries, modelGenerationProblem, new Viatra2LogicConfiguration).output + workspace.writeModel(problem, "FileSystem.logicproblem") + + println("Problem created") + + // Start Time + var startTime = System.currentTimeMillis + + var VampireSolver reasoner + // * + reasoner = new VampireSolver + + // ///////////////////////////////////////////////////// + // Minimum Scope + val classMapMin = new HashMap +// Currently does not work +// classMapMin.put(FSObject, 20) + classMapMin.put(Dir, 10) + classMapMin.put(File, 5) + val typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.trace) + + // Maximum Scope + val classMapMax = new HashMap + classMapMax.put(File, 15) + classMapMax.put(Dir, 15) +// Currently does not work +// classMapMax.put(FSObject, 20) + val typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, modelGenerationProblem.trace) + + // Define Config File + val vampireConfig = new VampireSolverConfiguration => [ + // add configuration things, in config file first + it.documentationLevel = DocumentationLevel::FULL + + it.typeScopes.minNewElements = 10 + it.typeScopes.maxNewElements = 25 + if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin + if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax + it.contCycleLevel = 5 + it.uniquenessDuplicates = false + ] + + var LogicResult solution = reasoner.solve(problem, vampireConfig, workspace) + + /*/ + * + * reasoner = new AlloySolver + * val alloyConfig = new AlloySolverConfiguration => [ + * it.typeScopes.maxNewElements = 7 + * it.typeScopes.minNewElements = 3 + * it.solutionScope.numberOfRequiredSolution = 1 + * it.typeScopes.maxNewIntegers = 0 + * it.documentationLevel = DocumentationLevel::NORMAL + * ] + * solution = reasoner.solve(problem, alloyConfig, workspace) + //*/ + // ///////////////////////////////////////////////////// + var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 + var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 + + println("Problem solved") + println("Time was: " + totalTimeMin + ":" + totalTimeSec) + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend new file mode 100644 index 000000000..26ed10e3c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend @@ -0,0 +1,74 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type +import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +import java.util.HashMap +import java.util.List +import java.util.Map +import okhttp3.MediaType +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.RequestBody +import okhttp3.Response +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.EPackage +import org.eclipse.emf.ecore.EReference +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +import org.eclipse.viatra.query.runtime.api.IQueryGroup + +class GeneralTest { + + def static Map getTypeMap(Map classMap, EcoreMetamodelDescriptor metamodel, + Ecore2Logic e2l, Ecore2Logic_Trace trace) { + val typeMap = new HashMap + val listMap = metamodel.classes.toMap[s|s.name] + + for (Class elem : classMap.keySet) { + typeMap.put(e2l.TypeofEClass( + trace, + listMap.get(elem.simpleName) + ), classMap.get(elem)) + } + return typeMap + } + + def static loadMetamodel(EPackage pckg) { + val List classes = pckg.getEClassifiers.filter(EClass).toList + val List enums = pckg.getEClassifiers.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 static loadPartialModel(ReasonerWorkspace inputs, String path) { + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()) + inputs.readModel(EObject, path).eResource.contents +// inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList + } + + def static loadQueries(EcoreMetamodelDescriptor metamodel, IQueryGroup i) { + val patterns = i.specifications.toList + val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet + val derivedFeatures = emptyMap + // NO DERIVED FEATURES +// 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/icse/YakinduTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend new file mode 100644 index 000000000..adea57d4a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.xtend @@ -0,0 +1,250 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import ca.mcgill.ecse.dslreasoner.vampire.queries.Patterns +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.RealStatisticEntry +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.StringStatisticEntry +import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import java.io.PrintWriter +import java.text.SimpleDateFormat +import java.util.Date +import java.util.HashMap +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl + +class YakinduTest { + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + // Workspace setup + val Date date = new Date(System.currentTimeMillis) + val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); + val formattedDate = format.format(date) + + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val dataWorkspace = new FileSystemWorkspace('''output/YakinduTest/''', "") + val workspace = new FileSystemWorkspace('''output/YakinduTest/''' + formattedDate + '''/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + val metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE) + val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/Yakindu.xmi") + val queries = GeneralTest.loadQueries(metamodel, Patterns.instance) +// val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) +// val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") +// val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) +// val queries = null + println("DSL loaded") + + var SZ_TOP = 120 + var SZ_BOT = 60 + var INC = 20 + var REPS =25 + + val RUNTIME = 300 + + val EXACT = -1 + if (EXACT != -1) { + SZ_TOP = EXACT + SZ_BOT = EXACT + INC = 1 + REPS = 10 + } + val BACKENDSOLVERS = newArrayList( +// BackendSolver::CVC4 +// , +// BackendSolver::DARWINFM +// , +// BackendSolver::EDARWIN +// , +// BackendSolver::GEOIII +// , +// BackendSolver::IPROVER +// , +// BackendSolver::PARADOX +// , +// BackendSolver::VAMPIRE +// , +// BackendSolver::Z3 +// , + BackendSolver::LOCVAMP + ) + + var str = "" + + for (solver : BACKENDSOLVERS) { + str += solver.name.substring(0, 1) + } + + var solverTimes = newArrayList + var transformationTimes = newArrayList + var LogicResult solution = null + + for (BESOLVER : BACKENDSOLVERS) { + + for (var i = SZ_BOT; i <= SZ_TOP; i += INC) { +// var writer = new PrintWriter( +// dataWorkspace.workspaceURI + "//_stats" + formattedDate + "-" + str + "sz" + i + "x" + REPS + +// ".csv") + var writer = new PrintWriter( + dataWorkspace.workspaceURI + "//_vampire" + i + "x" + REPS + "-" + formattedDate + ".csv") + writer.append("solver,size,transTime,sat?,satTime,model?,modelTime\n") + + val num = (i - SZ_BOT) / INC + println() + println("SOLVER: " + BESOLVER.name + ", SIZE=" + i) + println() + + solverTimes.clear + transformationTimes.clear + for (var j = 0; j < REPS; j++) { + + print("<> :") + + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, + new Ecore2LogicConfiguration()) + var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) + var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, + new Viatra2LogicConfiguration) + + var problem = modelGenerationProblem.output +// workspace.writeModel(problem, "Yakindu.logicproblem") +// println("Problem created") +// Start Time + var startTime = System.currentTimeMillis + + var VampireSolver reasoner + // * + reasoner = new VampireSolver + + // ///////////////////////////////////////////////////// + // Minimum Scope + val classMapMin = new HashMap + classMapMin.put(Region, 1) + classMapMin.put(Transition, 2) + classMapMin.put(CompositeElement, 3) + val typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, + modelGenerationProblem.trace) + // Maximum Scope + val classMapMax = new HashMap + classMapMax.put(Region, 5) + classMapMax.put(Transition, 2) + val typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, + modelGenerationProblem.trace) + // Define Config File + val size = i + val inc = INC + val iter = j + val vampireConfig = new VampireSolverConfiguration => [ + // add configuration things, in config file first + it.documentationLevel = DocumentationLevel::FULL + it.iteration = iter + it.runtimeLimit = RUNTIME + it.typeScopes.maxNewElements = size + it.typeScopes.minNewElements = size + + it.genModel = true + it.server = false + if (it.server) { + it.solver = BESOLVER + } else { + it.solver = BackendSolver::LOCVAMP + } + +// if(typeMapMin.size != 0) it.typeScopes.minNewElementsByType = typeMapMin +// if(typeMapMin.size != 0) it.typeScopes.maxNewElementsByType = typeMapMax +// it.contCycleLevel = 5 + it.uniquenessDuplicates = false + ] + + solution = reasoner.solve(problem, vampireConfig, workspace) +// print((solution as ModelResult).representation.get(0)) +// val soln = ((solution as ModelResult).representation.get(0) as VampireModel) +// println(soln.confirmations) +// println((solution as ModelResult).representation) +// modelFound = !soln.confirmations.filter [ +// class == VLSFiniteModelImpl +// ].isEmpty +// ADD TO CSV + writer.append(vampireConfig.solver.name + ",") + writer.append(size + ",") + writer.append(solution.statistics.transformationTime / 1000.0 + ",") + + val satOut = (solution.statistics.entries.filter[name == "satOut"].get(0) as StringStatisticEntry). + value + val satTime = (solution.statistics.entries.filter[name == "satTime"]. + get(0) as StringStatisticEntry).value + val modOut = (solution.statistics.entries.filter[name == "modOut"].get(0) as StringStatisticEntry). + value + val modTime = (solution.statistics.entries.filter[name == "modTime"]. + get(0) as StringStatisticEntry).value + + writer.append(satOut + ",") + writer.append(satTime + ",") + writer.append(modOut + ",") + writer.append(modTime + "") + writer.append("\n") + + println("->" + modOut + " ... " + modTime) + + // Run Garbage Collector + val Runtime r = Runtime.getRuntime(); + r.gc(); + r.gc(); + r.gc(); + Thread.sleep(3000) + +// print("(" + tTime + "/" + sTime + "s)..") +// solverTimes.add(sTime) +// transformationTimes.add(tTime) +// } else { +// writer.append("MNF" + ",") +//// print("MNF") +// } + // println("Problem solved") + // visualisation, see +// var interpretations = reasoner.getInterpretations(solution as ModelResult) +// for (interpretation : interpretations) { +// val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) +// workspace.writeModel(model, "model.xmi") +// } +// var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 +// var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 +// println("Problem solved") +// println("Time was: " + totalTimeMin + ":" + totalTimeSec) + } +// println() +// var solverMed = solverTimes.sort.get(REPS / 2) +// var transformationMed = transformationTimes.sort.get(REPS / 2) +// writer.append(solverMed.toString + "," + transformationMed.toString) + writer.close + } + + } + + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestAlloy.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestAlloy.xtend new file mode 100644 index 000000000..b0af3f64b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestAlloy.xtend @@ -0,0 +1,190 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import ca.mcgill.ecse.dslreasoner.vampire.queries.Patterns +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage +import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver +import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.IntStatisticEntry +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.StringStatisticEntry +import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import java.io.PrintWriter +import java.text.SimpleDateFormat +import java.util.Date +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl.ModelResultImpl + +class YakinduTestAlloy { + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + // Workspace setup + val Date date = new Date(System.currentTimeMillis) + val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); + val formattedDate = format.format(date) + + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val dataWorkspace = new FileSystemWorkspace('''output/YakinduTest/''', "") + val workspace = new FileSystemWorkspace('''output/YakinduTest/''' + formattedDate + '''/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + val metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE) + val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/Yakindu.xmi") + val queries = GeneralTest.loadQueries(metamodel, Patterns.instance) +// val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) +// val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") +// val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) +// val queries = null + println("DSL loaded") + + var SZ_TOP = 100 + var SZ_BOT = 100 + var INC = 20 + var REPS = 25 + + val RUNTIME = 300 + + var solverTimes = newArrayList + var transformationTimes = newArrayList + var LogicResult solution = null + var solver = "Alloy" + + for (var k = 0; k < 1; k++) { + + for (var i = SZ_BOT; i <= SZ_TOP; i += INC) { + var writer = new PrintWriter( + dataWorkspace.workspaceURI + "//_alloy" + i + "x" + REPS + "-" + formattedDate + ".csv") + writer.append("solver,size,TransformatonTime,sat?,kodkodTime,model?,modelTime\n") + + val num = (i - SZ_BOT) / INC + println() + println("SOLVER: " + solver + ", SIZE=" + i) + println() + + solverTimes.clear + transformationTimes.clear + for (var j = 0; j < REPS; j++) { + val Date date2 = new Date(System.currentTimeMillis) + val formattedDate2 = format.format(date2) + println(formattedDate2) + println("<> :") + + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, + new Ecore2LogicConfiguration()) + var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) + var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, + new Viatra2LogicConfiguration) + + var problem = modelGenerationProblem.output +// workspace.writeModel(problem, "Yakindu.logicproblem") +// println("Problem created") +// Start Time + var startTime = System.currentTimeMillis + + var AlloySolver reasoner + // * + reasoner = new AlloySolver + + // ///////////////////////////////////////////////////// + // Define Config File + val size = i + val inc = INC + val iter = j + val solverConfig = new AlloySolverConfiguration => [ + // add configuration things, in config file first + it.documentationLevel = DocumentationLevel::FULL +// it.iteration = iter + it.runtimeLimit = RUNTIME +// it.typeScopes.maxNewElements = size + it.typeScopes.minNewElements = size + it.typeScopes.maxNewElements = size + ] + solution = reasoner.solve(problem, solverConfig, workspace) +// print((solution as ModelResult).representation.get(0)) +// val soln = ((solution as ModelResult).representation.get(0) as VampireModel) +// println(soln.confirmations) +// println((solution as ModelResult).representation) +// modelFound = !soln.confirmations.filter [ +// class == VLSFiniteModelImpl +// ].isEmpty +// ADD TO CSV + writer.append(solver + ",") + writer.append(size + ",") + writer.append(solution.statistics.transformationTime / 1000.0 + ",") + +// val satOut = (solution.statistics.entries.filter[name == "satOut"].get(0) as StringStatisticEntry). +// value + val kodKodTime = (solution.statistics.entries.filter[name == "Alloy2KodKodTransformationTime"]. + get(0) as IntStatisticEntry).value +// print(solution.class) + val modOut = if(solution.class == ModelResultImpl) "FiniteModel" else "no" + val mod = solution.statistics.entries.filter[name == "Answer0Time"] + var modTime = 0.0 + if (!mod.isEmpty) { + modTime = (mod.get(0) as IntStatisticEntry).value / 1000.0 + + } + writer.append("-,") + writer.append(kodKodTime.toString + ",") + writer.append(modOut + ",") + writer.append(modTime.toString + "") + writer.append("\n") + + println("->" + modOut + " ... " + modTime) + + // Run Garbage Collector + val Runtime r = Runtime.getRuntime(); + r.gc(); + r.gc(); + r.gc(); + Thread.sleep(3000) + +// print("(" + tTime + "/" + sTime + "s)..") +// solverTimes.add(sTime) +// transformationTimes.add(tTime) +// } else { +// writer.append("MNF" + ",") +//// print("MNF") +// } + // println("Problem solved") + // visualisation, see +// var interpretations = reasoner.getInterpretations(solution as ModelResult) +// for (interpretation : interpretations) { +// val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) +// workspace.writeModel(model, "model.xmi") +// } +// var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 +// var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 +// println("Problem solved") +// println("Time was: " + totalTimeMin + ":" + totalTimeSec) + } +// println() +// var solverMed = solverTimes.sort.get(REPS / 2) +// var transformationMed = transformationTimes.sort.get(REPS / 2) +// writer.append(solverMed.toString + "," + transformationMed.toString) + writer.close + } + + } + + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestViatra.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestViatra.xtend new file mode 100644 index 000000000..dbc90e97b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTestViatra.xtend @@ -0,0 +1,182 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import ca.mcgill.ecse.dslreasoner.vampire.queries.Patterns +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage +import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver +import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.IntStatisticEntry +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.StringStatisticEntry +import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import java.io.PrintWriter +import java.text.SimpleDateFormat +import java.util.Date +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl.ModelResultImpl +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration + +class YakinduTestViatra { + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + // Workspace setup + val Date date = new Date(System.currentTimeMillis) + val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); + val formattedDate = format.format(date) + + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val dataWorkspace = new FileSystemWorkspace('''output/YakinduTest/''', "") + val workspace = new FileSystemWorkspace('''output/YakinduTest/''' + formattedDate + '''/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + val metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE) + val partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/Yakindu.xmi") + val queries = GeneralTest.loadQueries(metamodel, Patterns.instance) +// val metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE) +// val partialModel = GeneralTest.loadPartialModel(inputs, "FAM/FaModel.xmi") +// val queries = GeneralTest.loadQueries(metamodel, FamPatterns.instance) +// val queries = null + println("DSL loaded") + + var SZ_TOP = 20 + var SZ_BOT = 20 + var INC = 20 + var REPS = 5 + + val RUNTIME = 300 + + var solverTimes = newArrayList + var transformationTimes = newArrayList + var LogicResult solution = null + var solver = "Viatra" + var index = 2 + + for (var i = SZ_BOT; i <= SZ_TOP; i += INC*index) { + index*=2 + var writer = new PrintWriter( + dataWorkspace.workspaceURI + "//_viatra" + i + "x" + REPS + "-" + formattedDate + ".csv") + writer.append("solver,size,TransformatonTime,sat?,kodkodTime,model?,modelTime\n") + + val num = (i - SZ_BOT) / INC + println() + println("SOLVER: " + solver + ", SIZE=" + i) + println() + + solverTimes.clear + transformationTimes.clear + for (var j = 0; j < REPS; j++) { + + println("<> :") + + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) + var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) + var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, + new Viatra2LogicConfiguration) + + var problem = modelGenerationProblem.output + workspace.writeModel(problem, "Yakindu.logicproblem") +// println("Problem created") +// Start Time + var startTime = System.currentTimeMillis + + var ViatraReasoner reasoner + // * + reasoner = new ViatraReasoner + + // ///////////////////////////////////////////////////// + // Define Config File + val size = i + val inc = INC + val iter = j + val solverConfig = new ViatraReasonerConfiguration => [ + // add configuration things, in config file first +// it.documentationLevel = DocumentationLevel::FULL +// it.iteration = iter + it.runtimeLimit = RUNTIME + it.typeScopes.maxNewElements = size + it.typeScopes.minNewElements = size + ] + + solution = reasoner.solve(problem, solverConfig, workspace) +// print((solution as ModelResult).representation.get(0)) +// val soln = ((solution as ModelResult).representation.get(0) as VampireModel) +// println(soln.confirmations) +// println((solution as ModelResult).representation) +// modelFound = !soln.confirmations.filter [ +// class == VLSFiniteModelImpl +// ].isEmpty +// ADD TO CSV + writer.append(solver + ",") + writer.append(size + ",") + writer.append(solution.statistics.transformationTime / 1000.0 + ",") + +// val satOut = (solution.statistics.entries.filter[name == "satOut"].get(0) as StringStatisticEntry). +// value + val modOut = if(solution.class == ModelResultImpl) "FiniteModel" else "no" +// val modTime = (solution.statistics.entries.filter[name.contains("Answer")]. +// get(0) as StringStatisticEntry).value + val modTime = solution.statistics.solverTime / 1000.0 + + writer.append("-,") + writer.append("-,") + writer.append(modOut + ",") + writer.append(modTime.toString + "") + writer.append("\n") + + println("->" + modOut + " ... " + modTime) + + // Run Garbage Collector + val Runtime r = Runtime.getRuntime(); + r.gc(); + r.gc(); + r.gc(); + Thread.sleep(3000) + +// print("(" + tTime + "/" + sTime + "s)..") +// solverTimes.add(sTime) +// transformationTimes.add(tTime) +// } else { +// writer.append("MNF" + ",") +//// print("MNF") +// } + // println("Problem solved") + // visualisation, see +// var interpretations = reasoner.getInterpretations(solution as ModelResult) +// for (interpretation : interpretations) { +// val model = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.trace) +// workspace.writeModel(model, "model.xmi") +// } +// var totalTimeMin = (System.currentTimeMillis - startTime) / 60000 +// var totalTimeSec = ((System.currentTimeMillis - startTime) / 1000) % 60 +// println("Problem solved") +// println("Time was: " + totalTimeMin + ":" + totalTimeSec) + } +// println() +// var solverMed = solverTimes.sort.get(REPS / 2) +// var transformationMed = transformationTimes.sort.get(REPS / 2) +// writer.append(solverMed.toString + "," + transformationMed.toString) + writer.close + } + + } + +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/tester.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/tester.xtend new file mode 100644 index 000000000..2bf0c4cc1 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/tester.xtend @@ -0,0 +1,35 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse + +import java.io.BufferedReader +import java.io.FileInputStream +import java.io.InputStream +import java.io.InputStreamReader + +class tester { + def static void main(String[] args) { + val InputStream is = new FileInputStream("C://Users//Aren Babikian//git//VIATRA-Generator//Tests//ca.mcgill.ecse.dslreasoner.vampire.test//src//ca//mcgill//ecse//dslreasoner//vampire//icse//90-110Z3.txt"); + val BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + var String line = buf.readLine(); + val StringBuilder sb = new StringBuilder(); + while (line != null) { + sb.append(line); + line = buf.readLine(); + } + val String str = sb.toString(); + + val satArray = str.split("Model") + + val satTimes = newArrayList + + for(sat : satArray.subList(1, satArray.length)) { + satTimes.add(sat.substring(2, 8)) + } + + for(t : satTimes) { + println(t) + } + + + + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.vql b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.vql new file mode 100644 index 000000000..d9d6b8810 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/FamPatterns.vql @@ -0,0 +1,20 @@ +package ca.mcgill.ecse.dslreasoner.vampire.queries + +import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam" + +@Constraint(message="terminatorAndInformation", severity="error", key={T}) +pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = { + FunctionalOutput.outgoingLinks(Out,I); + FunctionalOutput.terminator(Out,T); +} or { + InformationLink.to(I,In); + FunctionalInput.terminator(In,T); +} + +pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = { + FunctionalArchitectureModel.rootElements(Model, Root); +} + +pattern parent(Func : Function, Par : Function) = { + Function.parent(Func, Par); +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/YakinduPatterns.txt b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/YakinduPatterns.txt new file mode 100644 index 000000000..8c2b9033f --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/queries/YakinduPatterns.txt @@ -0,0 +1,227 @@ +package ca.mcgill.ecse.dslreasoner.vampire.queries + +import epackage + +///////// +// Entry +///////// + +pattern entryInRegion(r1 : Region, e1 : Entry) { + Region.vertices(r1, e1); +} + +@Constraint(severity="error", message="error", key = {r1}) +pattern noEntryInRegion(r1 : Region) { + neg find entryInRegion(r1, _); +} + +@Constraint(severity="error", message="error", key = {r}) +pattern multipleEntryInRegion(r : Region) { + find entryInRegion(r, e1); + find entryInRegion(r, e2); + e1 != e2; +} + +pattern transition(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Transition.target(t, trg); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern incomingToEntry(t : Transition, e : Entry) { + find transition(t, _, e); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern noOutgoingTransitionFromEntry(e : Entry) { + neg find transition(_, e, _); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} + +///////// +// Exit +///////// + +@Constraint(severity="error", message="error", key = {e}) +pattern outgoingFromExit(t : Transition, e : Exit) { + Exit.outgoingTransitions(e,t); +} + +///////// +// Final +///////// + +@Constraint(severity="error", message="error", key = {f}) +pattern outgoingFromFinal(t : Transition, f : FinalState) { + FinalState.outgoingTransitions(f,t); +} + +///////// +// State vs Region +///////// + +@Constraint(severity="error", message="error", key = {region}) +pattern noStateInRegion(region: Region) { + neg find StateInRegion(region,_); +} +pattern StateInRegion(region: Region, state: State) { + Region.vertices(region,state); +} + +///////// +// Choice +///////// + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoOutgoing(c : Choice) { + neg find transition(_, c, _); +} + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoIncoming(c: Choice) { + neg find transition(_, _, c); +} + +/////////// +//// Synchronization +/////////// +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern synchHasNoOutgoing(s : Synchronization) { +// neg find transition(_, s, _); +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern synchHasNoIncoming(s : Synchronization) { +// neg find transition(_, _, s); +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { +// find transition(t1, v1, s); +// find transition(t2, v2, s); +// t1!=t2; +// Region.vertices(r, v1); +// Region.vertices(r, v2); +//} or { +// find transition(t1, s, v1); +// find transition(t2, s, v2); +// t1!=t2; +// Region.vertices(r, v1); +// Region.vertices(r, v2); +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern notSynchronizingStates(s : Synchronization) { +// neg find hasMultipleOutgoingTrainsition(s); +// neg find hasMultipleIncomingTrainsition(s); +//} +// +//pattern hasMultipleOutgoingTrainsition(v : Synchronization) { +// find transition(_, v, trg1); +// find transition(_, v, trg2); +// trg1 != trg2; +//} +// +//pattern hasMultipleIncomingTrainsition(v : Synchronization) { +// find transition(_, src1, v); +// find transition(_, src2, v); +// src1 != src2; +//} +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { +// find transition(_, v1, s); +// find transition(_, v2, s); +// CompositeElement.regions.vertices(r1, v1); +// CompositeElement.regions.vertices(r2, v2); +// r1 != r2; +//} or { +// find transition(_, s, v1); +// find transition(_, s, v2); +// CompositeElement.regions.vertices(r1, v1); +// CompositeElement.regions.vertices(r2, v2); +// r1 != r2; +//} + +/////////////////////////////// +// Extra +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) { +// find transition(_, v, s); +// neg find child(_,v); +//} or { +// find transition(_, s, v); +// neg find child(_,v); +//} + +pattern child(parent: CompositeElement, child: Vertex) { + CompositeElement.regions.vertices(parent, child); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) { + find transition(_, v, s); + find child(c,v); + neg find hasMultipleRegions(c); +} or { + find transition(_, s, v); + find child(c,v); + neg find hasMultipleRegions(c); +} + + +pattern hasMultipleRegions(composite: CompositeElement) { + CompositeElement.regions(composite,region1); + CompositeElement.regions(composite,region2); + region1 != region2; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s}) +pattern synchThree(s: Synchronization) { + Transition.target(t1,s); + Transition.target(t2,s); + Transition.target(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} or { + Transition.source(t1,s); + Transition.source(t2,s); + Transition.source(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s1,s2}) +pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { + Synchronization(s1); + Synchronization(s2); + s1 != s2; +} + +/** + * Model generation task: at least one synch + */ +//@Constraint(severity="error", message="error", key = {s}) +//pattern noSynch(s:Statechart) { +// Statechart(s); +// neg find synch(_); +//} +//pattern synch(s:Synchronization) { +// Synchronization(s); +//} \ No newline at end of file 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 000000000..40cb70a74 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.xtend @@ -0,0 +1,75 @@ +package ca.mcgill.ecse.dslreasoner.vampire.test + +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel +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 hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +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('''output/MedicalSystem/''',"") + 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.documentationLevel = DocumentationLevel::FULL + ] + + 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 new file mode 100644 index 000000000..f99f0a404 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/SimpleRun.xtend @@ -0,0 +1,168 @@ +//package ca.mcgill.ecse.dslreasoner.vampire.test +// +//import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +//import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage +//import java.util.List +//import org.eclipse.emf.ecore.EClass +//import org.eclipse.emf.ecore.EEnumLiteral +//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/''',"") +// 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 +// +// println("Problem created") +// var LogicResult solution +// var LogicReasoner reasoner +// /* +// reasoner = new ViatraReasoner +// val viatraConfig = new ViatraReasonerConfiguration => [ +// it.typeScopes.maxNewElements = 40 +// it.typeScopes.minNewElements = 40 +// 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 +// 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[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 = 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 +// } +// +// def static loadPartialModel(ReasonerWorkspace inputs) { +// Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); +// inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList +// } +// +// def static writeSolution(LogicResult solution, ReasonerWorkspace workspace, List models) { +// if(solution instanceof ModelResult) { +// val representations = solution.representation +// for(representationIndex : 0.. X) ) + + println("Problem Created") + + var LogicResult solution + var LogicReasoner reasoner + + reasoner = new ViatraReasoner + val vampireConfig = new ViatraReasonerConfiguration => [ + //add configuration things, in config file first + it.documentationLevel = DocumentationLevel::FULL + it.typeScopes.minNewElements = 4 + ] + + solution = reasoner.solve(problem, vampireConfig, workspace) + +// if(solution instanceof ModelResult) { +// reasoner.getInterpretations(solution) +// } + //^can extract everything (ex, vars) from solver + + + //call the solver + + println("Problem Solved") + + //output solution + + } + + def name() { + return this.class.simpleName + } + + static def deMorgan(LogicProblem problem) { + + + var X = ConstantDeclaration(LogicBool) + var Y = ConstantDeclaration(LogicBool) + problem.add(X) + problem.add(Y) + + //assertion is negated manually because logic problem can only handle axioms (assertions) + //so ya + problem.add(Assertion( !(X && Y) <=> ( !X || !Y)) ) + } + + static def rockPaperScisors(LogicProblem problem) { + + 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 newRPS = problem.add(TypeDeclaration("newRPS", false)) + 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 color = problem.add(TypeDefinition("color", false, red, green )) + //Supertype(oldRPS,allRPS) + //Supertype(newRPS,oldRPS) + + + + + /* Remains + val beats = problem.add(RelationDefinition("beats",[ + val x = addVar("x",oldRPS) + val y = addVar("y",oldRPS) + (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",oldRPS,oldRPS)) + problem.add(Assertion(Forall[ + val x = addVar("x",oldRPS) + //x.range + Exists[ + val y = addVar("y",oldRPS) + And(beats2.call(x,y), + x != y, + Not(beats2.call(y, x)) + ) + ] + ])) + //*/ + + } +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Choice.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Choice.java new file mode 100644 index 000000000..aab59128a --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Choice.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Choice.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Choice'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getChoice() + * @model + * @generated + */ +public interface Choice extends Pseudostate { +} // Choice +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Choice'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getChoice() + * @model + * @generated + */ +public interface Choice extends Pseudostate { +} // Choice +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Choice.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/CompositeElement.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/CompositeElement.java new file mode 100644 index 000000000..4565a3b99 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/CompositeElement.java @@ -0,0 +1,87 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/CompositeElement.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Composite Element'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement#getRegions Regions}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getCompositeElement() + * @model abstract="true" + * @generated + */ +public interface CompositeElement extends EObject { + /** + * Returns the value of the 'Regions' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region}. + * + *

+ * If the meaning of the 'Regions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Regions' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getCompositeElement_Regions() + * @model containment="true" + * @generated + */ + EList getRegions(); + +} // CompositeElement +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Composite Element'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions Regions}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getCompositeElement() + * @model abstract="true" + * @generated + */ +public interface CompositeElement extends EObject { + /** + * Returns the value of the 'Regions' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region}. + * + *

+ * If the meaning of the 'Regions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Regions' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getCompositeElement_Regions() + * @model containment="true" + * @generated + */ + EList getRegions(); + +} // CompositeElement +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/CompositeElement.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Entry.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Entry.java new file mode 100644 index 000000000..57ecb4609 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Entry.java @@ -0,0 +1,52 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Entry'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry#getType Type}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getEntry() + * @model + * @generated + */ +public interface Entry extends Pseudostate { + /** + * Returns the value of the 'Type' attribute. + * The literals are from the enumeration {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType}. + * + *

+ * If the meaning of the 'Type' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Type' attribute. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @see #setType(EntryType) + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getEntry_Type() + * @model required="true" + * @generated + */ + EntryType getType(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry#getType Type}' attribute. + * + * + * @param value the new value of the 'Type' attribute. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @see #getType() + * @generated + */ + void setType(EntryType value); + +} // Entry diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/EntryType.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/EntryType.java new file mode 100644 index 000000000..40072da65 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/EntryType.java @@ -0,0 +1,239 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * + * A representation of the literals of the enumeration 'Entry Type', + * and utility methods for working with them. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getEntryType() + * @model + * @generated + */ +public enum EntryType implements Enumerator { + /** + * The 'Normal' literal object. + * + * + * @see #NORMAL_VALUE + * @generated + * @ordered + */ + NORMAL(0, "Normal", "Normal"), + + /** + * The 'History' literal object. + * + * + * @see #HISTORY_VALUE + * @generated + * @ordered + */ + HISTORY(0, "History", "History"), + + /** + * The 'Deep History' literal object. + * + * + * @see #DEEP_HISTORY_VALUE + * @generated + * @ordered + */ + DEEP_HISTORY(0, "DeepHistory", "DeepHistory"); + + /** + * The 'Normal' literal value. + * + *

+ * If the meaning of 'Normal' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #NORMAL + * @model name="Normal" + * @generated + * @ordered + */ + public static final int NORMAL_VALUE = 0; + + /** + * The 'History' literal value. + * + *

+ * If the meaning of 'History' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #HISTORY + * @model name="History" + * @generated + * @ordered + */ + public static final int HISTORY_VALUE = 0; + + /** + * The 'Deep History' literal value. + * + *

+ * If the meaning of 'Deep History' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #DEEP_HISTORY + * @model name="DeepHistory" + * @generated + * @ordered + */ + public static final int DEEP_HISTORY_VALUE = 0; + + /** + * An array of all the 'Entry Type' enumerators. + * + * + * @generated + */ + private static final EntryType[] VALUES_ARRAY = + new EntryType[] { + NORMAL, + HISTORY, + DEEP_HISTORY, + }; + + /** + * A public read-only list of all the 'Entry Type' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Entry Type' literal with the specified literal value. + * + * + * @param literal the literal. + * @return the matching enumerator or null. + * @generated + */ + public static EntryType get(String literal) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + EntryType result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Entry Type' literal with the specified name. + * + * + * @param name the name. + * @return the matching enumerator or null. + * @generated + */ + public static EntryType getByName(String name) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + EntryType result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Entry Type' literal with the specified integer value. + * + * + * @param value the integer value. + * @return the matching enumerator or null. + * @generated + */ + public static EntryType get(int value) { + switch (value) { + case NORMAL_VALUE: return NORMAL; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private EntryType(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @generated + */ + @Override + public String toString() { + return literal; + } + +} //EntryType diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Exit.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Exit.java new file mode 100644 index 000000000..b525ca113 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Exit.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Exit.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Exit'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getExit() + * @model + * @generated + */ +public interface Exit extends Pseudostate { +} // Exit +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Exit'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getExit() + * @model + * @generated + */ +public interface Exit extends Pseudostate { +} // Exit +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Exit.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/FinalState.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/FinalState.java new file mode 100644 index 000000000..cb947fab0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/FinalState.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/FinalState.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Final State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getFinalState() + * @model + * @generated + */ +public interface FinalState extends RegularState { +} // FinalState +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Final State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getFinalState() + * @model + * @generated + */ +public interface FinalState extends RegularState { +} // FinalState +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/FinalState.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Pseudostate.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Pseudostate.java new file mode 100644 index 000000000..5d7db7ba0 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Pseudostate.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Pseudostate.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Pseudostate'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getPseudostate() + * @model abstract="true" + * @generated + */ +public interface Pseudostate extends Vertex { +} // Pseudostate +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Pseudostate'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getPseudostate() + * @model abstract="true" + * @generated + */ +public interface Pseudostate extends Vertex { +} // Pseudostate +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Pseudostate.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Region.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Region.java new file mode 100644 index 000000000..616068eef --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Region.java @@ -0,0 +1,87 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Region.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Region'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region#getVertices Vertices}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getRegion() + * @model + * @generated + */ +public interface Region extends EObject { + /** + * Returns the value of the 'Vertices' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex}. + * + *

+ * If the meaning of the 'Vertices' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Vertices' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getRegion_Vertices() + * @model containment="true" ordered="false" + * @generated + */ + EList getVertices(); + +} // Region +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Region'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices Vertices}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getRegion() + * @model + * @generated + */ +public interface Region extends EObject { + /** + * Returns the value of the 'Vertices' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex}. + * + *

+ * If the meaning of the 'Vertices' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Vertices' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getRegion_Vertices() + * @model containment="true" ordered="false" + * @generated + */ + EList getVertices(); + +} // Region +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Region.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/RegularState.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/RegularState.java new file mode 100644 index 000000000..f21ccb539 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/RegularState.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/RegularState.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Regular State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getRegularState() + * @model abstract="true" + * @generated + */ +public interface RegularState extends Vertex { +} // RegularState +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Regular State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getRegularState() + * @model abstract="true" + * @generated + */ +public interface RegularState extends Vertex { +} // RegularState +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/RegularState.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/State.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/State.java new file mode 100644 index 000000000..469b334e2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/State.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/State.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getState() + * @model + * @generated + */ +public interface State extends RegularState, CompositeElement { +} // State +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'State'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getState() + * @model + * @generated + */ +public interface State extends RegularState, CompositeElement { +} // State +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/State.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Statechart.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Statechart.java new file mode 100644 index 000000000..d59fbb513 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Statechart.java @@ -0,0 +1,37 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Statechart.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + + +/** + * + * A representation of the model object 'Statechart'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getStatechart() + * @model + * @generated + */ +public interface Statechart extends CompositeElement { +} // Statechart +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + + +/** + * + * A representation of the model object 'Statechart'. + * + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getStatechart() + * @model + * @generated + */ +public interface Statechart extends CompositeElement { +} // Statechart +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Statechart.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Transition.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Transition.java new file mode 100644 index 000000000..b5d4b2bb5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Transition.java @@ -0,0 +1,165 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Transition.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Transition'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget Target}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource Source}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getTransition() + * @model + * @generated + */ +public interface Transition extends EObject { + /** + * Returns the value of the 'Target' reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions Incoming Transitions}'. + * + *

+ * If the meaning of the 'Target' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Target' reference. + * @see #setTarget(Vertex) + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getTransition_Target() + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions + * @model opposite="incomingTransitions" required="true" ordered="false" + * @generated + */ + Vertex getTarget(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget Target}' reference. + * + * + * @param value the new value of the 'Target' reference. + * @see #getTarget() + * @generated + */ + void setTarget(Vertex value); + + /** + * Returns the value of the 'Source' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + *

+ * If the meaning of the 'Source' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Source' container reference. + * @see #setSource(Vertex) + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getTransition_Source() + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions + * @model opposite="outgoingTransitions" transient="false" ordered="false" + * @generated + */ + Vertex getSource(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource Source}' container reference. + * + * + * @param value the new value of the 'Source' container reference. + * @see #getSource() + * @generated + */ + void setSource(Vertex value); + +} // Transition +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Transition'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getTransition() + * @model + * @generated + */ +public interface Transition extends EObject { + /** + * Returns the value of the 'Target' reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}'. + * + *

+ * If the meaning of the 'Target' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Target' reference. + * @see #setTarget(Vertex) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getTransition_Target() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions + * @model opposite="incomingTransitions" required="true" ordered="false" + * @generated + */ + Vertex getTarget(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}' reference. + * + * + * @param value the new value of the 'Target' reference. + * @see #getTarget() + * @generated + */ + void setTarget(Vertex value); + + /** + * Returns the value of the 'Source' container reference. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + *

+ * If the meaning of the 'Source' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Source' container reference. + * @see #setSource(Vertex) + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getTransition_Source() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions + * @model opposite="outgoingTransitions" transient="false" ordered="false" + * @generated + */ + Vertex getSource(); + + /** + * Sets the value of the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}' container reference. + * + * + * @param value the new value of the 'Source' container reference. + * @see #getSource() + * @generated + */ + void setSource(Vertex value); + +} // Transition +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Transition.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Vertex.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Vertex.java new file mode 100644 index 000000000..9659946cb --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Vertex.java @@ -0,0 +1,129 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/Vertex.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Vertex'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions Incoming Transitions}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions Outgoing Transitions}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getVertex() + * @model abstract="true" + * @generated + */ +public interface Vertex extends EObject { + /** + * Returns the value of the 'Incoming Transitions' reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget Target}'. + * + *

+ * If the meaning of the 'Incoming Transitions' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Incoming Transitions' reference list. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getVertex_IncomingTransitions() + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget + * @model opposite="target" ordered="false" + * @generated + */ + EList getIncomingTransitions(); + + /** + * Returns the value of the 'Outgoing Transitions' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource Source}'. + * + *

+ * If the meaning of the 'Outgoing Transitions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Outgoing Transitions' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#getVertex_OutgoingTransitions() + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource + * @model opposite="source" containment="true" ordered="false" + * @generated + */ + EList getOutgoingTransitions(); + +} // Vertex +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Vertex'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getVertex() + * @model abstract="true" + * @generated + */ +public interface Vertex extends EObject { + /** + * Returns the value of the 'Incoming Transitions' reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}'. + * + *

+ * If the meaning of the 'Incoming Transitions' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Incoming Transitions' reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getVertex_IncomingTransitions() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget + * @model opposite="target" ordered="false" + * @generated + */ + EList getIncomingTransitions(); + + /** + * Returns the value of the 'Outgoing Transitions' containment reference list. + * The list contents are of type {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition}. + * It is bidirectional and its opposite is '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}'. + * + *

+ * If the meaning of the 'Outgoing Transitions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Outgoing Transitions' containment reference list. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#getVertex_OutgoingTransitions() + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource + * @model opposite="source" containment="true" ordered="false" + * @generated + */ + EList getOutgoingTransitions(); + +} // Vertex +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/Vertex.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduFactory.java new file mode 100644 index 000000000..72a15aa11 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduFactory.java @@ -0,0 +1,222 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummFactory.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage + * @generated + */ +public interface YakindummFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + YakindummFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummFactoryImpl.init(); + + /** + * Returns a new object of class 'Region'. + * + * + * @return a new object of class 'Region'. + * @generated + */ + Region createRegion(); + + /** + * Returns a new object of class 'Transition'. + * + * + * @return a new object of class 'Transition'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class 'Statechart'. + * + * + * @return a new object of class 'Statechart'. + * @generated + */ + Statechart createStatechart(); + + /** + * Returns a new object of class 'Entry'. + * + * + * @return a new object of class 'Entry'. + * @generated + */ + Entry createEntry(); + + /** + * Returns a new object of class 'State'. + * + * + * @return a new object of class 'State'. + * @generated + */ + State createState(); + + /** + * Returns a new object of class 'Choice'. + * + * + * @return a new object of class 'Choice'. + * @generated + */ + Choice createChoice(); + + /** + * Returns a new object of class 'Exit'. + * + * + * @return a new object of class 'Exit'. + * @generated + */ + Exit createExit(); + + /** + * Returns a new object of class 'Final State'. + * + * + * @return a new object of class 'Final State'. + * @generated + */ + FinalState createFinalState(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + YakindummPackage getYakindummPackage(); + +} //YakindummFactory +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public interface YakinduFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + YakinduFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduFactoryImpl.init(); + + /** + * Returns a new object of class 'Region'. + * + * + * @return a new object of class 'Region'. + * @generated + */ + Region createRegion(); + + /** + * Returns a new object of class 'Transition'. + * + * + * @return a new object of class 'Transition'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class 'Statechart'. + * + * + * @return a new object of class 'Statechart'. + * @generated + */ + Statechart createStatechart(); + + /** + * Returns a new object of class 'Entry'. + * + * + * @return a new object of class 'Entry'. + * @generated + */ + Entry createEntry(); + + /** + * Returns a new object of class 'Synchronization'. + * + * + * @return a new object of class 'Synchronization'. + * @generated + */ + Synchronization createSynchronization(); + + /** + * Returns a new object of class 'State'. + * + * + * @return a new object of class 'State'. + * @generated + */ + State createState(); + + /** + * Returns a new object of class 'Choice'. + * + * + * @return a new object of class 'Choice'. + * @generated + */ + Choice createChoice(); + + /** + * Returns a new object of class 'Exit'. + * + * + * @return a new object of class 'Exit'. + * @generated + */ + Exit createExit(); + + /** + * Returns a new object of class 'Final State'. + * + * + * @return a new object of class 'Final State'. + * @generated + */ + FinalState createFinalState(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + YakinduPackage getYakinduPackage(); + +} //YakinduFactory +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduFactory.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduPackage.java new file mode 100644 index 000000000..f74d2357b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduPackage.java @@ -0,0 +1,2073 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummPackage.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummFactory + * @model kind="package" + * @generated + */ +public interface YakindummPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "yakindumm"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "hu.bme.mit.inf.yakindumm"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "ca.mcgill.ecse.yakindumm"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + YakindummPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getVertex() + * @generated + */ + int VERTEX = 1; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__INCOMING_TRANSITIONS = 0; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__OUTGOING_TRANSITIONS = 1; + + /** + * The number of structural features of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getPseudostate() + * @generated + */ + int PSEUDOSTATE = 0; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegion() + * @generated + */ + int REGION = 2; + + /** + * The feature id for the 'Vertices' containment reference list. + * + * + * @generated + * @ordered + */ + int REGION__VERTICES = 0; + + /** + * The number of structural features of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getTransition() + * @generated + */ + int TRANSITION = 3; + + /** + * The feature id for the 'Target' reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__TARGET = 0; + + /** + * The feature id for the 'Source' container reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__SOURCE = 1; + + /** + * The number of structural features of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getCompositeElement() + * @generated + */ + int COMPOSITE_ELEMENT = 8; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT__REGIONS = 0; + + /** + * The number of structural features of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getStatechart() + * @generated + */ + int STATECHART = 4; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATECHART__REGIONS = COMPOSITE_ELEMENT__REGIONS; + + /** + * The number of structural features of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_FEATURE_COUNT = COMPOSITE_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_OPERATION_COUNT = COMPOSITE_ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntry() + * @generated + */ + int ENTRY = 5; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + int ENTRY__TYPE = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegularState() + * @generated + */ + int REGULAR_STATE = 7; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getState() + * @generated + */ + int STATE = 6; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__REGIONS = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getChoice() + * @generated + */ + int CHOICE = 9; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getExit() + * @generated + */ + int EXIT = 10; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getFinalState() + * @generated + */ + int FINAL_STATE = 11; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType Entry Type}' enum. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntryType() + * @generated + */ + int ENTRY_TYPE = 12; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate Pseudostate}'. + * + * + * @return the meta object for class 'Pseudostate'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate + * @generated + */ + EClass getPseudostate(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex Vertex}'. + * + * + * @return the meta object for class 'Vertex'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex + * @generated + */ + EClass getVertex(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions Incoming Transitions}'. + * + * + * @return the meta object for the reference list 'Incoming Transitions'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_IncomingTransitions(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + * + * @return the meta object for the containment reference list 'Outgoing Transitions'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_OutgoingTransitions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region Region}'. + * + * + * @return the meta object for class 'Region'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region + * @generated + */ + EClass getRegion(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region#getVertices Vertices}'. + * + * + * @return the meta object for the containment reference list 'Vertices'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region#getVertices() + * @see #getRegion() + * @generated + */ + EReference getRegion_Vertices(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition Transition}'. + * + * + * @return the meta object for class 'Transition'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget Target}'. + * + * + * @return the meta object for the reference 'Target'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget() + * @see #getTransition() + * @generated + */ + EReference getTransition_Target(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource Source}'. + * + * + * @return the meta object for the container reference 'Source'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource() + * @see #getTransition() + * @generated + */ + EReference getTransition_Source(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart Statechart}'. + * + * + * @return the meta object for class 'Statechart'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart + * @generated + */ + EClass getStatechart(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry Entry}'. + * + * + * @return the meta object for class 'Entry'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry + * @generated + */ + EClass getEntry(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry#getType Type}'. + * + * + * @return the meta object for the attribute 'Type'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry#getType() + * @see #getEntry() + * @generated + */ + EAttribute getEntry_Type(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State State}'. + * + * + * @return the meta object for class 'State'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State + * @generated + */ + EClass getState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState Regular State}'. + * + * + * @return the meta object for class 'Regular State'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState + * @generated + */ + EClass getRegularState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement Composite Element}'. + * + * + * @return the meta object for class 'Composite Element'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement + * @generated + */ + EClass getCompositeElement(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement#getRegions Regions}'. + * + * + * @return the meta object for the containment reference list 'Regions'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement#getRegions() + * @see #getCompositeElement() + * @generated + */ + EReference getCompositeElement_Regions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice Choice}'. + * + * + * @return the meta object for class 'Choice'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice + * @generated + */ + EClass getChoice(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit Exit}'. + * + * + * @return the meta object for class 'Exit'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit + * @generated + */ + EClass getExit(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState Final State}'. + * + * + * @return the meta object for class 'Final State'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState + * @generated + */ + EClass getFinalState(); + + /** + * Returns the meta object for enum '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType Entry Type}'. + * + * + * @return the meta object for enum 'Entry Type'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @generated + */ + EEnum getEntryType(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + YakindummFactory getYakindummFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getPseudostate() + * @generated + */ + EClass PSEUDOSTATE = eINSTANCE.getPseudostate(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getVertex() + * @generated + */ + EClass VERTEX = eINSTANCE.getVertex(); + + /** + * The meta object literal for the 'Incoming Transitions' reference list feature. + * + * + * @generated + */ + EReference VERTEX__INCOMING_TRANSITIONS = eINSTANCE.getVertex_IncomingTransitions(); + + /** + * The meta object literal for the 'Outgoing Transitions' containment reference list feature. + * + * + * @generated + */ + EReference VERTEX__OUTGOING_TRANSITIONS = eINSTANCE.getVertex_OutgoingTransitions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegion() + * @generated + */ + EClass REGION = eINSTANCE.getRegion(); + + /** + * The meta object literal for the 'Vertices' containment reference list feature. + * + * + * @generated + */ + EReference REGION__VERTICES = eINSTANCE.getRegion_Vertices(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the 'Target' reference feature. + * + * + * @generated + */ + EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target(); + + /** + * The meta object literal for the 'Source' container reference feature. + * + * + * @generated + */ + EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getStatechart() + * @generated + */ + EClass STATECHART = eINSTANCE.getStatechart(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntry() + * @generated + */ + EClass ENTRY = eINSTANCE.getEntry(); + + /** + * The meta object literal for the 'Type' attribute feature. + * + * + * @generated + */ + EAttribute ENTRY__TYPE = eINSTANCE.getEntry_Type(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getState() + * @generated + */ + EClass STATE = eINSTANCE.getState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegularState() + * @generated + */ + EClass REGULAR_STATE = eINSTANCE.getRegularState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getCompositeElement() + * @generated + */ + EClass COMPOSITE_ELEMENT = eINSTANCE.getCompositeElement(); + + /** + * The meta object literal for the 'Regions' containment reference list feature. + * + * + * @generated + */ + EReference COMPOSITE_ELEMENT__REGIONS = eINSTANCE.getCompositeElement_Regions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getChoice() + * @generated + */ + EClass CHOICE = eINSTANCE.getChoice(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getExit() + * @generated + */ + EClass EXIT = eINSTANCE.getExit(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getFinalState() + * @generated + */ + EClass FINAL_STATE = eINSTANCE.getFinalState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType Entry Type}' enum. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntryType() + * @generated + */ + EEnum ENTRY_TYPE = eINSTANCE.getEntryType(); + + } + +} //YakindummPackage +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduFactory + * @model kind="package" + * @generated + */ +public interface YakinduPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "yakindu"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "YakinduMetamodel"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "yakindu"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + YakinduPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getVertex() + * @generated + */ + int VERTEX = 1; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__INCOMING_TRANSITIONS = 0; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__OUTGOING_TRANSITIONS = 1; + + /** + * The number of structural features of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getPseudostate() + * @generated + */ + int PSEUDOSTATE = 0; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegion() + * @generated + */ + int REGION = 2; + + /** + * The feature id for the 'Vertices' containment reference list. + * + * + * @generated + * @ordered + */ + int REGION__VERTICES = 0; + + /** + * The number of structural features of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getTransition() + * @generated + */ + int TRANSITION = 3; + + /** + * The feature id for the 'Target' reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__TARGET = 0; + + /** + * The feature id for the 'Source' container reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__SOURCE = 1; + + /** + * The number of structural features of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getCompositeElement() + * @generated + */ + int COMPOSITE_ELEMENT = 9; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT__REGIONS = 0; + + /** + * The number of structural features of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getStatechart() + * @generated + */ + int STATECHART = 4; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATECHART__REGIONS = COMPOSITE_ELEMENT__REGIONS; + + /** + * The number of structural features of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_FEATURE_COUNT = COMPOSITE_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_OPERATION_COUNT = COMPOSITE_ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getEntry() + * @generated + */ + int ENTRY = 5; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl Synchronization}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getSynchronization() + * @generated + */ + int SYNCHRONIZATION = 6; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Synchronization' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Synchronization' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegularState() + * @generated + */ + int REGULAR_STATE = 8; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getState() + * @generated + */ + int STATE = 7; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__REGIONS = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getChoice() + * @generated + */ + int CHOICE = 10; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getExit() + * @generated + */ + int EXIT = 11; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getFinalState() + * @generated + */ + int FINAL_STATE = 12; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate Pseudostate}'. + * + * + * @return the meta object for class 'Pseudostate'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate + * @generated + */ + EClass getPseudostate(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex Vertex}'. + * + * + * @return the meta object for class 'Vertex'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex + * @generated + */ + EClass getVertex(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}'. + * + * + * @return the meta object for the reference list 'Incoming Transitions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_IncomingTransitions(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + * + * @return the meta object for the containment reference list 'Outgoing Transitions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_OutgoingTransitions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region Region}'. + * + * + * @return the meta object for class 'Region'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region + * @generated + */ + EClass getRegion(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices Vertices}'. + * + * + * @return the meta object for the containment reference list 'Vertices'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices() + * @see #getRegion() + * @generated + */ + EReference getRegion_Vertices(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition Transition}'. + * + * + * @return the meta object for class 'Transition'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}'. + * + * + * @return the meta object for the reference 'Target'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget() + * @see #getTransition() + * @generated + */ + EReference getTransition_Target(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}'. + * + * + * @return the meta object for the container reference 'Source'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource() + * @see #getTransition() + * @generated + */ + EReference getTransition_Source(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart Statechart}'. + * + * + * @return the meta object for class 'Statechart'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart + * @generated + */ + EClass getStatechart(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry Entry}'. + * + * + * @return the meta object for class 'Entry'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry + * @generated + */ + EClass getEntry(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization Synchronization}'. + * + * + * @return the meta object for class 'Synchronization'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization + * @generated + */ + EClass getSynchronization(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State State}'. + * + * + * @return the meta object for class 'State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State + * @generated + */ + EClass getState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState Regular State}'. + * + * + * @return the meta object for class 'Regular State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState + * @generated + */ + EClass getRegularState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement Composite Element}'. + * + * + * @return the meta object for class 'Composite Element'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement + * @generated + */ + EClass getCompositeElement(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions Regions}'. + * + * + * @return the meta object for the containment reference list 'Regions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions() + * @see #getCompositeElement() + * @generated + */ + EReference getCompositeElement_Regions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice Choice}'. + * + * + * @return the meta object for class 'Choice'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice + * @generated + */ + EClass getChoice(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit Exit}'. + * + * + * @return the meta object for class 'Exit'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit + * @generated + */ + EClass getExit(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState Final State}'. + * + * + * @return the meta object for class 'Final State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState + * @generated + */ + EClass getFinalState(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + YakinduFactory getYakinduFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getPseudostate() + * @generated + */ + EClass PSEUDOSTATE = eINSTANCE.getPseudostate(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getVertex() + * @generated + */ + EClass VERTEX = eINSTANCE.getVertex(); + + /** + * The meta object literal for the 'Incoming Transitions' reference list feature. + * + * + * @generated + */ + EReference VERTEX__INCOMING_TRANSITIONS = eINSTANCE.getVertex_IncomingTransitions(); + + /** + * The meta object literal for the 'Outgoing Transitions' containment reference list feature. + * + * + * @generated + */ + EReference VERTEX__OUTGOING_TRANSITIONS = eINSTANCE.getVertex_OutgoingTransitions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegion() + * @generated + */ + EClass REGION = eINSTANCE.getRegion(); + + /** + * The meta object literal for the 'Vertices' containment reference list feature. + * + * + * @generated + */ + EReference REGION__VERTICES = eINSTANCE.getRegion_Vertices(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the 'Target' reference feature. + * + * + * @generated + */ + EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target(); + + /** + * The meta object literal for the 'Source' container reference feature. + * + * + * @generated + */ + EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getStatechart() + * @generated + */ + EClass STATECHART = eINSTANCE.getStatechart(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getEntry() + * @generated + */ + EClass ENTRY = eINSTANCE.getEntry(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl Synchronization}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getSynchronization() + * @generated + */ + EClass SYNCHRONIZATION = eINSTANCE.getSynchronization(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getState() + * @generated + */ + EClass STATE = eINSTANCE.getState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegularState() + * @generated + */ + EClass REGULAR_STATE = eINSTANCE.getRegularState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getCompositeElement() + * @generated + */ + EClass COMPOSITE_ELEMENT = eINSTANCE.getCompositeElement(); + + /** + * The meta object literal for the 'Regions' containment reference list feature. + * + * + * @generated + */ + EReference COMPOSITE_ELEMENT__REGIONS = eINSTANCE.getCompositeElement_Regions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getChoice() + * @generated + */ + EClass CHOICE = eINSTANCE.getChoice(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getExit() + * @generated + */ + EClass EXIT = eINSTANCE.getExit(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getFinalState() + * @generated + */ + EClass FINAL_STATE = eINSTANCE.getFinalState(); + + } + +} //YakinduPackage +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduPackage.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummFactory.java new file mode 100644 index 000000000..72a15aa11 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummFactory.java @@ -0,0 +1,222 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummFactory.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage + * @generated + */ +public interface YakindummFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + YakindummFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummFactoryImpl.init(); + + /** + * Returns a new object of class 'Region'. + * + * + * @return a new object of class 'Region'. + * @generated + */ + Region createRegion(); + + /** + * Returns a new object of class 'Transition'. + * + * + * @return a new object of class 'Transition'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class 'Statechart'. + * + * + * @return a new object of class 'Statechart'. + * @generated + */ + Statechart createStatechart(); + + /** + * Returns a new object of class 'Entry'. + * + * + * @return a new object of class 'Entry'. + * @generated + */ + Entry createEntry(); + + /** + * Returns a new object of class 'State'. + * + * + * @return a new object of class 'State'. + * @generated + */ + State createState(); + + /** + * Returns a new object of class 'Choice'. + * + * + * @return a new object of class 'Choice'. + * @generated + */ + Choice createChoice(); + + /** + * Returns a new object of class 'Exit'. + * + * + * @return a new object of class 'Exit'. + * @generated + */ + Exit createExit(); + + /** + * Returns a new object of class 'Final State'. + * + * + * @return a new object of class 'Final State'. + * @generated + */ + FinalState createFinalState(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + YakindummPackage getYakindummPackage(); + +} //YakindummFactory +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public interface YakinduFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + YakinduFactory eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduFactoryImpl.init(); + + /** + * Returns a new object of class 'Region'. + * + * + * @return a new object of class 'Region'. + * @generated + */ + Region createRegion(); + + /** + * Returns a new object of class 'Transition'. + * + * + * @return a new object of class 'Transition'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class 'Statechart'. + * + * + * @return a new object of class 'Statechart'. + * @generated + */ + Statechart createStatechart(); + + /** + * Returns a new object of class 'Entry'. + * + * + * @return a new object of class 'Entry'. + * @generated + */ + Entry createEntry(); + + /** + * Returns a new object of class 'Synchronization'. + * + * + * @return a new object of class 'Synchronization'. + * @generated + */ + Synchronization createSynchronization(); + + /** + * Returns a new object of class 'State'. + * + * + * @return a new object of class 'State'. + * @generated + */ + State createState(); + + /** + * Returns a new object of class 'Choice'. + * + * + * @return a new object of class 'Choice'. + * @generated + */ + Choice createChoice(); + + /** + * Returns a new object of class 'Exit'. + * + * + * @return a new object of class 'Exit'. + * @generated + */ + Exit createExit(); + + /** + * Returns a new object of class 'Final State'. + * + * + * @return a new object of class 'Final State'. + * @generated + */ + FinalState createFinalState(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + YakinduPackage getYakinduPackage(); + +} //YakinduFactory +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduFactory.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummPackage.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummPackage.java new file mode 100644 index 000000000..f74d2357b --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummPackage.java @@ -0,0 +1,2073 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakindummPackage.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummFactory + * @model kind="package" + * @generated + */ +public interface YakindummPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "yakindumm"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "hu.bme.mit.inf.yakindumm"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "ca.mcgill.ecse.yakindumm"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + YakindummPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getVertex() + * @generated + */ + int VERTEX = 1; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__INCOMING_TRANSITIONS = 0; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__OUTGOING_TRANSITIONS = 1; + + /** + * The number of structural features of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getPseudostate() + * @generated + */ + int PSEUDOSTATE = 0; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegion() + * @generated + */ + int REGION = 2; + + /** + * The feature id for the 'Vertices' containment reference list. + * + * + * @generated + * @ordered + */ + int REGION__VERTICES = 0; + + /** + * The number of structural features of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getTransition() + * @generated + */ + int TRANSITION = 3; + + /** + * The feature id for the 'Target' reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__TARGET = 0; + + /** + * The feature id for the 'Source' container reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__SOURCE = 1; + + /** + * The number of structural features of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getCompositeElement() + * @generated + */ + int COMPOSITE_ELEMENT = 8; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT__REGIONS = 0; + + /** + * The number of structural features of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getStatechart() + * @generated + */ + int STATECHART = 4; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATECHART__REGIONS = COMPOSITE_ELEMENT__REGIONS; + + /** + * The number of structural features of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_FEATURE_COUNT = COMPOSITE_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_OPERATION_COUNT = COMPOSITE_ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntry() + * @generated + */ + int ENTRY = 5; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Type' attribute. + * + * + * @generated + * @ordered + */ + int ENTRY__TYPE = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegularState() + * @generated + */ + int REGULAR_STATE = 7; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getState() + * @generated + */ + int STATE = 6; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__REGIONS = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getChoice() + * @generated + */ + int CHOICE = 9; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getExit() + * @generated + */ + int EXIT = 10; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getFinalState() + * @generated + */ + int FINAL_STATE = 11; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType Entry Type}' enum. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntryType() + * @generated + */ + int ENTRY_TYPE = 12; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate Pseudostate}'. + * + * + * @return the meta object for class 'Pseudostate'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate + * @generated + */ + EClass getPseudostate(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex Vertex}'. + * + * + * @return the meta object for class 'Vertex'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex + * @generated + */ + EClass getVertex(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions Incoming Transitions}'. + * + * + * @return the meta object for the reference list 'Incoming Transitions'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getIncomingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_IncomingTransitions(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + * + * @return the meta object for the containment reference list 'Outgoing Transitions'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex#getOutgoingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_OutgoingTransitions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region Region}'. + * + * + * @return the meta object for class 'Region'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region + * @generated + */ + EClass getRegion(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region#getVertices Vertices}'. + * + * + * @return the meta object for the containment reference list 'Vertices'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region#getVertices() + * @see #getRegion() + * @generated + */ + EReference getRegion_Vertices(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition Transition}'. + * + * + * @return the meta object for class 'Transition'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget Target}'. + * + * + * @return the meta object for the reference 'Target'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getTarget() + * @see #getTransition() + * @generated + */ + EReference getTransition_Target(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource Source}'. + * + * + * @return the meta object for the container reference 'Source'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition#getSource() + * @see #getTransition() + * @generated + */ + EReference getTransition_Source(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart Statechart}'. + * + * + * @return the meta object for class 'Statechart'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart + * @generated + */ + EClass getStatechart(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry Entry}'. + * + * + * @return the meta object for class 'Entry'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry + * @generated + */ + EClass getEntry(); + + /** + * Returns the meta object for the attribute '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry#getType Type}'. + * + * + * @return the meta object for the attribute 'Type'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry#getType() + * @see #getEntry() + * @generated + */ + EAttribute getEntry_Type(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State State}'. + * + * + * @return the meta object for class 'State'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State + * @generated + */ + EClass getState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState Regular State}'. + * + * + * @return the meta object for class 'Regular State'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState + * @generated + */ + EClass getRegularState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement Composite Element}'. + * + * + * @return the meta object for class 'Composite Element'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement + * @generated + */ + EClass getCompositeElement(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement#getRegions Regions}'. + * + * + * @return the meta object for the containment reference list 'Regions'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement#getRegions() + * @see #getCompositeElement() + * @generated + */ + EReference getCompositeElement_Regions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice Choice}'. + * + * + * @return the meta object for class 'Choice'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice + * @generated + */ + EClass getChoice(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit Exit}'. + * + * + * @return the meta object for class 'Exit'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit + * @generated + */ + EClass getExit(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState Final State}'. + * + * + * @return the meta object for class 'Final State'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState + * @generated + */ + EClass getFinalState(); + + /** + * Returns the meta object for enum '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType Entry Type}'. + * + * + * @return the meta object for enum 'Entry Type'. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @generated + */ + EEnum getEntryType(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + YakindummFactory getYakindummFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getPseudostate() + * @generated + */ + EClass PSEUDOSTATE = eINSTANCE.getPseudostate(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getVertex() + * @generated + */ + EClass VERTEX = eINSTANCE.getVertex(); + + /** + * The meta object literal for the 'Incoming Transitions' reference list feature. + * + * + * @generated + */ + EReference VERTEX__INCOMING_TRANSITIONS = eINSTANCE.getVertex_IncomingTransitions(); + + /** + * The meta object literal for the 'Outgoing Transitions' containment reference list feature. + * + * + * @generated + */ + EReference VERTEX__OUTGOING_TRANSITIONS = eINSTANCE.getVertex_OutgoingTransitions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegion() + * @generated + */ + EClass REGION = eINSTANCE.getRegion(); + + /** + * The meta object literal for the 'Vertices' containment reference list feature. + * + * + * @generated + */ + EReference REGION__VERTICES = eINSTANCE.getRegion_Vertices(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the 'Target' reference feature. + * + * + * @generated + */ + EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target(); + + /** + * The meta object literal for the 'Source' container reference feature. + * + * + * @generated + */ + EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getStatechart() + * @generated + */ + EClass STATECHART = eINSTANCE.getStatechart(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntry() + * @generated + */ + EClass ENTRY = eINSTANCE.getEntry(); + + /** + * The meta object literal for the 'Type' attribute feature. + * + * + * @generated + */ + EAttribute ENTRY__TYPE = eINSTANCE.getEntry_Type(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getState() + * @generated + */ + EClass STATE = eINSTANCE.getState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getRegularState() + * @generated + */ + EClass REGULAR_STATE = eINSTANCE.getRegularState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getCompositeElement() + * @generated + */ + EClass COMPOSITE_ELEMENT = eINSTANCE.getCompositeElement(); + + /** + * The meta object literal for the 'Regions' containment reference list feature. + * + * + * @generated + */ + EReference COMPOSITE_ELEMENT__REGIONS = eINSTANCE.getCompositeElement_Regions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getChoice() + * @generated + */ + EClass CHOICE = eINSTANCE.getChoice(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getExit() + * @generated + */ + EClass EXIT = eINSTANCE.getExit(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getFinalState() + * @generated + */ + EClass FINAL_STATE = eINSTANCE.getFinalState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType Entry Type}' enum. + * + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.YakindummPackageImpl#getEntryType() + * @generated + */ + EEnum ENTRY_TYPE = eINSTANCE.getEntryType(); + + } + +} //YakindummPackage +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduFactory + * @model kind="package" + * @generated + */ +public interface YakinduPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "yakindu"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "YakinduMetamodel"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "yakindu"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + YakinduPackage eINSTANCE = ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl.init(); + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getVertex() + * @generated + */ + int VERTEX = 1; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__INCOMING_TRANSITIONS = 0; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int VERTEX__OUTGOING_TRANSITIONS = 1; + + /** + * The number of structural features of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Vertex' class. + * + * + * @generated + * @ordered + */ + int VERTEX_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getPseudostate() + * @generated + */ + int PSEUDOSTATE = 0; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Pseudostate' class. + * + * + * @generated + * @ordered + */ + int PSEUDOSTATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegion() + * @generated + */ + int REGION = 2; + + /** + * The feature id for the 'Vertices' containment reference list. + * + * + * @generated + * @ordered + */ + int REGION__VERTICES = 0; + + /** + * The number of structural features of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Region' class. + * + * + * @generated + * @ordered + */ + int REGION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getTransition() + * @generated + */ + int TRANSITION = 3; + + /** + * The feature id for the 'Target' reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__TARGET = 0; + + /** + * The feature id for the 'Source' container reference. + * + * + * @generated + * @ordered + */ + int TRANSITION__SOURCE = 1; + + /** + * The number of structural features of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Transition' class. + * + * + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getCompositeElement() + * @generated + */ + int COMPOSITE_ELEMENT = 9; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT__REGIONS = 0; + + /** + * The number of structural features of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_FEATURE_COUNT = 1; + + /** + * The number of operations of the 'Composite Element' class. + * + * + * @generated + * @ordered + */ + int COMPOSITE_ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getStatechart() + * @generated + */ + int STATECHART = 4; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATECHART__REGIONS = COMPOSITE_ELEMENT__REGIONS; + + /** + * The number of structural features of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_FEATURE_COUNT = COMPOSITE_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Statechart' class. + * + * + * @generated + * @ordered + */ + int STATECHART_OPERATION_COUNT = COMPOSITE_ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getEntry() + * @generated + */ + int ENTRY = 5; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int ENTRY__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Entry' class. + * + * + * @generated + * @ordered + */ + int ENTRY_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl Synchronization}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getSynchronization() + * @generated + */ + int SYNCHRONIZATION = 6; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Synchronization' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Synchronization' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegularState() + * @generated + */ + int REGULAR_STATE = 8; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Regular State' class. + * + * + * @generated + * @ordered + */ + int REGULAR_STATE_OPERATION_COUNT = VERTEX_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getState() + * @generated + */ + int STATE = 7; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The feature id for the 'Regions' containment reference list. + * + * + * @generated + * @ordered + */ + int STATE__REGIONS = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'State' class. + * + * + * @generated + * @ordered + */ + int STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getChoice() + * @generated + */ + int CHOICE = 10; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int CHOICE__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Choice' class. + * + * + * @generated + * @ordered + */ + int CHOICE_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getExit() + * @generated + */ + int EXIT = 11; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Exit' class. + * + * + * @generated + * @ordered + */ + int EXIT_OPERATION_COUNT = PSEUDOSTATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getFinalState() + * @generated + */ + int FINAL_STATE = 12; + + /** + * The feature id for the 'Incoming Transitions' reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__INCOMING_TRANSITIONS = REGULAR_STATE__INCOMING_TRANSITIONS; + + /** + * The feature id for the 'Outgoing Transitions' containment reference list. + * + * + * @generated + * @ordered + */ + int FINAL_STATE__OUTGOING_TRANSITIONS = REGULAR_STATE__OUTGOING_TRANSITIONS; + + /** + * The number of structural features of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_FEATURE_COUNT = REGULAR_STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Final State' class. + * + * + * @generated + * @ordered + */ + int FINAL_STATE_OPERATION_COUNT = REGULAR_STATE_OPERATION_COUNT + 0; + + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate Pseudostate}'. + * + * + * @return the meta object for class 'Pseudostate'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate + * @generated + */ + EClass getPseudostate(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex Vertex}'. + * + * + * @return the meta object for class 'Vertex'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex + * @generated + */ + EClass getVertex(); + + /** + * Returns the meta object for the reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions Incoming Transitions}'. + * + * + * @return the meta object for the reference list 'Incoming Transitions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getIncomingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_IncomingTransitions(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions Outgoing Transitions}'. + * + * + * @return the meta object for the containment reference list 'Outgoing Transitions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex#getOutgoingTransitions() + * @see #getVertex() + * @generated + */ + EReference getVertex_OutgoingTransitions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region Region}'. + * + * + * @return the meta object for class 'Region'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region + * @generated + */ + EClass getRegion(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices Vertices}'. + * + * + * @return the meta object for the containment reference list 'Vertices'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region#getVertices() + * @see #getRegion() + * @generated + */ + EReference getRegion_Vertices(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition Transition}'. + * + * + * @return the meta object for class 'Transition'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for the reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget Target}'. + * + * + * @return the meta object for the reference 'Target'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getTarget() + * @see #getTransition() + * @generated + */ + EReference getTransition_Target(); + + /** + * Returns the meta object for the container reference '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource Source}'. + * + * + * @return the meta object for the container reference 'Source'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition#getSource() + * @see #getTransition() + * @generated + */ + EReference getTransition_Source(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart Statechart}'. + * + * + * @return the meta object for class 'Statechart'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart + * @generated + */ + EClass getStatechart(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry Entry}'. + * + * + * @return the meta object for class 'Entry'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry + * @generated + */ + EClass getEntry(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization Synchronization}'. + * + * + * @return the meta object for class 'Synchronization'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization + * @generated + */ + EClass getSynchronization(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State State}'. + * + * + * @return the meta object for class 'State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State + * @generated + */ + EClass getState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState Regular State}'. + * + * + * @return the meta object for class 'Regular State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState + * @generated + */ + EClass getRegularState(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement Composite Element}'. + * + * + * @return the meta object for class 'Composite Element'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement + * @generated + */ + EClass getCompositeElement(); + + /** + * Returns the meta object for the containment reference list '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions Regions}'. + * + * + * @return the meta object for the containment reference list 'Regions'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement#getRegions() + * @see #getCompositeElement() + * @generated + */ + EReference getCompositeElement_Regions(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice Choice}'. + * + * + * @return the meta object for class 'Choice'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice + * @generated + */ + EClass getChoice(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit Exit}'. + * + * + * @return the meta object for class 'Exit'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit + * @generated + */ + EClass getExit(); + + /** + * Returns the meta object for class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState Final State}'. + * + * + * @return the meta object for class 'Final State'. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState + * @generated + */ + EClass getFinalState(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + YakinduFactory getYakinduFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each operation of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl Pseudostate}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.PseudostateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getPseudostate() + * @generated + */ + EClass PSEUDOSTATE = eINSTANCE.getPseudostate(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl Vertex}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getVertex() + * @generated + */ + EClass VERTEX = eINSTANCE.getVertex(); + + /** + * The meta object literal for the 'Incoming Transitions' reference list feature. + * + * + * @generated + */ + EReference VERTEX__INCOMING_TRANSITIONS = eINSTANCE.getVertex_IncomingTransitions(); + + /** + * The meta object literal for the 'Outgoing Transitions' containment reference list feature. + * + * + * @generated + */ + EReference VERTEX__OUTGOING_TRANSITIONS = eINSTANCE.getVertex_OutgoingTransitions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl Region}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegion() + * @generated + */ + EClass REGION = eINSTANCE.getRegion(); + + /** + * The meta object literal for the 'Vertices' containment reference list feature. + * + * + * @generated + */ + EReference REGION__VERTICES = eINSTANCE.getRegion_Vertices(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl Transition}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the 'Target' reference feature. + * + * + * @generated + */ + EReference TRANSITION__TARGET = eINSTANCE.getTransition_Target(); + + /** + * The meta object literal for the 'Source' container reference feature. + * + * + * @generated + */ + EReference TRANSITION__SOURCE = eINSTANCE.getTransition_Source(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl Statechart}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StatechartImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getStatechart() + * @generated + */ + EClass STATECHART = eINSTANCE.getStatechart(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl Entry}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.EntryImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getEntry() + * @generated + */ + EClass ENTRY = eINSTANCE.getEntry(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl Synchronization}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.SynchronizationImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getSynchronization() + * @generated + */ + EClass SYNCHRONIZATION = eINSTANCE.getSynchronization(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getState() + * @generated + */ + EClass STATE = eINSTANCE.getState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl Regular State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegularStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getRegularState() + * @generated + */ + EClass REGULAR_STATE = eINSTANCE.getRegularState(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl Composite Element}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getCompositeElement() + * @generated + */ + EClass COMPOSITE_ELEMENT = eINSTANCE.getCompositeElement(); + + /** + * The meta object literal for the 'Regions' containment reference list feature. + * + * + * @generated + */ + EReference COMPOSITE_ELEMENT__REGIONS = eINSTANCE.getCompositeElement_Regions(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl Choice}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ChoiceImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getChoice() + * @generated + */ + EClass CHOICE = eINSTANCE.getChoice(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl Exit}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.ExitImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getExit() + * @generated + */ + EClass EXIT = eINSTANCE.getExit(); + + /** + * The meta object literal for the '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl Final State}' class. + * + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.FinalStateImpl + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.YakinduPackageImpl#getFinalState() + * @generated + */ + EClass FINAL_STATE = eINSTANCE.getFinalState(); + + } + +} //YakinduPackage +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/YakinduPackage.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ChoiceImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ChoiceImpl.java new file mode 100644 index 000000000..d568627b2 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ChoiceImpl.java @@ -0,0 +1,77 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ChoiceImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Choice'. + * + * + * @generated + */ +public class ChoiceImpl extends PseudostateImpl implements Choice { + /** + * + * + * @generated + */ + protected ChoiceImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.CHOICE; + } + +} //ChoiceImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Choice'. + * + * + * @generated + */ +public class ChoiceImpl extends PseudostateImpl implements Choice { + /** + * + * + * @generated + */ + protected ChoiceImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.CHOICE; + } + +} //ChoiceImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ChoiceImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/CompositeElementImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/CompositeElementImpl.java new file mode 100644 index 000000000..cca7e3865 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/CompositeElementImpl.java @@ -0,0 +1,307 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/CompositeElementImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Composite Element'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.CompositeElementImpl#getRegions Regions}
  • + *
+ * + * @generated + */ +public abstract class CompositeElementImpl extends MinimalEObjectImpl.Container implements CompositeElement { + /** + * The cached value of the '{@link #getRegions() Regions}' containment reference list. + * + * + * @see #getRegions() + * @generated + * @ordered + */ + protected EList regions; + + /** + * + * + * @generated + */ + protected CompositeElementImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.COMPOSITE_ELEMENT; + } + + /** + * + * + * @generated + */ + public EList getRegions() { + if (regions == null) { + regions = new EObjectContainmentEList(Region.class, this, YakindummPackage.COMPOSITE_ELEMENT__REGIONS); + } + return regions; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.COMPOSITE_ELEMENT__REGIONS: + return ((InternalEList)getRegions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.COMPOSITE_ELEMENT__REGIONS: + return getRegions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.COMPOSITE_ELEMENT__REGIONS: + getRegions().clear(); + getRegions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.COMPOSITE_ELEMENT__REGIONS: + getRegions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.COMPOSITE_ELEMENT__REGIONS: + return regions != null && !regions.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //CompositeElementImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Composite Element'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.CompositeElementImpl#getRegions Regions}
  • + *
+ * + * @generated + */ +public abstract class CompositeElementImpl extends MinimalEObjectImpl.Container implements CompositeElement { + /** + * The cached value of the '{@link #getRegions() Regions}' containment reference list. + * + * + * @see #getRegions() + * @generated + * @ordered + */ + protected EList regions; + + /** + * + * + * @generated + */ + protected CompositeElementImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.COMPOSITE_ELEMENT; + } + + /** + * + * + * @generated + */ + public EList getRegions() { + if (regions == null) { + regions = new EObjectContainmentEList(Region.class, this, YakinduPackage.COMPOSITE_ELEMENT__REGIONS); + } + return regions; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + return ((InternalEList)getRegions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + return getRegions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + getRegions().clear(); + getRegions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + getRegions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: + return regions != null && !regions.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //CompositeElementImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/CompositeElementImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/EntryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/EntryImpl.java new file mode 100644 index 000000000..0ad871005 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/EntryImpl.java @@ -0,0 +1,163 @@ +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +/** + * + * An implementation of the model object 'Entry'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.EntryImpl#getType Type}
  • + *
+ * + * @generated + */ +public class EntryImpl extends PseudostateImpl implements Entry { + /** + * The default value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected static final EntryType TYPE_EDEFAULT = EntryType.NORMAL; + + /** + * The cached value of the '{@link #getType() Type}' attribute. + * + * + * @see #getType() + * @generated + * @ordered + */ + protected EntryType type = TYPE_EDEFAULT; + + /** + * + * + * @generated + */ + protected EntryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.ENTRY; + } + + /** + * + * + * @generated + */ + public EntryType getType() { + return type; + } + + /** + * + * + * @generated + */ + public void setType(EntryType newType) { + EntryType oldType = type; + type = newType == null ? TYPE_EDEFAULT : newType; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakindummPackage.ENTRY__TYPE, oldType, type)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + return getType(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + setType((EntryType)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + setType(TYPE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.ENTRY__TYPE: + return type != TYPE_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (Type: "); + result.append(type); + result.append(')'); + return result.toString(); + } + +} //EntryImpl diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ExitImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ExitImpl.java new file mode 100644 index 000000000..136bb7aa5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ExitImpl.java @@ -0,0 +1,77 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/ExitImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Exit'. + * + * + * @generated + */ +public class ExitImpl extends PseudostateImpl implements Exit { + /** + * + * + * @generated + */ + protected ExitImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.EXIT; + } + +} //ExitImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Exit'. + * + * + * @generated + */ +public class ExitImpl extends PseudostateImpl implements Exit { + /** + * + * + * @generated + */ + protected ExitImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.EXIT; + } + +} //ExitImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/ExitImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/FinalStateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/FinalStateImpl.java new file mode 100644 index 000000000..4607e363c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/FinalStateImpl.java @@ -0,0 +1,77 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/FinalStateImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Final State'. + * + * + * @generated + */ +public class FinalStateImpl extends RegularStateImpl implements FinalState { + /** + * + * + * @generated + */ + protected FinalStateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.FINAL_STATE; + } + +} //FinalStateImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Final State'. + * + * + * @generated + */ +public class FinalStateImpl extends RegularStateImpl implements FinalState { + /** + * + * + * @generated + */ + protected FinalStateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.FINAL_STATE; + } + +} //FinalStateImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/FinalStateImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/PseudostateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/PseudostateImpl.java new file mode 100644 index 000000000..66be23f27 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/PseudostateImpl.java @@ -0,0 +1,77 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/PseudostateImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Pseudostate'. + * + * + * @generated + */ +public abstract class PseudostateImpl extends VertexImpl implements Pseudostate { + /** + * + * + * @generated + */ + protected PseudostateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.PSEUDOSTATE; + } + +} //PseudostateImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Pseudostate'. + * + * + * @generated + */ +public abstract class PseudostateImpl extends VertexImpl implements Pseudostate { + /** + * + * + * @generated + */ + protected PseudostateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.PSEUDOSTATE; + } + +} //PseudostateImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/PseudostateImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegionImpl.java new file mode 100644 index 000000000..c384ce061 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegionImpl.java @@ -0,0 +1,307 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegionImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Region'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.RegionImpl#getVertices Vertices}
  • + *
+ * + * @generated + */ +public class RegionImpl extends MinimalEObjectImpl.Container implements Region { + /** + * The cached value of the '{@link #getVertices() Vertices}' containment reference list. + * + * + * @see #getVertices() + * @generated + * @ordered + */ + protected EList vertices; + + /** + * + * + * @generated + */ + protected RegionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.REGION; + } + + /** + * + * + * @generated + */ + public EList getVertices() { + if (vertices == null) { + vertices = new EObjectContainmentEList(Vertex.class, this, YakindummPackage.REGION__VERTICES); + } + return vertices; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.REGION__VERTICES: + return ((InternalEList)getVertices()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.REGION__VERTICES: + return getVertices(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.REGION__VERTICES: + getVertices().clear(); + getVertices().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.REGION__VERTICES: + getVertices().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.REGION__VERTICES: + return vertices != null && !vertices.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //RegionImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Region'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.RegionImpl#getVertices Vertices}
  • + *
+ * + * @generated + */ +public class RegionImpl extends MinimalEObjectImpl.Container implements Region { + /** + * The cached value of the '{@link #getVertices() Vertices}' containment reference list. + * + * + * @see #getVertices() + * @generated + * @ordered + */ + protected EList vertices; + + /** + * + * + * @generated + */ + protected RegionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.REGION; + } + + /** + * + * + * @generated + */ + public EList getVertices() { + if (vertices == null) { + vertices = new EObjectContainmentEList(Vertex.class, this, YakinduPackage.REGION__VERTICES); + } + return vertices; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + return ((InternalEList)getVertices()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + return getVertices(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + getVertices().clear(); + getVertices().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + getVertices().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.REGION__VERTICES: + return vertices != null && !vertices.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //RegionImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegionImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegularStateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegularStateImpl.java new file mode 100644 index 000000000..64a97e604 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegularStateImpl.java @@ -0,0 +1,77 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/RegularStateImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Regular State'. + * + * + * @generated + */ +public abstract class RegularStateImpl extends VertexImpl implements RegularState { + /** + * + * + * @generated + */ + protected RegularStateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.REGULAR_STATE; + } + +} //RegularStateImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Regular State'. + * + * + * @generated + */ +public abstract class RegularStateImpl extends VertexImpl implements RegularState { + /** + * + * + * @generated + */ + protected RegularStateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.REGULAR_STATE; + } + +} //RegularStateImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/RegularStateImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StateImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StateImpl.java new file mode 100644 index 000000000..10e619ab5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StateImpl.java @@ -0,0 +1,369 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StateImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'State'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.StateImpl#getRegions Regions}
  • + *
+ * + * @generated + */ +public class StateImpl extends RegularStateImpl implements State { + /** + * The cached value of the '{@link #getRegions() Regions}' containment reference list. + * + * + * @see #getRegions() + * @generated + * @ordered + */ + protected EList regions; + + /** + * + * + * @generated + */ + protected StateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.STATE; + } + + /** + * + * + * @generated + */ + public EList getRegions() { + if (regions == null) { + regions = new EObjectContainmentEList(Region.class, this, YakindummPackage.STATE__REGIONS); + } + return regions; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.STATE__REGIONS: + return ((InternalEList)getRegions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.STATE__REGIONS: + return getRegions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.STATE__REGIONS: + getRegions().clear(); + getRegions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.STATE__REGIONS: + getRegions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.STATE__REGIONS: + return regions != null && !regions.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) { + if (baseClass == CompositeElement.class) { + switch (derivedFeatureID) { + case YakindummPackage.STATE__REGIONS: return YakindummPackage.COMPOSITE_ELEMENT__REGIONS; + default: return -1; + } + } + return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); + } + + /** + * + * + * @generated + */ + @Override + public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) { + if (baseClass == CompositeElement.class) { + switch (baseFeatureID) { + case YakindummPackage.COMPOSITE_ELEMENT__REGIONS: return YakindummPackage.STATE__REGIONS; + default: return -1; + } + } + return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); + } + +} //StateImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'State'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.StateImpl#getRegions Regions}
  • + *
+ * + * @generated + */ +public class StateImpl extends RegularStateImpl implements State { + /** + * The cached value of the '{@link #getRegions() Regions}' containment reference list. + * + * + * @see #getRegions() + * @generated + * @ordered + */ + protected EList regions; + + /** + * + * + * @generated + */ + protected StateImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.STATE; + } + + /** + * + * + * @generated + */ + public EList getRegions() { + if (regions == null) { + regions = new EObjectContainmentEList(Region.class, this, YakinduPackage.STATE__REGIONS); + } + return regions; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + return ((InternalEList)getRegions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + return getRegions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + getRegions().clear(); + getRegions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + getRegions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.STATE__REGIONS: + return regions != null && !regions.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) { + if (baseClass == CompositeElement.class) { + switch (derivedFeatureID) { + case YakinduPackage.STATE__REGIONS: return YakinduPackage.COMPOSITE_ELEMENT__REGIONS; + default: return -1; + } + } + return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); + } + + /** + * + * + * @generated + */ + @Override + public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) { + if (baseClass == CompositeElement.class) { + switch (baseFeatureID) { + case YakinduPackage.COMPOSITE_ELEMENT__REGIONS: return YakinduPackage.STATE__REGIONS; + default: return -1; + } + } + return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); + } + +} //StateImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StateImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StatechartImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StatechartImpl.java new file mode 100644 index 000000000..3386a99b4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StatechartImpl.java @@ -0,0 +1,77 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/StatechartImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Statechart'. + * + * + * @generated + */ +public class StatechartImpl extends CompositeElementImpl implements Statechart { + /** + * + * + * @generated + */ + protected StatechartImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.STATECHART; + } + +} //StatechartImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; + +/** + * + * An implementation of the model object 'Statechart'. + * + * + * @generated + */ +public class StatechartImpl extends CompositeElementImpl implements Statechart { + /** + * + * + * @generated + */ + protected StatechartImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.STATECHART; + } + +} //StatechartImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/StatechartImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/TransitionImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/TransitionImpl.java new file mode 100644 index 000000000..83bb72638 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/TransitionImpl.java @@ -0,0 +1,571 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/TransitionImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'Transition'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl#getTarget Target}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.TransitionImpl#getSource Source}
  • + *
+ * + * @generated + */ +public class TransitionImpl extends MinimalEObjectImpl.Container implements Transition { + /** + * The cached value of the '{@link #getTarget() Target}' reference. + * + * + * @see #getTarget() + * @generated + * @ordered + */ + protected Vertex target; + + /** + * + * + * @generated + */ + protected TransitionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.TRANSITION; + } + + /** + * + * + * @generated + */ + public Vertex getTarget() { + if (target != null && target.eIsProxy()) { + InternalEObject oldTarget = (InternalEObject)target; + target = (Vertex)eResolveProxy(oldTarget); + if (target != oldTarget) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, YakindummPackage.TRANSITION__TARGET, oldTarget, target)); + } + } + return target; + } + + /** + * + * + * @generated + */ + public Vertex basicGetTarget() { + return target; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetTarget(Vertex newTarget, NotificationChain msgs) { + Vertex oldTarget = target; + target = newTarget; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, YakindummPackage.TRANSITION__TARGET, oldTarget, newTarget); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setTarget(Vertex newTarget) { + if (newTarget != target) { + NotificationChain msgs = null; + if (target != null) + msgs = ((InternalEObject)target).eInverseRemove(this, YakindummPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + if (newTarget != null) + msgs = ((InternalEObject)newTarget).eInverseAdd(this, YakindummPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + msgs = basicSetTarget(newTarget, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakindummPackage.TRANSITION__TARGET, newTarget, newTarget)); + } + + /** + * + * + * @generated + */ + public Vertex getSource() { + if (eContainerFeatureID() != YakindummPackage.TRANSITION__SOURCE) return null; + return (Vertex)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetSource(Vertex newSource, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newSource, YakindummPackage.TRANSITION__SOURCE, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setSource(Vertex newSource) { + if (newSource != eInternalContainer() || (eContainerFeatureID() != YakindummPackage.TRANSITION__SOURCE && newSource != null)) { + if (EcoreUtil.isAncestor(this, newSource)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newSource != null) + msgs = ((InternalEObject)newSource).eInverseAdd(this, YakindummPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs); + msgs = basicSetSource(newSource, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakindummPackage.TRANSITION__SOURCE, newSource, newSource)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.TRANSITION__TARGET: + if (target != null) + msgs = ((InternalEObject)target).eInverseRemove(this, YakindummPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + return basicSetTarget((Vertex)otherEnd, msgs); + case YakindummPackage.TRANSITION__SOURCE: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetSource((Vertex)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.TRANSITION__TARGET: + return basicSetTarget(null, msgs); + case YakindummPackage.TRANSITION__SOURCE: + return basicSetSource(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case YakindummPackage.TRANSITION__SOURCE: + return eInternalContainer().eInverseRemove(this, YakindummPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.TRANSITION__TARGET: + if (resolve) return getTarget(); + return basicGetTarget(); + case YakindummPackage.TRANSITION__SOURCE: + return getSource(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.TRANSITION__TARGET: + setTarget((Vertex)newValue); + return; + case YakindummPackage.TRANSITION__SOURCE: + setSource((Vertex)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.TRANSITION__TARGET: + setTarget((Vertex)null); + return; + case YakindummPackage.TRANSITION__SOURCE: + setSource((Vertex)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.TRANSITION__TARGET: + return target != null; + case YakindummPackage.TRANSITION__SOURCE: + return getSource() != null; + } + return super.eIsSet(featureID); + } + +} //TransitionImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * + * An implementation of the model object 'Transition'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl#getTarget Target}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.TransitionImpl#getSource Source}
  • + *
+ * + * @generated + */ +public class TransitionImpl extends MinimalEObjectImpl.Container implements Transition { + /** + * The cached value of the '{@link #getTarget() Target}' reference. + * + * + * @see #getTarget() + * @generated + * @ordered + */ + protected Vertex target; + + /** + * + * + * @generated + */ + protected TransitionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.TRANSITION; + } + + /** + * + * + * @generated + */ + public Vertex getTarget() { + if (target != null && target.eIsProxy()) { + InternalEObject oldTarget = (InternalEObject)target; + target = (Vertex)eResolveProxy(oldTarget); + if (target != oldTarget) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, YakinduPackage.TRANSITION__TARGET, oldTarget, target)); + } + } + return target; + } + + /** + * + * + * @generated + */ + public Vertex basicGetTarget() { + return target; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetTarget(Vertex newTarget, NotificationChain msgs) { + Vertex oldTarget = target; + target = newTarget; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, YakinduPackage.TRANSITION__TARGET, oldTarget, newTarget); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setTarget(Vertex newTarget) { + if (newTarget != target) { + NotificationChain msgs = null; + if (target != null) + msgs = ((InternalEObject)target).eInverseRemove(this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + if (newTarget != null) + msgs = ((InternalEObject)newTarget).eInverseAdd(this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + msgs = basicSetTarget(newTarget, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakinduPackage.TRANSITION__TARGET, newTarget, newTarget)); + } + + /** + * + * + * @generated + */ + public Vertex getSource() { + if (eContainerFeatureID() != YakinduPackage.TRANSITION__SOURCE) return null; + return (Vertex)eInternalContainer(); + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetSource(Vertex newSource, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newSource, YakinduPackage.TRANSITION__SOURCE, msgs); + return msgs; + } + + /** + * + * + * @generated + */ + public void setSource(Vertex newSource) { + if (newSource != eInternalContainer() || (eContainerFeatureID() != YakinduPackage.TRANSITION__SOURCE && newSource != null)) { + if (EcoreUtil.isAncestor(this, newSource)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newSource != null) + msgs = ((InternalEObject)newSource).eInverseAdd(this, YakinduPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs); + msgs = basicSetSource(newSource, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, YakinduPackage.TRANSITION__SOURCE, newSource, newSource)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + if (target != null) + msgs = ((InternalEObject)target).eInverseRemove(this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, Vertex.class, msgs); + return basicSetTarget((Vertex)otherEnd, msgs); + case YakinduPackage.TRANSITION__SOURCE: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetSource((Vertex)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + return basicSetTarget(null, msgs); + case YakinduPackage.TRANSITION__SOURCE: + return basicSetSource(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case YakinduPackage.TRANSITION__SOURCE: + return eInternalContainer().eInverseRemove(this, YakinduPackage.VERTEX__OUTGOING_TRANSITIONS, Vertex.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + if (resolve) return getTarget(); + return basicGetTarget(); + case YakinduPackage.TRANSITION__SOURCE: + return getSource(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + setTarget((Vertex)newValue); + return; + case YakinduPackage.TRANSITION__SOURCE: + setSource((Vertex)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + setTarget((Vertex)null); + return; + case YakinduPackage.TRANSITION__SOURCE: + setSource((Vertex)null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.TRANSITION__TARGET: + return target != null; + case YakinduPackage.TRANSITION__SOURCE: + return getSource() != null; + } + return super.eIsSet(featureID); + } + +} //TransitionImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/TransitionImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/VertexImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/VertexImpl.java new file mode 100644 index 000000000..5e78c5660 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/VertexImpl.java @@ -0,0 +1,415 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/VertexImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Vertex'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl#getIncomingTransitions Incoming Transitions}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl.VertexImpl#getOutgoingTransitions Outgoing Transitions}
  • + *
+ * + * @generated + */ +public abstract class VertexImpl extends MinimalEObjectImpl.Container implements Vertex { + /** + * The cached value of the '{@link #getIncomingTransitions() Incoming Transitions}' reference list. + * + * + * @see #getIncomingTransitions() + * @generated + * @ordered + */ + protected EList incomingTransitions; + + /** + * The cached value of the '{@link #getOutgoingTransitions() Outgoing Transitions}' containment reference list. + * + * + * @see #getOutgoingTransitions() + * @generated + * @ordered + */ + protected EList outgoingTransitions; + + /** + * + * + * @generated + */ + protected VertexImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakindummPackage.Literals.VERTEX; + } + + /** + * + * + * @generated + */ + public EList getIncomingTransitions() { + if (incomingTransitions == null) { + incomingTransitions = new EObjectWithInverseResolvingEList(Transition.class, this, YakindummPackage.VERTEX__INCOMING_TRANSITIONS, YakindummPackage.TRANSITION__TARGET); + } + return incomingTransitions; + } + + /** + * + * + * @generated + */ + public EList getOutgoingTransitions() { + if (outgoingTransitions == null) { + outgoingTransitions = new EObjectContainmentWithInverseEList(Transition.class, this, YakindummPackage.VERTEX__OUTGOING_TRANSITIONS, YakindummPackage.TRANSITION__SOURCE); + } + return outgoingTransitions; + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.VERTEX__INCOMING_TRANSITIONS: + return ((InternalEList)(InternalEList)getIncomingTransitions()).basicAdd(otherEnd, msgs); + case YakindummPackage.VERTEX__OUTGOING_TRANSITIONS: + return ((InternalEList)(InternalEList)getOutgoingTransitions()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakindummPackage.VERTEX__INCOMING_TRANSITIONS: + return ((InternalEList)getIncomingTransitions()).basicRemove(otherEnd, msgs); + case YakindummPackage.VERTEX__OUTGOING_TRANSITIONS: + return ((InternalEList)getOutgoingTransitions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakindummPackage.VERTEX__INCOMING_TRANSITIONS: + return getIncomingTransitions(); + case YakindummPackage.VERTEX__OUTGOING_TRANSITIONS: + return getOutgoingTransitions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakindummPackage.VERTEX__INCOMING_TRANSITIONS: + getIncomingTransitions().clear(); + getIncomingTransitions().addAll((Collection)newValue); + return; + case YakindummPackage.VERTEX__OUTGOING_TRANSITIONS: + getOutgoingTransitions().clear(); + getOutgoingTransitions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakindummPackage.VERTEX__INCOMING_TRANSITIONS: + getIncomingTransitions().clear(); + return; + case YakindummPackage.VERTEX__OUTGOING_TRANSITIONS: + getOutgoingTransitions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakindummPackage.VERTEX__INCOMING_TRANSITIONS: + return incomingTransitions != null && !incomingTransitions.isEmpty(); + case YakindummPackage.VERTEX__OUTGOING_TRANSITIONS: + return outgoingTransitions != null && !outgoingTransitions.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //VertexImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; +import org.eclipse.emf.ecore.util.InternalEList; + +/** + * + * An implementation of the model object 'Vertex'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl#getIncomingTransitions Incoming Transitions}
  • + *
  • {@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl.VertexImpl#getOutgoingTransitions Outgoing Transitions}
  • + *
+ * + * @generated + */ +public abstract class VertexImpl extends MinimalEObjectImpl.Container implements Vertex { + /** + * The cached value of the '{@link #getIncomingTransitions() Incoming Transitions}' reference list. + * + * + * @see #getIncomingTransitions() + * @generated + * @ordered + */ + protected EList incomingTransitions; + + /** + * The cached value of the '{@link #getOutgoingTransitions() Outgoing Transitions}' containment reference list. + * + * + * @see #getOutgoingTransitions() + * @generated + * @ordered + */ + protected EList outgoingTransitions; + + /** + * + * + * @generated + */ + protected VertexImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return YakinduPackage.Literals.VERTEX; + } + + /** + * + * + * @generated + */ + public EList getIncomingTransitions() { + if (incomingTransitions == null) { + incomingTransitions = new EObjectWithInverseResolvingEList(Transition.class, this, YakinduPackage.VERTEX__INCOMING_TRANSITIONS, YakinduPackage.TRANSITION__TARGET); + } + return incomingTransitions; + } + + /** + * + * + * @generated + */ + public EList getOutgoingTransitions() { + if (outgoingTransitions == null) { + outgoingTransitions = new EObjectContainmentWithInverseEList(Transition.class, this, YakinduPackage.VERTEX__OUTGOING_TRANSITIONS, YakinduPackage.TRANSITION__SOURCE); + } + return outgoingTransitions; + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return ((InternalEList)(InternalEList)getIncomingTransitions()).basicAdd(otherEnd, msgs); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return ((InternalEList)(InternalEList)getOutgoingTransitions()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return ((InternalEList)getIncomingTransitions()).basicRemove(otherEnd, msgs); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return ((InternalEList)getOutgoingTransitions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return getIncomingTransitions(); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return getOutgoingTransitions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + getIncomingTransitions().clear(); + getIncomingTransitions().addAll((Collection)newValue); + return; + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + getOutgoingTransitions().clear(); + getOutgoingTransitions().addAll((Collection)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + getIncomingTransitions().clear(); + return; + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + getOutgoingTransitions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case YakinduPackage.VERTEX__INCOMING_TRANSITIONS: + return incomingTransitions != null && !incomingTransitions.isEmpty(); + case YakinduPackage.VERTEX__OUTGOING_TRANSITIONS: + return outgoingTransitions != null && !outgoingTransitions.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //VertexImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.standalone.test/src/ca/mcgill/ecse/dslreasoner/standalone/test/yakindu/impl/VertexImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduFactoryImpl.java new file mode 100644 index 000000000..1aa8b67a5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduFactoryImpl.java @@ -0,0 +1,409 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummFactoryImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class YakindummFactoryImpl extends EFactoryImpl implements YakindummFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static YakindummFactory init() { + try { + YakindummFactory theYakindummFactory = (YakindummFactory)EPackage.Registry.INSTANCE.getEFactory(YakindummPackage.eNS_URI); + if (theYakindummFactory != null) { + return theYakindummFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new YakindummFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public YakindummFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case YakindummPackage.REGION: return createRegion(); + case YakindummPackage.TRANSITION: return createTransition(); + case YakindummPackage.STATECHART: return createStatechart(); + case YakindummPackage.ENTRY: return createEntry(); + case YakindummPackage.STATE: return createState(); + case YakindummPackage.CHOICE: return createChoice(); + case YakindummPackage.EXIT: return createExit(); + case YakindummPackage.FINAL_STATE: return createFinalState(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public Object createFromString(EDataType eDataType, String initialValue) { + switch (eDataType.getClassifierID()) { + case YakindummPackage.ENTRY_TYPE: + return createEntryTypeFromString(eDataType, initialValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public String convertToString(EDataType eDataType, Object instanceValue) { + switch (eDataType.getClassifierID()) { + case YakindummPackage.ENTRY_TYPE: + return convertEntryTypeToString(eDataType, instanceValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Region createRegion() { + RegionImpl region = new RegionImpl(); + return region; + } + + /** + * + * + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * + * + * @generated + */ + public Statechart createStatechart() { + StatechartImpl statechart = new StatechartImpl(); + return statechart; + } + + /** + * + * + * @generated + */ + public Entry createEntry() { + EntryImpl entry = new EntryImpl(); + return entry; + } + + /** + * + * + * @generated + */ + public State createState() { + StateImpl state = new StateImpl(); + return state; + } + + /** + * + * + * @generated + */ + public Choice createChoice() { + ChoiceImpl choice = new ChoiceImpl(); + return choice; + } + + /** + * + * + * @generated + */ + public Exit createExit() { + ExitImpl exit = new ExitImpl(); + return exit; + } + + /** + * + * + * @generated + */ + public FinalState createFinalState() { + FinalStateImpl finalState = new FinalStateImpl(); + return finalState; + } + + /** + * + * + * @generated + */ + public EntryType createEntryTypeFromString(EDataType eDataType, String initialValue) { + EntryType result = EntryType.get(initialValue); + if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); + return result; + } + + /** + * + * + * @generated + */ + public String convertEntryTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated + */ + public YakindummPackage getYakindummPackage() { + return (YakindummPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static YakindummPackage getPackage() { + return YakindummPackage.eINSTANCE; + } + +} //YakindummFactoryImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class YakinduFactoryImpl extends EFactoryImpl implements YakinduFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static YakinduFactory init() { + try { + YakinduFactory theYakinduFactory = (YakinduFactory)EPackage.Registry.INSTANCE.getEFactory(YakinduPackage.eNS_URI); + if (theYakinduFactory != null) { + return theYakinduFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new YakinduFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public YakinduFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case YakinduPackage.REGION: return createRegion(); + case YakinduPackage.TRANSITION: return createTransition(); + case YakinduPackage.STATECHART: return createStatechart(); + case YakinduPackage.ENTRY: return createEntry(); + case YakinduPackage.SYNCHRONIZATION: return createSynchronization(); + case YakinduPackage.STATE: return createState(); + case YakinduPackage.CHOICE: return createChoice(); + case YakinduPackage.EXIT: return createExit(); + case YakinduPackage.FINAL_STATE: return createFinalState(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Region createRegion() { + RegionImpl region = new RegionImpl(); + return region; + } + + /** + * + * + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * + * + * @generated + */ + public Statechart createStatechart() { + StatechartImpl statechart = new StatechartImpl(); + return statechart; + } + + /** + * + * + * @generated + */ + public Entry createEntry() { + EntryImpl entry = new EntryImpl(); + return entry; + } + + /** + * + * + * @generated + */ + public Synchronization createSynchronization() { + SynchronizationImpl synchronization = new SynchronizationImpl(); + return synchronization; + } + + /** + * + * + * @generated + */ + public State createState() { + StateImpl state = new StateImpl(); + return state; + } + + /** + * + * + * @generated + */ + public Choice createChoice() { + ChoiceImpl choice = new ChoiceImpl(); + return choice; + } + + /** + * + * + * @generated + */ + public Exit createExit() { + ExitImpl exit = new ExitImpl(); + return exit; + } + + /** + * + * + * @generated + */ + public FinalState createFinalState() { + FinalStateImpl finalState = new FinalStateImpl(); + return finalState; + } + + /** + * + * + * @generated + */ + public YakinduPackage getYakinduPackage() { + return (YakinduPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static YakinduPackage getPackage() { + return YakinduPackage.eINSTANCE; + } + +} //YakinduFactoryImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduFactoryImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduPackageImpl.java new file mode 100644 index 000000000..87ae07f43 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduPackageImpl.java @@ -0,0 +1,1008 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummPackageImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummFactory; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class YakindummPackageImpl extends EPackageImpl implements YakindummPackage { + /** + * + * + * @generated + */ + private EClass pseudostateEClass = null; + + /** + * + * + * @generated + */ + private EClass vertexEClass = null; + + /** + * + * + * @generated + */ + private EClass regionEClass = null; + + /** + * + * + * @generated + */ + private EClass transitionEClass = null; + + /** + * + * + * @generated + */ + private EClass statechartEClass = null; + + /** + * + * + * @generated + */ + private EClass entryEClass = null; + + /** + * + * + * @generated + */ + private EClass stateEClass = null; + + /** + * + * + * @generated + */ + private EClass regularStateEClass = null; + + /** + * + * + * @generated + */ + private EClass compositeElementEClass = null; + + /** + * + * + * @generated + */ + private EClass choiceEClass = null; + + /** + * + * + * @generated + */ + private EClass exitEClass = null; + + /** + * + * + * @generated + */ + private EClass finalStateEClass = null; + + /** + * + * + * @generated + */ + private EEnum entryTypeEEnum = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#eNS_URI + * @see #init() + * @generated + */ + private YakindummPackageImpl() { + super(eNS_URI, YakindummFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link YakindummPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static YakindummPackage init() { + if (isInited) return (YakindummPackage)EPackage.Registry.INSTANCE.getEPackage(YakindummPackage.eNS_URI); + + // Obtain or create and register package + Object registeredYakindummPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + YakindummPackageImpl theYakindummPackage = registeredYakindummPackage instanceof YakindummPackageImpl ? (YakindummPackageImpl)registeredYakindummPackage : new YakindummPackageImpl(); + + isInited = true; + + // Create package meta-data objects + theYakindummPackage.createPackageContents(); + + // Initialize created meta-data + theYakindummPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theYakindummPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(YakindummPackage.eNS_URI, theYakindummPackage); + return theYakindummPackage; + } + + /** + * + * + * @generated + */ + public EClass getPseudostate() { + return pseudostateEClass; + } + + /** + * + * + * @generated + */ + public EClass getVertex() { + return vertexEClass; + } + + /** + * + * + * @generated + */ + public EReference getVertex_IncomingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVertex_OutgoingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getRegion() { + return regionEClass; + } + + /** + * + * + * @generated + */ + public EReference getRegion_Vertices() { + return (EReference)regionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * + * + * @generated + */ + public EReference getTransition_Target() { + return (EReference)transitionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getTransition_Source() { + return (EReference)transitionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getStatechart() { + return statechartEClass; + } + + /** + * + * + * @generated + */ + public EClass getEntry() { + return entryEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getEntry_Type() { + return (EAttribute)entryEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getState() { + return stateEClass; + } + + /** + * + * + * @generated + */ + public EClass getRegularState() { + return regularStateEClass; + } + + /** + * + * + * @generated + */ + public EClass getCompositeElement() { + return compositeElementEClass; + } + + /** + * + * + * @generated + */ + public EReference getCompositeElement_Regions() { + return (EReference)compositeElementEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getChoice() { + return choiceEClass; + } + + /** + * + * + * @generated + */ + public EClass getExit() { + return exitEClass; + } + + /** + * + * + * @generated + */ + public EClass getFinalState() { + return finalStateEClass; + } + + /** + * + * + * @generated + */ + public EEnum getEntryType() { + return entryTypeEEnum; + } + + /** + * + * + * @generated + */ + public YakindummFactory getYakindummFactory() { + return (YakindummFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + pseudostateEClass = createEClass(PSEUDOSTATE); + + vertexEClass = createEClass(VERTEX); + createEReference(vertexEClass, VERTEX__INCOMING_TRANSITIONS); + createEReference(vertexEClass, VERTEX__OUTGOING_TRANSITIONS); + + regionEClass = createEClass(REGION); + createEReference(regionEClass, REGION__VERTICES); + + transitionEClass = createEClass(TRANSITION); + createEReference(transitionEClass, TRANSITION__TARGET); + createEReference(transitionEClass, TRANSITION__SOURCE); + + statechartEClass = createEClass(STATECHART); + + entryEClass = createEClass(ENTRY); + createEAttribute(entryEClass, ENTRY__TYPE); + + stateEClass = createEClass(STATE); + + regularStateEClass = createEClass(REGULAR_STATE); + + compositeElementEClass = createEClass(COMPOSITE_ELEMENT); + createEReference(compositeElementEClass, COMPOSITE_ELEMENT__REGIONS); + + choiceEClass = createEClass(CHOICE); + + exitEClass = createEClass(EXIT); + + finalStateEClass = createEClass(FINAL_STATE); + + // Create enums + entryTypeEEnum = createEEnum(ENTRY_TYPE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + pseudostateEClass.getESuperTypes().add(this.getVertex()); + statechartEClass.getESuperTypes().add(this.getCompositeElement()); + entryEClass.getESuperTypes().add(this.getPseudostate()); + stateEClass.getESuperTypes().add(this.getRegularState()); + stateEClass.getESuperTypes().add(this.getCompositeElement()); + regularStateEClass.getESuperTypes().add(this.getVertex()); + choiceEClass.getESuperTypes().add(this.getPseudostate()); + exitEClass.getESuperTypes().add(this.getPseudostate()); + finalStateEClass.getESuperTypes().add(this.getRegularState()); + + // Initialize classes, features, and operations; add parameters + initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getRegion_Vertices(), this.getVertex(), null, "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getEntry_Type(), this.getEntryType(), "Type", null, 1, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(regularStateEClass, RegularState.class, "RegularState", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getCompositeElement_Regions(), this.getRegion(), null, "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Initialize enums and add enum literals + initEEnum(entryTypeEEnum, EntryType.class, "EntryType"); + addEEnumLiteral(entryTypeEEnum, EntryType.NORMAL); + addEEnumLiteral(entryTypeEEnum, EntryType.HISTORY); + addEEnumLiteral(entryTypeEEnum, EntryType.DEEP_HISTORY); + + // Create resource + createResource(eNS_URI); + } + +} //YakindummPackageImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduFactory; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class YakinduPackageImpl extends EPackageImpl implements YakinduPackage { + /** + * + * + * @generated + */ + private EClass pseudostateEClass = null; + + /** + * + * + * @generated + */ + private EClass vertexEClass = null; + + /** + * + * + * @generated + */ + private EClass regionEClass = null; + + /** + * + * + * @generated + */ + private EClass transitionEClass = null; + + /** + * + * + * @generated + */ + private EClass statechartEClass = null; + + /** + * + * + * @generated + */ + private EClass entryEClass = null; + + /** + * + * + * @generated + */ + private EClass synchronizationEClass = null; + + /** + * + * + * @generated + */ + private EClass stateEClass = null; + + /** + * + * + * @generated + */ + private EClass regularStateEClass = null; + + /** + * + * + * @generated + */ + private EClass compositeElementEClass = null; + + /** + * + * + * @generated + */ + private EClass choiceEClass = null; + + /** + * + * + * @generated + */ + private EClass exitEClass = null; + + /** + * + * + * @generated + */ + private EClass finalStateEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#eNS_URI + * @see #init() + * @generated + */ + private YakinduPackageImpl() { + super(eNS_URI, YakinduFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link YakinduPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static YakinduPackage init() { + if (isInited) return (YakinduPackage)EPackage.Registry.INSTANCE.getEPackage(YakinduPackage.eNS_URI); + + // Obtain or create and register package + Object registeredYakinduPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + YakinduPackageImpl theYakinduPackage = registeredYakinduPackage instanceof YakinduPackageImpl ? (YakinduPackageImpl)registeredYakinduPackage : new YakinduPackageImpl(); + + isInited = true; + + // Create package meta-data objects + theYakinduPackage.createPackageContents(); + + // Initialize created meta-data + theYakinduPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theYakinduPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(YakinduPackage.eNS_URI, theYakinduPackage); + return theYakinduPackage; + } + + /** + * + * + * @generated + */ + public EClass getPseudostate() { + return pseudostateEClass; + } + + /** + * + * + * @generated + */ + public EClass getVertex() { + return vertexEClass; + } + + /** + * + * + * @generated + */ + public EReference getVertex_IncomingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVertex_OutgoingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getRegion() { + return regionEClass; + } + + /** + * + * + * @generated + */ + public EReference getRegion_Vertices() { + return (EReference)regionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * + * + * @generated + */ + public EReference getTransition_Target() { + return (EReference)transitionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getTransition_Source() { + return (EReference)transitionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getStatechart() { + return statechartEClass; + } + + /** + * + * + * @generated + */ + public EClass getEntry() { + return entryEClass; + } + + /** + * + * + * @generated + */ + public EClass getSynchronization() { + return synchronizationEClass; + } + + /** + * + * + * @generated + */ + public EClass getState() { + return stateEClass; + } + + /** + * + * + * @generated + */ + public EClass getRegularState() { + return regularStateEClass; + } + + /** + * + * + * @generated + */ + public EClass getCompositeElement() { + return compositeElementEClass; + } + + /** + * + * + * @generated + */ + public EReference getCompositeElement_Regions() { + return (EReference)compositeElementEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getChoice() { + return choiceEClass; + } + + /** + * + * + * @generated + */ + public EClass getExit() { + return exitEClass; + } + + /** + * + * + * @generated + */ + public EClass getFinalState() { + return finalStateEClass; + } + + /** + * + * + * @generated + */ + public YakinduFactory getYakinduFactory() { + return (YakinduFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + pseudostateEClass = createEClass(PSEUDOSTATE); + + vertexEClass = createEClass(VERTEX); + createEReference(vertexEClass, VERTEX__INCOMING_TRANSITIONS); + createEReference(vertexEClass, VERTEX__OUTGOING_TRANSITIONS); + + regionEClass = createEClass(REGION); + createEReference(regionEClass, REGION__VERTICES); + + transitionEClass = createEClass(TRANSITION); + createEReference(transitionEClass, TRANSITION__TARGET); + createEReference(transitionEClass, TRANSITION__SOURCE); + + statechartEClass = createEClass(STATECHART); + + entryEClass = createEClass(ENTRY); + + synchronizationEClass = createEClass(SYNCHRONIZATION); + + stateEClass = createEClass(STATE); + + regularStateEClass = createEClass(REGULAR_STATE); + + compositeElementEClass = createEClass(COMPOSITE_ELEMENT); + createEReference(compositeElementEClass, COMPOSITE_ELEMENT__REGIONS); + + choiceEClass = createEClass(CHOICE); + + exitEClass = createEClass(EXIT); + + finalStateEClass = createEClass(FINAL_STATE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + pseudostateEClass.getESuperTypes().add(this.getVertex()); + statechartEClass.getESuperTypes().add(this.getCompositeElement()); + entryEClass.getESuperTypes().add(this.getPseudostate()); + synchronizationEClass.getESuperTypes().add(this.getPseudostate()); + stateEClass.getESuperTypes().add(this.getRegularState()); + stateEClass.getESuperTypes().add(this.getCompositeElement()); + regularStateEClass.getESuperTypes().add(this.getVertex()); + choiceEClass.getESuperTypes().add(this.getPseudostate()); + exitEClass.getESuperTypes().add(this.getPseudostate()); + finalStateEClass.getESuperTypes().add(this.getRegularState()); + + // Initialize classes, features, and operations; add parameters + initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getRegion_Vertices(), this.getVertex(), null, "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(regularStateEClass, RegularState.class, "RegularState", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getCompositeElement_Regions(), this.getRegion(), null, "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + } + +} //YakinduPackageImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduPackageImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummFactoryImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummFactoryImpl.java new file mode 100644 index 000000000..1aa8b67a5 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummFactoryImpl.java @@ -0,0 +1,409 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummFactoryImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class YakindummFactoryImpl extends EFactoryImpl implements YakindummFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static YakindummFactory init() { + try { + YakindummFactory theYakindummFactory = (YakindummFactory)EPackage.Registry.INSTANCE.getEFactory(YakindummPackage.eNS_URI); + if (theYakindummFactory != null) { + return theYakindummFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new YakindummFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public YakindummFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case YakindummPackage.REGION: return createRegion(); + case YakindummPackage.TRANSITION: return createTransition(); + case YakindummPackage.STATECHART: return createStatechart(); + case YakindummPackage.ENTRY: return createEntry(); + case YakindummPackage.STATE: return createState(); + case YakindummPackage.CHOICE: return createChoice(); + case YakindummPackage.EXIT: return createExit(); + case YakindummPackage.FINAL_STATE: return createFinalState(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public Object createFromString(EDataType eDataType, String initialValue) { + switch (eDataType.getClassifierID()) { + case YakindummPackage.ENTRY_TYPE: + return createEntryTypeFromString(eDataType, initialValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + @Override + public String convertToString(EDataType eDataType, Object instanceValue) { + switch (eDataType.getClassifierID()) { + case YakindummPackage.ENTRY_TYPE: + return convertEntryTypeToString(eDataType, instanceValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Region createRegion() { + RegionImpl region = new RegionImpl(); + return region; + } + + /** + * + * + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * + * + * @generated + */ + public Statechart createStatechart() { + StatechartImpl statechart = new StatechartImpl(); + return statechart; + } + + /** + * + * + * @generated + */ + public Entry createEntry() { + EntryImpl entry = new EntryImpl(); + return entry; + } + + /** + * + * + * @generated + */ + public State createState() { + StateImpl state = new StateImpl(); + return state; + } + + /** + * + * + * @generated + */ + public Choice createChoice() { + ChoiceImpl choice = new ChoiceImpl(); + return choice; + } + + /** + * + * + * @generated + */ + public Exit createExit() { + ExitImpl exit = new ExitImpl(); + return exit; + } + + /** + * + * + * @generated + */ + public FinalState createFinalState() { + FinalStateImpl finalState = new FinalStateImpl(); + return finalState; + } + + /** + * + * + * @generated + */ + public EntryType createEntryTypeFromString(EDataType eDataType, String initialValue) { + EntryType result = EntryType.get(initialValue); + if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); + return result; + } + + /** + * + * + * @generated + */ + public String convertEntryTypeToString(EDataType eDataType, Object instanceValue) { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated + */ + public YakindummPackage getYakindummPackage() { + return (YakindummPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static YakindummPackage getPackage() { + return YakindummPackage.eINSTANCE; + } + +} //YakindummFactoryImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class YakinduFactoryImpl extends EFactoryImpl implements YakinduFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static YakinduFactory init() { + try { + YakinduFactory theYakinduFactory = (YakinduFactory)EPackage.Registry.INSTANCE.getEFactory(YakinduPackage.eNS_URI); + if (theYakinduFactory != null) { + return theYakinduFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new YakinduFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public YakinduFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case YakinduPackage.REGION: return createRegion(); + case YakinduPackage.TRANSITION: return createTransition(); + case YakinduPackage.STATECHART: return createStatechart(); + case YakinduPackage.ENTRY: return createEntry(); + case YakinduPackage.SYNCHRONIZATION: return createSynchronization(); + case YakinduPackage.STATE: return createState(); + case YakinduPackage.CHOICE: return createChoice(); + case YakinduPackage.EXIT: return createExit(); + case YakinduPackage.FINAL_STATE: return createFinalState(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Region createRegion() { + RegionImpl region = new RegionImpl(); + return region; + } + + /** + * + * + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * + * + * @generated + */ + public Statechart createStatechart() { + StatechartImpl statechart = new StatechartImpl(); + return statechart; + } + + /** + * + * + * @generated + */ + public Entry createEntry() { + EntryImpl entry = new EntryImpl(); + return entry; + } + + /** + * + * + * @generated + */ + public Synchronization createSynchronization() { + SynchronizationImpl synchronization = new SynchronizationImpl(); + return synchronization; + } + + /** + * + * + * @generated + */ + public State createState() { + StateImpl state = new StateImpl(); + return state; + } + + /** + * + * + * @generated + */ + public Choice createChoice() { + ChoiceImpl choice = new ChoiceImpl(); + return choice; + } + + /** + * + * + * @generated + */ + public Exit createExit() { + ExitImpl exit = new ExitImpl(); + return exit; + } + + /** + * + * + * @generated + */ + public FinalState createFinalState() { + FinalStateImpl finalState = new FinalStateImpl(); + return finalState; + } + + /** + * + * + * @generated + */ + public YakinduPackage getYakinduPackage() { + return (YakinduPackage)getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static YakinduPackage getPackage() { + return YakinduPackage.eINSTANCE; + } + +} //YakinduFactoryImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduFactoryImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummPackageImpl.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummPackageImpl.java new file mode 100644 index 000000000..87ae07f43 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummPackageImpl.java @@ -0,0 +1,1008 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakindummPackageImpl.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.impl; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.EntryType; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummFactory; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class YakindummPackageImpl extends EPackageImpl implements YakindummPackage { + /** + * + * + * @generated + */ + private EClass pseudostateEClass = null; + + /** + * + * + * @generated + */ + private EClass vertexEClass = null; + + /** + * + * + * @generated + */ + private EClass regionEClass = null; + + /** + * + * + * @generated + */ + private EClass transitionEClass = null; + + /** + * + * + * @generated + */ + private EClass statechartEClass = null; + + /** + * + * + * @generated + */ + private EClass entryEClass = null; + + /** + * + * + * @generated + */ + private EClass stateEClass = null; + + /** + * + * + * @generated + */ + private EClass regularStateEClass = null; + + /** + * + * + * @generated + */ + private EClass compositeElementEClass = null; + + /** + * + * + * @generated + */ + private EClass choiceEClass = null; + + /** + * + * + * @generated + */ + private EClass exitEClass = null; + + /** + * + * + * @generated + */ + private EClass finalStateEClass = null; + + /** + * + * + * @generated + */ + private EEnum entryTypeEEnum = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage#eNS_URI + * @see #init() + * @generated + */ + private YakindummPackageImpl() { + super(eNS_URI, YakindummFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link YakindummPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static YakindummPackage init() { + if (isInited) return (YakindummPackage)EPackage.Registry.INSTANCE.getEPackage(YakindummPackage.eNS_URI); + + // Obtain or create and register package + Object registeredYakindummPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + YakindummPackageImpl theYakindummPackage = registeredYakindummPackage instanceof YakindummPackageImpl ? (YakindummPackageImpl)registeredYakindummPackage : new YakindummPackageImpl(); + + isInited = true; + + // Create package meta-data objects + theYakindummPackage.createPackageContents(); + + // Initialize created meta-data + theYakindummPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theYakindummPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(YakindummPackage.eNS_URI, theYakindummPackage); + return theYakindummPackage; + } + + /** + * + * + * @generated + */ + public EClass getPseudostate() { + return pseudostateEClass; + } + + /** + * + * + * @generated + */ + public EClass getVertex() { + return vertexEClass; + } + + /** + * + * + * @generated + */ + public EReference getVertex_IncomingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVertex_OutgoingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getRegion() { + return regionEClass; + } + + /** + * + * + * @generated + */ + public EReference getRegion_Vertices() { + return (EReference)regionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * + * + * @generated + */ + public EReference getTransition_Target() { + return (EReference)transitionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getTransition_Source() { + return (EReference)transitionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getStatechart() { + return statechartEClass; + } + + /** + * + * + * @generated + */ + public EClass getEntry() { + return entryEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getEntry_Type() { + return (EAttribute)entryEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getState() { + return stateEClass; + } + + /** + * + * + * @generated + */ + public EClass getRegularState() { + return regularStateEClass; + } + + /** + * + * + * @generated + */ + public EClass getCompositeElement() { + return compositeElementEClass; + } + + /** + * + * + * @generated + */ + public EReference getCompositeElement_Regions() { + return (EReference)compositeElementEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getChoice() { + return choiceEClass; + } + + /** + * + * + * @generated + */ + public EClass getExit() { + return exitEClass; + } + + /** + * + * + * @generated + */ + public EClass getFinalState() { + return finalStateEClass; + } + + /** + * + * + * @generated + */ + public EEnum getEntryType() { + return entryTypeEEnum; + } + + /** + * + * + * @generated + */ + public YakindummFactory getYakindummFactory() { + return (YakindummFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + pseudostateEClass = createEClass(PSEUDOSTATE); + + vertexEClass = createEClass(VERTEX); + createEReference(vertexEClass, VERTEX__INCOMING_TRANSITIONS); + createEReference(vertexEClass, VERTEX__OUTGOING_TRANSITIONS); + + regionEClass = createEClass(REGION); + createEReference(regionEClass, REGION__VERTICES); + + transitionEClass = createEClass(TRANSITION); + createEReference(transitionEClass, TRANSITION__TARGET); + createEReference(transitionEClass, TRANSITION__SOURCE); + + statechartEClass = createEClass(STATECHART); + + entryEClass = createEClass(ENTRY); + createEAttribute(entryEClass, ENTRY__TYPE); + + stateEClass = createEClass(STATE); + + regularStateEClass = createEClass(REGULAR_STATE); + + compositeElementEClass = createEClass(COMPOSITE_ELEMENT); + createEReference(compositeElementEClass, COMPOSITE_ELEMENT__REGIONS); + + choiceEClass = createEClass(CHOICE); + + exitEClass = createEClass(EXIT); + + finalStateEClass = createEClass(FINAL_STATE); + + // Create enums + entryTypeEEnum = createEEnum(ENTRY_TYPE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + pseudostateEClass.getESuperTypes().add(this.getVertex()); + statechartEClass.getESuperTypes().add(this.getCompositeElement()); + entryEClass.getESuperTypes().add(this.getPseudostate()); + stateEClass.getESuperTypes().add(this.getRegularState()); + stateEClass.getESuperTypes().add(this.getCompositeElement()); + regularStateEClass.getESuperTypes().add(this.getVertex()); + choiceEClass.getESuperTypes().add(this.getPseudostate()); + exitEClass.getESuperTypes().add(this.getPseudostate()); + finalStateEClass.getESuperTypes().add(this.getRegularState()); + + // Initialize classes, features, and operations; add parameters + initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getRegion_Vertices(), this.getVertex(), null, "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getEntry_Type(), this.getEntryType(), "Type", null, 1, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(regularStateEClass, RegularState.class, "RegularState", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getCompositeElement_Regions(), this.getRegion(), null, "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Initialize enums and add enum literals + initEEnum(entryTypeEEnum, EntryType.class, "EntryType"); + addEEnumLiteral(entryTypeEEnum, EntryType.NORMAL); + addEEnumLiteral(entryTypeEEnum, EntryType.HISTORY); + addEEnumLiteral(entryTypeEEnum, EntryType.DEEP_HISTORY); + + // Create resource + createResource(eNS_URI); + } + +} //YakindummPackageImpl +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.impl; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduFactory; +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class YakinduPackageImpl extends EPackageImpl implements YakinduPackage { + /** + * + * + * @generated + */ + private EClass pseudostateEClass = null; + + /** + * + * + * @generated + */ + private EClass vertexEClass = null; + + /** + * + * + * @generated + */ + private EClass regionEClass = null; + + /** + * + * + * @generated + */ + private EClass transitionEClass = null; + + /** + * + * + * @generated + */ + private EClass statechartEClass = null; + + /** + * + * + * @generated + */ + private EClass entryEClass = null; + + /** + * + * + * @generated + */ + private EClass synchronizationEClass = null; + + /** + * + * + * @generated + */ + private EClass stateEClass = null; + + /** + * + * + * @generated + */ + private EClass regularStateEClass = null; + + /** + * + * + * @generated + */ + private EClass compositeElementEClass = null; + + /** + * + * + * @generated + */ + private EClass choiceEClass = null; + + /** + * + * + * @generated + */ + private EClass exitEClass = null; + + /** + * + * + * @generated + */ + private EClass finalStateEClass = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * + * + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage#eNS_URI + * @see #init() + * @generated + */ + private YakinduPackageImpl() { + super(eNS_URI, YakinduFactory.eINSTANCE); + } + + /** + * + * + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the Package for this model, and for any others upon which it depends. + * + *

This method is used to initialize {@link YakinduPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static YakinduPackage init() { + if (isInited) return (YakinduPackage)EPackage.Registry.INSTANCE.getEPackage(YakinduPackage.eNS_URI); + + // Obtain or create and register package + Object registeredYakinduPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + YakinduPackageImpl theYakinduPackage = registeredYakinduPackage instanceof YakinduPackageImpl ? (YakinduPackageImpl)registeredYakinduPackage : new YakinduPackageImpl(); + + isInited = true; + + // Create package meta-data objects + theYakinduPackage.createPackageContents(); + + // Initialize created meta-data + theYakinduPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theYakinduPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(YakinduPackage.eNS_URI, theYakinduPackage); + return theYakinduPackage; + } + + /** + * + * + * @generated + */ + public EClass getPseudostate() { + return pseudostateEClass; + } + + /** + * + * + * @generated + */ + public EClass getVertex() { + return vertexEClass; + } + + /** + * + * + * @generated + */ + public EReference getVertex_IncomingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getVertex_OutgoingTransitions() { + return (EReference)vertexEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getRegion() { + return regionEClass; + } + + /** + * + * + * @generated + */ + public EReference getRegion_Vertices() { + return (EReference)regionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * + * + * @generated + */ + public EReference getTransition_Target() { + return (EReference)transitionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getTransition_Source() { + return (EReference)transitionEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EClass getStatechart() { + return statechartEClass; + } + + /** + * + * + * @generated + */ + public EClass getEntry() { + return entryEClass; + } + + /** + * + * + * @generated + */ + public EClass getSynchronization() { + return synchronizationEClass; + } + + /** + * + * + * @generated + */ + public EClass getState() { + return stateEClass; + } + + /** + * + * + * @generated + */ + public EClass getRegularState() { + return regularStateEClass; + } + + /** + * + * + * @generated + */ + public EClass getCompositeElement() { + return compositeElementEClass; + } + + /** + * + * + * @generated + */ + public EReference getCompositeElement_Regions() { + return (EReference)compositeElementEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getChoice() { + return choiceEClass; + } + + /** + * + * + * @generated + */ + public EClass getExit() { + return exitEClass; + } + + /** + * + * + * @generated + */ + public EClass getFinalState() { + return finalStateEClass; + } + + /** + * + * + * @generated + */ + public YakinduFactory getYakinduFactory() { + return (YakinduFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + pseudostateEClass = createEClass(PSEUDOSTATE); + + vertexEClass = createEClass(VERTEX); + createEReference(vertexEClass, VERTEX__INCOMING_TRANSITIONS); + createEReference(vertexEClass, VERTEX__OUTGOING_TRANSITIONS); + + regionEClass = createEClass(REGION); + createEReference(regionEClass, REGION__VERTICES); + + transitionEClass = createEClass(TRANSITION); + createEReference(transitionEClass, TRANSITION__TARGET); + createEReference(transitionEClass, TRANSITION__SOURCE); + + statechartEClass = createEClass(STATECHART); + + entryEClass = createEClass(ENTRY); + + synchronizationEClass = createEClass(SYNCHRONIZATION); + + stateEClass = createEClass(STATE); + + regularStateEClass = createEClass(REGULAR_STATE); + + compositeElementEClass = createEClass(COMPOSITE_ELEMENT); + createEReference(compositeElementEClass, COMPOSITE_ELEMENT__REGIONS); + + choiceEClass = createEClass(CHOICE); + + exitEClass = createEClass(EXIT); + + finalStateEClass = createEClass(FINAL_STATE); + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + pseudostateEClass.getESuperTypes().add(this.getVertex()); + statechartEClass.getESuperTypes().add(this.getCompositeElement()); + entryEClass.getESuperTypes().add(this.getPseudostate()); + synchronizationEClass.getESuperTypes().add(this.getPseudostate()); + stateEClass.getESuperTypes().add(this.getRegularState()); + stateEClass.getESuperTypes().add(this.getCompositeElement()); + regularStateEClass.getESuperTypes().add(this.getVertex()); + choiceEClass.getESuperTypes().add(this.getPseudostate()); + exitEClass.getESuperTypes().add(this.getPseudostate()); + finalStateEClass.getESuperTypes().add(this.getRegularState()); + + // Initialize classes, features, and operations; add parameters + initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getRegion_Vertices(), this.getVertex(), null, "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); + + initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(regularStateEClass, RegularState.class, "RegularState", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getCompositeElement_Regions(), this.getRegion(), null, "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(choiceEClass, Choice.class, "Choice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + } + +} //YakinduPackageImpl +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/impl/YakinduPackageImpl.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduAdapterFactory.java new file mode 100644 index 000000000..fb33ef429 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduAdapterFactory.java @@ -0,0 +1,657 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummAdapterFactory.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.util; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage + * @generated + */ +public class YakindummAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static YakindummPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public YakindummAdapterFactory() { + if (modelPackage == null) { + modelPackage = YakindummPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected YakindummSwitch modelSwitch = + new YakindummSwitch() { + @Override + public Adapter casePseudostate(Pseudostate object) { + return createPseudostateAdapter(); + } + @Override + public Adapter caseVertex(Vertex object) { + return createVertexAdapter(); + } + @Override + public Adapter caseRegion(Region object) { + return createRegionAdapter(); + } + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + @Override + public Adapter caseStatechart(Statechart object) { + return createStatechartAdapter(); + } + @Override + public Adapter caseEntry(Entry object) { + return createEntryAdapter(); + } + @Override + public Adapter caseState(State object) { + return createStateAdapter(); + } + @Override + public Adapter caseRegularState(RegularState object) { + return createRegularStateAdapter(); + } + @Override + public Adapter caseCompositeElement(CompositeElement object) { + return createCompositeElementAdapter(); + } + @Override + public Adapter caseChoice(Choice object) { + return createChoiceAdapter(); + } + @Override + public Adapter caseExit(Exit object) { + return createExitAdapter(); + } + @Override + public Adapter caseFinalState(FinalState object) { + return createFinalStateAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate Pseudostate}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate + * @generated + */ + public Adapter createPseudostateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex Vertex}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex + * @generated + */ + public Adapter createVertexAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region Region}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region + * @generated + */ + public Adapter createRegionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition Transition}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart Statechart}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart + * @generated + */ + public Adapter createStatechartAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry Entry}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry + * @generated + */ + public Adapter createEntryAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State + * @generated + */ + public Adapter createStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState Regular State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState + * @generated + */ + public Adapter createRegularStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement Composite Element}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement + * @generated + */ + public Adapter createCompositeElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice Choice}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice + * @generated + */ + public Adapter createChoiceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit Exit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit + * @generated + */ + public Adapter createExitAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState Final State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState + * @generated + */ + public Adapter createFinalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //YakindummAdapterFactory +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public class YakinduAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static YakinduPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public YakinduAdapterFactory() { + if (modelPackage == null) { + modelPackage = YakinduPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected YakinduSwitch modelSwitch = + new YakinduSwitch() { + @Override + public Adapter casePseudostate(Pseudostate object) { + return createPseudostateAdapter(); + } + @Override + public Adapter caseVertex(Vertex object) { + return createVertexAdapter(); + } + @Override + public Adapter caseRegion(Region object) { + return createRegionAdapter(); + } + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + @Override + public Adapter caseStatechart(Statechart object) { + return createStatechartAdapter(); + } + @Override + public Adapter caseEntry(Entry object) { + return createEntryAdapter(); + } + @Override + public Adapter caseSynchronization(Synchronization object) { + return createSynchronizationAdapter(); + } + @Override + public Adapter caseState(State object) { + return createStateAdapter(); + } + @Override + public Adapter caseRegularState(RegularState object) { + return createRegularStateAdapter(); + } + @Override + public Adapter caseCompositeElement(CompositeElement object) { + return createCompositeElementAdapter(); + } + @Override + public Adapter caseChoice(Choice object) { + return createChoiceAdapter(); + } + @Override + public Adapter caseExit(Exit object) { + return createExitAdapter(); + } + @Override + public Adapter caseFinalState(FinalState object) { + return createFinalStateAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate Pseudostate}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate + * @generated + */ + public Adapter createPseudostateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex Vertex}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex + * @generated + */ + public Adapter createVertexAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region Region}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region + * @generated + */ + public Adapter createRegionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition Transition}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart Statechart}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart + * @generated + */ + public Adapter createStatechartAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry Entry}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry + * @generated + */ + public Adapter createEntryAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization Synchronization}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization + * @generated + */ + public Adapter createSynchronizationAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State + * @generated + */ + public Adapter createStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState Regular State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState + * @generated + */ + public Adapter createRegularStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement Composite Element}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement + * @generated + */ + public Adapter createCompositeElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice Choice}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice + * @generated + */ + public Adapter createChoiceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit Exit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit + * @generated + */ + public Adapter createExitAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState Final State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState + * @generated + */ + public Adapter createFinalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //YakinduAdapterFactory +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduAdapterFactory.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduSwitch.java new file mode 100644 index 000000000..4cc0e8a88 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduSwitch.java @@ -0,0 +1,736 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummSwitch.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.util; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage + * @generated + */ +public class YakindummSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static YakindummPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public YakindummSwitch() { + if (modelPackage == null) { + modelPackage = YakindummPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case YakindummPackage.PSEUDOSTATE: { + Pseudostate pseudostate = (Pseudostate)theEObject; + T result = casePseudostate(pseudostate); + if (result == null) result = caseVertex(pseudostate); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.VERTEX: { + Vertex vertex = (Vertex)theEObject; + T result = caseVertex(vertex); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.REGION: { + Region region = (Region)theEObject; + T result = caseRegion(region); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.TRANSITION: { + Transition transition = (Transition)theEObject; + T result = caseTransition(transition); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.STATECHART: { + Statechart statechart = (Statechart)theEObject; + T result = caseStatechart(statechart); + if (result == null) result = caseCompositeElement(statechart); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.ENTRY: { + Entry entry = (Entry)theEObject; + T result = caseEntry(entry); + if (result == null) result = casePseudostate(entry); + if (result == null) result = caseVertex(entry); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.STATE: { + State state = (State)theEObject; + T result = caseState(state); + if (result == null) result = caseRegularState(state); + if (result == null) result = caseCompositeElement(state); + if (result == null) result = caseVertex(state); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.REGULAR_STATE: { + RegularState regularState = (RegularState)theEObject; + T result = caseRegularState(regularState); + if (result == null) result = caseVertex(regularState); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.COMPOSITE_ELEMENT: { + CompositeElement compositeElement = (CompositeElement)theEObject; + T result = caseCompositeElement(compositeElement); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.CHOICE: { + Choice choice = (Choice)theEObject; + T result = caseChoice(choice); + if (result == null) result = casePseudostate(choice); + if (result == null) result = caseVertex(choice); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.EXIT: { + Exit exit = (Exit)theEObject; + T result = caseExit(exit); + if (result == null) result = casePseudostate(exit); + if (result == null) result = caseVertex(exit); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.FINAL_STATE: { + FinalState finalState = (FinalState)theEObject; + T result = caseFinalState(finalState); + if (result == null) result = caseRegularState(finalState); + if (result == null) result = caseVertex(finalState); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Pseudostate'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Pseudostate'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePseudostate(Pseudostate object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Vertex'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Vertex'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVertex(Vertex object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Region'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Region'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegion(Region object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Transition'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Transition'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Statechart'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Statechart'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStatechart(Statechart object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Entry'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Entry'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEntry(Entry object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseState(State object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Regular State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Regular State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegularState(RegularState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Composite Element'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Composite Element'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseCompositeElement(CompositeElement object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Choice'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Choice'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseChoice(Choice object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Exit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Exit'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseExit(Exit object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Final State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Final State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFinalState(FinalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //YakindummSwitch +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public class YakinduSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static YakinduPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public YakinduSwitch() { + if (modelPackage == null) { + modelPackage = YakinduPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case YakinduPackage.PSEUDOSTATE: { + Pseudostate pseudostate = (Pseudostate)theEObject; + T result = casePseudostate(pseudostate); + if (result == null) result = caseVertex(pseudostate); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.VERTEX: { + Vertex vertex = (Vertex)theEObject; + T result = caseVertex(vertex); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.REGION: { + Region region = (Region)theEObject; + T result = caseRegion(region); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.TRANSITION: { + Transition transition = (Transition)theEObject; + T result = caseTransition(transition); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.STATECHART: { + Statechart statechart = (Statechart)theEObject; + T result = caseStatechart(statechart); + if (result == null) result = caseCompositeElement(statechart); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.ENTRY: { + Entry entry = (Entry)theEObject; + T result = caseEntry(entry); + if (result == null) result = casePseudostate(entry); + if (result == null) result = caseVertex(entry); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.SYNCHRONIZATION: { + Synchronization synchronization = (Synchronization)theEObject; + T result = caseSynchronization(synchronization); + if (result == null) result = casePseudostate(synchronization); + if (result == null) result = caseVertex(synchronization); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.STATE: { + State state = (State)theEObject; + T result = caseState(state); + if (result == null) result = caseRegularState(state); + if (result == null) result = caseCompositeElement(state); + if (result == null) result = caseVertex(state); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.REGULAR_STATE: { + RegularState regularState = (RegularState)theEObject; + T result = caseRegularState(regularState); + if (result == null) result = caseVertex(regularState); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.COMPOSITE_ELEMENT: { + CompositeElement compositeElement = (CompositeElement)theEObject; + T result = caseCompositeElement(compositeElement); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.CHOICE: { + Choice choice = (Choice)theEObject; + T result = caseChoice(choice); + if (result == null) result = casePseudostate(choice); + if (result == null) result = caseVertex(choice); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.EXIT: { + Exit exit = (Exit)theEObject; + T result = caseExit(exit); + if (result == null) result = casePseudostate(exit); + if (result == null) result = caseVertex(exit); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.FINAL_STATE: { + FinalState finalState = (FinalState)theEObject; + T result = caseFinalState(finalState); + if (result == null) result = caseRegularState(finalState); + if (result == null) result = caseVertex(finalState); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Pseudostate'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Pseudostate'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePseudostate(Pseudostate object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Vertex'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Vertex'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVertex(Vertex object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Region'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Region'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegion(Region object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Transition'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Transition'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Statechart'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Statechart'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStatechart(Statechart object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Entry'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Entry'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEntry(Entry object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Synchronization'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Synchronization'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseSynchronization(Synchronization object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseState(State object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Regular State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Regular State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegularState(RegularState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Composite Element'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Composite Element'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseCompositeElement(CompositeElement object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Choice'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Choice'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseChoice(Choice object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Exit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Exit'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseExit(Exit object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Final State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Final State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFinalState(FinalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //YakinduSwitch +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduSwitch.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummAdapterFactory.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummAdapterFactory.java new file mode 100644 index 000000000..fb33ef429 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummAdapterFactory.java @@ -0,0 +1,657 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummAdapterFactory.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.util; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage + * @generated + */ +public class YakindummAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static YakindummPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public YakindummAdapterFactory() { + if (modelPackage == null) { + modelPackage = YakindummPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected YakindummSwitch modelSwitch = + new YakindummSwitch() { + @Override + public Adapter casePseudostate(Pseudostate object) { + return createPseudostateAdapter(); + } + @Override + public Adapter caseVertex(Vertex object) { + return createVertexAdapter(); + } + @Override + public Adapter caseRegion(Region object) { + return createRegionAdapter(); + } + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + @Override + public Adapter caseStatechart(Statechart object) { + return createStatechartAdapter(); + } + @Override + public Adapter caseEntry(Entry object) { + return createEntryAdapter(); + } + @Override + public Adapter caseState(State object) { + return createStateAdapter(); + } + @Override + public Adapter caseRegularState(RegularState object) { + return createRegularStateAdapter(); + } + @Override + public Adapter caseCompositeElement(CompositeElement object) { + return createCompositeElementAdapter(); + } + @Override + public Adapter caseChoice(Choice object) { + return createChoiceAdapter(); + } + @Override + public Adapter caseExit(Exit object) { + return createExitAdapter(); + } + @Override + public Adapter caseFinalState(FinalState object) { + return createFinalStateAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate Pseudostate}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Pseudostate + * @generated + */ + public Adapter createPseudostateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex Vertex}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Vertex + * @generated + */ + public Adapter createVertexAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region Region}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region + * @generated + */ + public Adapter createRegionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition Transition}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart Statechart}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Statechart + * @generated + */ + public Adapter createStatechartAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry Entry}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Entry + * @generated + */ + public Adapter createEntryAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.State + * @generated + */ + public Adapter createStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState Regular State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.RegularState + * @generated + */ + public Adapter createRegularStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement Composite Element}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement + * @generated + */ + public Adapter createCompositeElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice Choice}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Choice + * @generated + */ + public Adapter createChoiceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit Exit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Exit + * @generated + */ + public Adapter createExitAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState Final State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.FinalState + * @generated + */ + public Adapter createFinalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //YakindummAdapterFactory +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public class YakinduAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static YakinduPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public YakinduAdapterFactory() { + if (modelPackage == null) { + modelPackage = YakinduPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * + * This implementation returns true if the object is either the model's package or is an instance object of the model. + * + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the createXXX methods. + * + * + * @generated + */ + protected YakinduSwitch modelSwitch = + new YakinduSwitch() { + @Override + public Adapter casePseudostate(Pseudostate object) { + return createPseudostateAdapter(); + } + @Override + public Adapter caseVertex(Vertex object) { + return createVertexAdapter(); + } + @Override + public Adapter caseRegion(Region object) { + return createRegionAdapter(); + } + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + @Override + public Adapter caseStatechart(Statechart object) { + return createStatechartAdapter(); + } + @Override + public Adapter caseEntry(Entry object) { + return createEntryAdapter(); + } + @Override + public Adapter caseSynchronization(Synchronization object) { + return createSynchronizationAdapter(); + } + @Override + public Adapter caseState(State object) { + return createStateAdapter(); + } + @Override + public Adapter caseRegularState(RegularState object) { + return createRegularStateAdapter(); + } + @Override + public Adapter caseCompositeElement(CompositeElement object) { + return createCompositeElementAdapter(); + } + @Override + public Adapter caseChoice(Choice object) { + return createChoiceAdapter(); + } + @Override + public Adapter caseExit(Exit object) { + return createExitAdapter(); + } + @Override + public Adapter caseFinalState(FinalState object) { + return createFinalStateAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the target. + * + * + * @param target the object to adapt. + * @return the adapter for the target. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate Pseudostate}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Pseudostate + * @generated + */ + public Adapter createPseudostateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex Vertex}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Vertex + * @generated + */ + public Adapter createVertexAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region Region}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Region + * @generated + */ + public Adapter createRegionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition Transition}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart Statechart}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Statechart + * @generated + */ + public Adapter createStatechartAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry Entry}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Entry + * @generated + */ + public Adapter createEntryAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization Synchronization}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Synchronization + * @generated + */ + public Adapter createSynchronizationAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.State + * @generated + */ + public Adapter createStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState Regular State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.RegularState + * @generated + */ + public Adapter createRegularStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement Composite Element}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.CompositeElement + * @generated + */ + public Adapter createCompositeElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice Choice}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Choice + * @generated + */ + public Adapter createChoiceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit Exit}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.Exit + * @generated + */ + public Adapter createExitAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState Final State}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.FinalState + * @generated + */ + public Adapter createFinalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * + * This default implementation returns null. + * + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //YakinduAdapterFactory +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduAdapterFactory.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummSwitch.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummSwitch.java new file mode 100644 index 000000000..4cc0e8a88 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummSwitch.java @@ -0,0 +1,736 @@ +<<<<<<< HEAD:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakindummSwitch.java +/** + */ +package ca.mcgill.ecse.dslreasoner.vampire.yakindumm.util; + +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage + * @generated + */ +public class YakindummSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static YakindummPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public YakindummSwitch() { + if (modelPackage == null) { + modelPackage = YakindummPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case YakindummPackage.PSEUDOSTATE: { + Pseudostate pseudostate = (Pseudostate)theEObject; + T result = casePseudostate(pseudostate); + if (result == null) result = caseVertex(pseudostate); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.VERTEX: { + Vertex vertex = (Vertex)theEObject; + T result = caseVertex(vertex); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.REGION: { + Region region = (Region)theEObject; + T result = caseRegion(region); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.TRANSITION: { + Transition transition = (Transition)theEObject; + T result = caseTransition(transition); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.STATECHART: { + Statechart statechart = (Statechart)theEObject; + T result = caseStatechart(statechart); + if (result == null) result = caseCompositeElement(statechart); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.ENTRY: { + Entry entry = (Entry)theEObject; + T result = caseEntry(entry); + if (result == null) result = casePseudostate(entry); + if (result == null) result = caseVertex(entry); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.STATE: { + State state = (State)theEObject; + T result = caseState(state); + if (result == null) result = caseRegularState(state); + if (result == null) result = caseCompositeElement(state); + if (result == null) result = caseVertex(state); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.REGULAR_STATE: { + RegularState regularState = (RegularState)theEObject; + T result = caseRegularState(regularState); + if (result == null) result = caseVertex(regularState); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.COMPOSITE_ELEMENT: { + CompositeElement compositeElement = (CompositeElement)theEObject; + T result = caseCompositeElement(compositeElement); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.CHOICE: { + Choice choice = (Choice)theEObject; + T result = caseChoice(choice); + if (result == null) result = casePseudostate(choice); + if (result == null) result = caseVertex(choice); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.EXIT: { + Exit exit = (Exit)theEObject; + T result = caseExit(exit); + if (result == null) result = casePseudostate(exit); + if (result == null) result = caseVertex(exit); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakindummPackage.FINAL_STATE: { + FinalState finalState = (FinalState)theEObject; + T result = caseFinalState(finalState); + if (result == null) result = caseRegularState(finalState); + if (result == null) result = caseVertex(finalState); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Pseudostate'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Pseudostate'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePseudostate(Pseudostate object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Vertex'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Vertex'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVertex(Vertex object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Region'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Region'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegion(Region object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Transition'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Transition'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Statechart'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Statechart'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStatechart(Statechart object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Entry'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Entry'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEntry(Entry object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseState(State object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Regular State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Regular State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegularState(RegularState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Composite Element'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Composite Element'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseCompositeElement(CompositeElement object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Choice'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Choice'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseChoice(Choice object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Exit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Exit'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseExit(Exit object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Final State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Final State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFinalState(FinalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //YakindummSwitch +======= +/** + */ +package ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.util; + +import ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.*; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +/** + * + * The Switch for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the caseXXX method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * + * @see ca.mcgill.ecse.dslreasoner.standalone.test.yakindu.YakinduPackage + * @generated + */ +public class YakinduSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static YakinduPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public YakinduSwitch() { + if (modelPackage == null) { + modelPackage = YakinduPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * + * + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls caseXXX for each class of the model until one returns a non null result; it yields that result. + * + * + * @return the first non-null result returned by a caseXXX call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case YakinduPackage.PSEUDOSTATE: { + Pseudostate pseudostate = (Pseudostate)theEObject; + T result = casePseudostate(pseudostate); + if (result == null) result = caseVertex(pseudostate); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.VERTEX: { + Vertex vertex = (Vertex)theEObject; + T result = caseVertex(vertex); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.REGION: { + Region region = (Region)theEObject; + T result = caseRegion(region); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.TRANSITION: { + Transition transition = (Transition)theEObject; + T result = caseTransition(transition); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.STATECHART: { + Statechart statechart = (Statechart)theEObject; + T result = caseStatechart(statechart); + if (result == null) result = caseCompositeElement(statechart); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.ENTRY: { + Entry entry = (Entry)theEObject; + T result = caseEntry(entry); + if (result == null) result = casePseudostate(entry); + if (result == null) result = caseVertex(entry); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.SYNCHRONIZATION: { + Synchronization synchronization = (Synchronization)theEObject; + T result = caseSynchronization(synchronization); + if (result == null) result = casePseudostate(synchronization); + if (result == null) result = caseVertex(synchronization); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.STATE: { + State state = (State)theEObject; + T result = caseState(state); + if (result == null) result = caseRegularState(state); + if (result == null) result = caseCompositeElement(state); + if (result == null) result = caseVertex(state); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.REGULAR_STATE: { + RegularState regularState = (RegularState)theEObject; + T result = caseRegularState(regularState); + if (result == null) result = caseVertex(regularState); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.COMPOSITE_ELEMENT: { + CompositeElement compositeElement = (CompositeElement)theEObject; + T result = caseCompositeElement(compositeElement); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.CHOICE: { + Choice choice = (Choice)theEObject; + T result = caseChoice(choice); + if (result == null) result = casePseudostate(choice); + if (result == null) result = caseVertex(choice); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.EXIT: { + Exit exit = (Exit)theEObject; + T result = caseExit(exit); + if (result == null) result = casePseudostate(exit); + if (result == null) result = caseVertex(exit); + if (result == null) result = defaultCase(theEObject); + return result; + } + case YakinduPackage.FINAL_STATE: { + FinalState finalState = (FinalState)theEObject; + T result = caseFinalState(finalState); + if (result == null) result = caseRegularState(finalState); + if (result == null) result = caseVertex(finalState); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Pseudostate'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Pseudostate'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePseudostate(Pseudostate object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Vertex'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Vertex'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVertex(Vertex object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Region'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Region'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegion(Region object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Transition'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Transition'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Statechart'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Statechart'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStatechart(Statechart object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Entry'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Entry'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEntry(Entry object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Synchronization'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Synchronization'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseSynchronization(Synchronization object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseState(State object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Regular State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Regular State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRegularState(RegularState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Composite Element'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Composite Element'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseCompositeElement(CompositeElement object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Choice'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Choice'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseChoice(Choice object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Exit'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Exit'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseExit(Exit object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Final State'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Final State'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFinalState(FinalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'EObject'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'EObject'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //YakinduSwitch +>>>>>>> f1f2a1fa... Pre-realisticBranchCreation Commit:Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/yakindumm/util/YakinduSwitch.java diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/vampire.exe b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/vampire.exe new file mode 100644 index 000000000..51b44f82c Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/vampire.exe differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin new file mode 100644 index 000000000..cb9eee35f Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.EcoreTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin new file mode 100644 index 000000000..22765580e Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FAMTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin new file mode 100644 index 000000000..4870ad10a Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.FileSystemTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin new file mode 100644 index 000000000..424255f45 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.GeneralTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin new file mode 100644 index 000000000..aa2ddaf23 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.YakinduTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.gitignore new file mode 100644 index 000000000..1b426999e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/.gitignore @@ -0,0 +1,6 @@ +/.FAMTest.java._trace +/.YakinduTest.java._trace +/.EcoreTest.java._trace +/.fileSystemTest.java._trace +/.FileSystemTest.java._trace +/.GeneralTest.java._trace diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java new file mode 100644 index 000000000..7019f162f --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.java @@ -0,0 +1,68 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; +import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput; +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.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 org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class EcoreTest { + public static void main(final String[] args) { + try { + StringConcatenation _builder = new StringConcatenation(); + _builder.append("initialModels/"); + final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), ""); + StringConcatenation _builder_1 = new StringConcatenation(); + _builder_1.append("output/FEcoreTest/"); + final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), ""); + workspace.initAndClear(); + InputOutput.println("Input and output workspaces are created"); + final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE); + final EList partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi"); + final Object queries = null; + InputOutput.println("DSL loaded"); + final Ecore2Logic ecore2Logic = new Ecore2Logic(); + final Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic); + final Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic); + final InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic(); + Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); + final TracedOutput modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); + final TracedOutput modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel); + final LogicProblem logicProblem = modelGenerationProblem.getOutput(); + InputOutput.println("Problem created"); + LogicResult solution = null; + LogicReasoner reasoner = null; + VampireSolver _vampireSolver = new VampireSolver(); + reasoner = _vampireSolver; + VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); + final Procedure1 _function = (VampireSolverConfiguration it) -> { + it.documentationLevel = DocumentationLevel.FULL; + }; + final VampireSolverConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_vampireSolverConfiguration, _function); + solution = reasoner.solve(logicProblem, vampireConfig, workspace); + InputOutput.println("Problem solved"); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java new file mode 100644 index 000000000..cd9ba3c17 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FAMTest.java @@ -0,0 +1,106 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse; + +import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; +import functionalarchitecture.FAMTerminator; +import functionalarchitecture.Function; +import functionalarchitecture.FunctionalArchitectureModel; +import functionalarchitecture.FunctionalOutput; +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.Ecore2Logic_Trace; +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; +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.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.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation; +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class FAMTest { + public static void main(final String[] args) { + try { + final Ecore2Logic ecore2Logic = new Ecore2Logic(); + final Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic); + final Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic); + final InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic(); + final InstanceModel2PartialInterpretation im2pi = new InstanceModel2PartialInterpretation(); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("initialModels/"); + final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), ""); + StringConcatenation _builder_1 = new StringConcatenation(); + _builder_1.append("output/FAMTest/"); + final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), ""); + workspace.initAndClear(); + final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + final Map map = reg.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + map.put("logicproblem", _xMIResourceFactoryImpl); + InputOutput.println("Input and output workspaces are created"); + final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(FunctionalarchitecturePackage.eINSTANCE); + final Object queries = null; + InputOutput.println("DSL loaded"); + Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); + final TracedOutput modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); + LogicProblem problem = modelGenerationProblem.getOutput(); + workspace.writeModel(problem, "Fam.logicproblem"); + InputOutput.println("Problem created"); + long startTime = System.currentTimeMillis(); + VampireSolver reasoner = null; + VampireSolver _vampireSolver = new VampireSolver(); + reasoner = _vampireSolver; + final HashMap classMapMin = new HashMap(); + classMapMin.put(FAMTerminator.class, Integer.valueOf(1)); + final Map typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.getTrace()); + final HashMap classMapMax = new HashMap(); + classMapMax.put(FunctionalArchitectureModel.class, Integer.valueOf(3)); + classMapMax.put(Function.class, Integer.valueOf(5)); + classMapMax.put(functionalarchitecture.FunctionalInterface.class, Integer.valueOf(3)); + classMapMax.put(FunctionalOutput.class, Integer.valueOf(4)); + final Map typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, modelGenerationProblem.getTrace()); + VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); + final Procedure1 _function = (VampireSolverConfiguration it) -> { + it.documentationLevel = DocumentationLevel.FULL; + it.typeScopes.minNewElements = 8; + it.typeScopes.maxNewElements = 10; + it.solver = BackendSolver.LOCVAMP; + it.contCycleLevel = 5; + it.uniquenessDuplicates = false; + }; + final VampireSolverConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_vampireSolverConfiguration, _function); + LogicResult solution = reasoner.solve(problem, vampireConfig, workspace); + InputOutput.println("Problem solved"); + List interpretations = reasoner.getInterpretations(((ModelResult) solution)); + long _currentTimeMillis = System.currentTimeMillis(); + long _minus = (_currentTimeMillis - startTime); + long totalTimeMin = (_minus / 60000); + long _currentTimeMillis_1 = System.currentTimeMillis(); + long _minus_1 = (_currentTimeMillis_1 - startTime); + long _divide = (_minus_1 / 1000); + long totalTimeSec = (_divide % 60); + InputOutput.println(((("Time was: " + Long.valueOf(totalTimeMin)) + ":") + Long.valueOf(totalTimeSec))); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java new file mode 100644 index 000000000..8c7923be4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/FileSystemTest.java @@ -0,0 +1,106 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse; + +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.Dir; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.File; +import ca.mcgill.ecse.dslreasoner.standalone.test.filesystem.filesystemPackage; +import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; +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.viatra2logic.Viatra2Logic; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; +import java.util.HashMap; +import java.util.Map; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class FileSystemTest { + public static void main(final String[] args) { + try { + final Ecore2Logic ecore2Logic = new Ecore2Logic(); + final Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic); + final InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic(); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("initialModels/"); + final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), ""); + StringConcatenation _builder_1 = new StringConcatenation(); + _builder_1.append("output/FileSystemTest/"); + final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder_1.toString(), ""); + workspace.initAndClear(); + final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + final Map map = reg.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + map.put("logicproblem", _xMIResourceFactoryImpl); + InputOutput.println("Input and output workspaces are created"); + final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(filesystemPackage.eINSTANCE); + final EList partialModel = GeneralTest.loadPartialModel(inputs, "fs/filesystemInstance.xmi"); + InputOutput.println("DSL loaded"); + Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); + final TracedOutput modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); + LogicProblem problem = modelGenerationProblem.getOutput(); + problem = instanceModel2Logic.transform(modelGenerationProblem, partialModel).getOutput(); + workspace.writeModel(problem, "FileSystem.logicproblem"); + InputOutput.println("Problem created"); + long startTime = System.currentTimeMillis(); + VampireSolver reasoner = null; + VampireSolver _vampireSolver = new VampireSolver(); + reasoner = _vampireSolver; + final HashMap classMapMin = new HashMap(); + classMapMin.put(Dir.class, Integer.valueOf(10)); + classMapMin.put(File.class, Integer.valueOf(5)); + final Map typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, modelGenerationProblem.getTrace()); + final HashMap classMapMax = new HashMap(); + classMapMax.put(File.class, Integer.valueOf(15)); + classMapMax.put(Dir.class, Integer.valueOf(15)); + final Map typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, modelGenerationProblem.getTrace()); + VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); + final Procedure1 _function = (VampireSolverConfiguration it) -> { + it.documentationLevel = DocumentationLevel.FULL; + it.typeScopes.minNewElements = 10; + it.typeScopes.maxNewElements = 25; + int _size = typeMapMin.size(); + boolean _notEquals = (_size != 0); + if (_notEquals) { + it.typeScopes.minNewElementsByType = typeMapMin; + } + int _size_1 = typeMapMin.size(); + boolean _notEquals_1 = (_size_1 != 0); + if (_notEquals_1) { + it.typeScopes.maxNewElementsByType = typeMapMax; + } + it.contCycleLevel = 5; + it.uniquenessDuplicates = false; + }; + final VampireSolverConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_vampireSolverConfiguration, _function); + LogicResult solution = reasoner.solve(problem, vampireConfig, workspace); + long _currentTimeMillis = System.currentTimeMillis(); + long _minus = (_currentTimeMillis - startTime); + long totalTimeMin = (_minus / 60000); + long _currentTimeMillis_1 = System.currentTimeMillis(); + long _minus_1 = (_currentTimeMillis_1 - startTime); + long _divide = (_minus_1 / 1000); + long totalTimeSec = (_divide % 60); + InputOutput.println("Problem solved"); + InputOutput.println(((("Time was: " + Long.valueOf(totalTimeMin)) + ":") + Long.valueOf(totalTimeSec))); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.java new file mode 100644 index 000000000..bdea57467 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.java @@ -0,0 +1,95 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse; + +import com.google.common.base.Objects; +import com.google.common.collect.Iterables; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; +import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor; +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.eclipse.emf.common.util.EList; +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.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.viatra.query.runtime.api.IQueryGroup; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.ListExtensions; + +@SuppressWarnings("all") +public class GeneralTest { + public static Map getTypeMap(final Map classMap, final EcoreMetamodelDescriptor metamodel, final Ecore2Logic e2l, final Ecore2Logic_Trace trace) { + final HashMap typeMap = new HashMap(); + final Function1 _function = (EClass s) -> { + return s.getName(); + }; + final Map listMap = IterableExtensions.toMap(metamodel.getClasses(), _function); + Set _keySet = classMap.keySet(); + for (final Class elem : _keySet) { + typeMap.put( + e2l.TypeofEClass(trace, + listMap.get(elem.getSimpleName())), classMap.get(elem)); + } + return typeMap; + } + + public static EcoreMetamodelDescriptor loadMetamodel(final EPackage pckg) { + final List classes = IterableExtensions.toList(Iterables.filter(pckg.getEClassifiers(), EClass.class)); + final List enums = IterableExtensions.toList(Iterables.filter(pckg.getEClassifiers(), EEnum.class)); + final Function1> _function = (EEnum it) -> { + return it.getELiterals(); + }; + final List literals = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(enums, _function))); + final Function1> _function_1 = (EClass it) -> { + return it.getEReferences(); + }; + final List references = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(classes, _function_1))); + final Function1> _function_2 = (EClass it) -> { + return it.getEAttributes(); + }; + final List attributes = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(classes, _function_2))); + return new EcoreMetamodelDescriptor(classes, Collections.unmodifiableSet(CollectionLiterals.newHashSet()), false, enums, literals, references, attributes); + } + + public static EList loadPartialModel(final ReasonerWorkspace inputs, final String path) { + EList _xblockexpression = null; + { + Map _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + _extensionToFactoryMap.put("*", _xMIResourceFactoryImpl); + _xblockexpression = inputs.readModel(EObject.class, path).eResource().getContents(); + } + return _xblockexpression; + } + + public static ViatraQuerySetDescriptor loadQueries(final EcoreMetamodelDescriptor metamodel, final IQueryGroup i) { + final List> patterns = IterableExtensions.>toList(i.getSpecifications()); + final Function1, Boolean> _function = (IQuerySpecification it) -> { + final Function1 _function_1 = (PAnnotation it_1) -> { + String _name = it_1.getName(); + return Boolean.valueOf(Objects.equal(_name, "Constraint")); + }; + return Boolean.valueOf(IterableExtensions.exists(it.getAllAnnotations(), _function_1)); + }; + final Set> wfPatterns = IterableExtensions.>toSet(IterableExtensions.>filter(patterns, _function)); + final Map, EStructuralFeature> derivedFeatures = CollectionLiterals., EStructuralFeature>emptyMap(); + final ViatraQuerySetDescriptor res = new ViatraQuerySetDescriptor(patterns, wfPatterns, derivedFeatures); + return res; + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java new file mode 100644 index 000000000..a596deb4c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/icse/YakinduTest.java @@ -0,0 +1,239 @@ +package ca.mcgill.ecse.dslreasoner.vampire.icse; + +import ca.mcgill.ecse.dslreasoner.vampire.icse.GeneralTest; +import ca.mcgill.ecse.dslreasoner.vampire.queries.Patterns; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.BackendSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.CompositeElement; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Region; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.Transition; +import ca.mcgill.ecse.dslreasoner.vampire.yakindumm.YakindummPackage; +import com.google.common.base.Objects; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration; +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; +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.StatisticEntry; +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.StringStatisticEntry; +import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore; +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic; +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration; +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicTrace; +import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor; +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic; +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class YakinduTest { + public static void main(final String[] args) { + try { + final Ecore2Logic ecore2Logic = new Ecore2Logic(); + final Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic); + final Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic); + final InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic(); + long _currentTimeMillis = System.currentTimeMillis(); + final Date date = new Date(_currentTimeMillis); + final SimpleDateFormat format = new SimpleDateFormat("dd-HHmm"); + final String formattedDate = format.format(date); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("initialModels/"); + final FileSystemWorkspace inputs = new FileSystemWorkspace(_builder.toString(), ""); + StringConcatenation _builder_1 = new StringConcatenation(); + _builder_1.append("output/YakinduTest/"); + final FileSystemWorkspace dataWorkspace = new FileSystemWorkspace(_builder_1.toString(), ""); + StringConcatenation _builder_2 = new StringConcatenation(); + _builder_2.append("output/YakinduTest/"); + String _plus = (_builder_2.toString() + formattedDate); + StringConcatenation _builder_3 = new StringConcatenation(); + _builder_3.append("/"); + String _plus_1 = (_plus + _builder_3); + final FileSystemWorkspace workspace = new FileSystemWorkspace(_plus_1, ""); + workspace.initAndClear(); + final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + final Map map = reg.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + map.put("logicproblem", _xMIResourceFactoryImpl); + InputOutput.println("Input and output workspaces are created"); + final EcoreMetamodelDescriptor metamodel = GeneralTest.loadMetamodel(YakindummPackage.eINSTANCE); + final EList partialModel = GeneralTest.loadPartialModel(inputs, "yakindu/Yakindu.xmi"); + final ViatraQuerySetDescriptor queries = GeneralTest.loadQueries(metamodel, Patterns.instance()); + InputOutput.println("DSL loaded"); + int SZ_TOP = 120; + int SZ_BOT = 60; + int INC = 20; + int REPS = 25; + final int RUNTIME = 300; + final int EXACT = (-1); + if ((EXACT != (-1))) { + SZ_TOP = EXACT; + SZ_BOT = EXACT; + INC = 1; + REPS = 10; + } + final ArrayList BACKENDSOLVERS = CollectionLiterals.newArrayList( + BackendSolver.LOCVAMP); + String str = ""; + for (final BackendSolver solver : BACKENDSOLVERS) { + String _str = str; + String _substring = solver.name().substring(0, 1); + str = (_str + _substring); + } + ArrayList solverTimes = CollectionLiterals.newArrayList(); + ArrayList transformationTimes = CollectionLiterals.newArrayList(); + LogicResult solution = null; + for (final BackendSolver BESOLVER : BACKENDSOLVERS) { + { + int i = SZ_BOT; + boolean _while = (i <= SZ_TOP); + while (_while) { + { + URI _workspaceURI = dataWorkspace.getWorkspaceURI(); + String _plus_2 = (_workspaceURI + "//_vampire"); + String _plus_3 = (_plus_2 + Integer.valueOf(i)); + String _plus_4 = (_plus_3 + "x"); + String _plus_5 = (_plus_4 + Integer.valueOf(REPS)); + String _plus_6 = (_plus_5 + "-"); + String _plus_7 = (_plus_6 + formattedDate); + String _plus_8 = (_plus_7 + ".csv"); + PrintWriter writer = new PrintWriter(_plus_8); + writer.append("solver,size,transTime,sat?,satTime,model?,modelTime\n"); + final int num = ((i - SZ_BOT) / INC); + InputOutput.println(); + String _name = BESOLVER.name(); + String _plus_9 = ("SOLVER: " + _name); + String _plus_10 = (_plus_9 + ", SIZE="); + String _plus_11 = (_plus_10 + Integer.valueOf(i)); + InputOutput.println(_plus_11); + InputOutput.println(); + solverTimes.clear(); + transformationTimes.clear(); + for (int j = 0; (j < REPS); j++) { + { + InputOutput.print((("<> :")); + Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); + final TracedOutput modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); + TracedOutput modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel); + Viatra2LogicConfiguration _viatra2LogicConfiguration = new Viatra2LogicConfiguration(); + TracedOutput validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, _viatra2LogicConfiguration); + LogicProblem problem = modelGenerationProblem.getOutput(); + long startTime = System.currentTimeMillis(); + VampireSolver reasoner = null; + VampireSolver _vampireSolver = new VampireSolver(); + reasoner = _vampireSolver; + final HashMap classMapMin = new HashMap(); + classMapMin.put(Region.class, Integer.valueOf(1)); + classMapMin.put(Transition.class, Integer.valueOf(2)); + classMapMin.put(CompositeElement.class, Integer.valueOf(3)); + final Map typeMapMin = GeneralTest.getTypeMap(classMapMin, metamodel, ecore2Logic, + modelGenerationProblem.getTrace()); + final HashMap classMapMax = new HashMap(); + classMapMax.put(Region.class, Integer.valueOf(5)); + classMapMax.put(Transition.class, Integer.valueOf(2)); + final Map typeMapMax = GeneralTest.getTypeMap(classMapMax, metamodel, ecore2Logic, + modelGenerationProblem.getTrace()); + final int size = i; + final int inc = INC; + final int iter = j; + VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); + final Procedure1 _function = (VampireSolverConfiguration it) -> { + it.documentationLevel = DocumentationLevel.FULL; + it.iteration = iter; + it.runtimeLimit = RUNTIME; + it.typeScopes.maxNewElements = size; + it.typeScopes.minNewElements = size; + it.genModel = true; + it.server = false; + if (it.server) { + it.solver = BESOLVER; + } else { + it.solver = BackendSolver.LOCVAMP; + } + it.uniquenessDuplicates = false; + }; + final VampireSolverConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_vampireSolverConfiguration, _function); + solution = reasoner.solve(problem, vampireConfig, workspace); + String _name_1 = vampireConfig.solver.name(); + String _plus_12 = (_name_1 + ","); + writer.append(_plus_12); + String _plus_13 = (Integer.valueOf(size) + ","); + writer.append(_plus_13); + int _transformationTime = solution.getStatistics().getTransformationTime(); + double _divide = (_transformationTime / 1000.0); + String _plus_14 = (Double.valueOf(_divide) + ","); + writer.append(_plus_14); + final Function1 _function_1 = (StatisticEntry it) -> { + String _name_2 = it.getName(); + return Boolean.valueOf(Objects.equal(_name_2, "satOut")); + }; + StatisticEntry _get = ((StatisticEntry[])Conversions.unwrapArray(IterableExtensions.filter(solution.getStatistics().getEntries(), _function_1), StatisticEntry.class))[0]; + final String satOut = ((StringStatisticEntry) _get).getValue(); + final Function1 _function_2 = (StatisticEntry it) -> { + String _name_2 = it.getName(); + return Boolean.valueOf(Objects.equal(_name_2, "satTime")); + }; + StatisticEntry _get_1 = ((StatisticEntry[])Conversions.unwrapArray(IterableExtensions.filter(solution.getStatistics().getEntries(), _function_2), StatisticEntry.class))[0]; + final String satTime = ((StringStatisticEntry) _get_1).getValue(); + final Function1 _function_3 = (StatisticEntry it) -> { + String _name_2 = it.getName(); + return Boolean.valueOf(Objects.equal(_name_2, "modOut")); + }; + StatisticEntry _get_2 = ((StatisticEntry[])Conversions.unwrapArray(IterableExtensions.filter(solution.getStatistics().getEntries(), _function_3), StatisticEntry.class))[0]; + final String modOut = ((StringStatisticEntry) _get_2).getValue(); + final Function1 _function_4 = (StatisticEntry it) -> { + String _name_2 = it.getName(); + return Boolean.valueOf(Objects.equal(_name_2, "modTime")); + }; + StatisticEntry _get_3 = ((StatisticEntry[])Conversions.unwrapArray(IterableExtensions.filter(solution.getStatistics().getEntries(), _function_4), StatisticEntry.class))[0]; + final String modTime = ((StringStatisticEntry) _get_3).getValue(); + writer.append((satOut + ",")); + writer.append((satTime + ",")); + writer.append((modOut + ",")); + writer.append((modTime + "")); + writer.append("\n"); + InputOutput.println(((("->" + modOut) + " ... ") + modTime)); + final Runtime r = Runtime.getRuntime(); + r.gc(); + r.gc(); + r.gc(); + Thread.sleep(3000); + } + } + writer.close(); + } + int _i = i; + i = (_i + INC); + _while = (i <= SZ_TOP); + } + } + } + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin new file mode 100644 index 000000000..dbe4f4009 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.MedicalSystem.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin new file mode 100644 index 000000000..4da01ec26 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.SimpleRun.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin new file mode 100644 index 000000000..9d3232531 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.VampireTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.gitignore new file mode 100644 index 000000000..a16d5bbd7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/.gitignore @@ -0,0 +1,2 @@ +/.MedicalSystem.java._trace +/.VampireTest.java._trace diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.java new file mode 100644 index 000000000..0b96a2f35 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.java @@ -0,0 +1,79 @@ +package ca.mcgill.ecse.dslreasoner.vampire.test; + +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver; +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration; +import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage; +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; +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 hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage; +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; +import java.util.Map; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class MedicalSystem { + public static void main(final String[] args) { + try { + MedicalSystem.init(); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("output/MedicalSystem/"); + final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder.toString(), ""); + workspace.initAndClear(); + final LogicProblem root = MedicalSystem.load(); + InputOutput.println("Problem Loaded"); + LogicResult solution = null; + LogicReasoner reasoner = null; + VampireSolver _vampireSolver = new VampireSolver(); + reasoner = _vampireSolver; + VampireSolverConfiguration _vampireSolverConfiguration = new VampireSolverConfiguration(); + final Procedure1 _function = (VampireSolverConfiguration it) -> { + it.documentationLevel = DocumentationLevel.FULL; + }; + final VampireSolverConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_vampireSolverConfiguration, _function); + solution = reasoner.solve(root, vampireConfig, workspace); + InputOutput.println("Problem Solved"); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + protected static LogicProblem load() { + LogicProblem _xblockexpression = null; + { + final ResourceSetImpl resourceSet = new ResourceSetImpl(); + final Resource resource = resourceSet.getResource(URI.createURI("inputLPs/newMedicalSystem.logicproblem"), true); + EObject _get = resource.getContents().get(0); + final LogicProblem root = ((LogicProblem) _get); + _xblockexpression = root; + } + return _xblockexpression; + } + + protected static void init() { + LogiclanguagePackage.eINSTANCE.eClass(); + LogicproblemPackage.eINSTANCE.eClass(); + Ecore2logicannotationsPackage.eINSTANCE.eClass(); + Viatra2LogicAnnotationsPackage.eINSTANCE.eClass(); + final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + final Map map = reg.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + map.put("logicproblem", _xMIResourceFactoryImpl); + XMIResourceFactoryImpl _xMIResourceFactoryImpl_1 = new XMIResourceFactoryImpl(); + map.put("tptp", _xMIResourceFactoryImpl_1); + VampireLanguageStandaloneSetup.doSetup(); + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/VampireTest.java b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/VampireTest.java new file mode 100644 index 000000000..2af5d456e --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/xtend-gen/ca/mcgill/ecse/dslreasoner/vampire/test/VampireTest.java @@ -0,0 +1,144 @@ +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.DocumentationLevel; +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.builder.VariableContext; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.And; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Distinct; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Exists; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Iff; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Not; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Or; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.SymbolicValue; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable; +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 hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage; +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner; +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration; +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace; +import java.util.Map; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Extension; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; + +@SuppressWarnings("all") +public class VampireTest { + @Extension + private static final LogicProblemBuilder builder = new LogicProblemBuilder(); + + public static void main(final String[] args) { + try { + LogicproblemPackage.eINSTANCE.eClass(); + Ecore2logicannotationsPackage.eINSTANCE.eClass(); + Viatra2LogicAnnotationsPackage.eINSTANCE.eClass(); + final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + final Map map = reg.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + map.put("logicproblem", _xMIResourceFactoryImpl); + VampireLanguageStandaloneSetup.doSetup(); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("output/VampireTest"); + final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder.toString(), ""); + workspace.initAndClear(); + final String filename = "problem.logicproblem"; + LogicProblem problem = VampireTest.builder.createProblem(); + VampireTest.rockPaperScisors(problem); + workspace.writeModel(problem, filename); + InputOutput.println("Problem Created"); + LogicResult solution = null; + LogicReasoner reasoner = null; + ViatraReasoner _viatraReasoner = new ViatraReasoner(); + reasoner = _viatraReasoner; + ViatraReasonerConfiguration _viatraReasonerConfiguration = new ViatraReasonerConfiguration(); + final Procedure1 _function = (ViatraReasonerConfiguration it) -> { + it.documentationLevel = DocumentationLevel.FULL; + it.typeScopes.minNewElements = 4; + }; + final ViatraReasonerConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_viatraReasonerConfiguration, _function); + solution = reasoner.solve(problem, vampireConfig, workspace); + InputOutput.println("Problem Solved"); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + public String name() { + return this.getClass().getSimpleName(); + } + + public static Assertion deMorgan(final LogicProblem problem) { + Assertion _xblockexpression = null; + { + ConstantDeclaration X = VampireTest.builder.ConstantDeclaration(VampireTest.builder.LogicBool()); + ConstantDeclaration Y = VampireTest.builder.ConstantDeclaration(VampireTest.builder.LogicBool()); + VampireTest.builder.add(problem, X); + VampireTest.builder.add(problem, Y); + And _and = VampireTest.builder.operator_and(X, Y); + Not _not = VampireTest.builder.operator_not(_and); + Not _not_1 = VampireTest.builder.operator_not(X); + Not _not_2 = VampireTest.builder.operator_not(Y); + Or _or = VampireTest.builder.operator_or(_not_1, _not_2); + Iff _spaceship = VampireTest.builder.operator_spaceship(_not, _or); + _xblockexpression = VampireTest.builder.add(problem, VampireTest.builder.Assertion(_spaceship)); + } + return _xblockexpression; + } + + public static Assertion rockPaperScisors(final LogicProblem problem) { + Assertion _xblockexpression = null; + { + final DefinedElement rock = VampireTest.builder.Element("Rock"); + final DefinedElement paper = VampireTest.builder.Element("Paper"); + final DefinedElement scissor = VampireTest.builder.Element("Scissor"); + EList _elements = problem.getElements(); + _elements.add(rock); + EList _elements_1 = problem.getElements(); + _elements_1.add(paper); + EList _elements_2 = problem.getElements(); + _elements_2.add(scissor); + final Type oldRPS = VampireTest.builder.add(problem, VampireTest.builder.TypeDefinition("oldRPS", false, rock, paper, scissor)); + final Relation beats2 = VampireTest.builder.add(problem, VampireTest.builder.RelationDeclaration("beats2", oldRPS, oldRPS)); + final Function1 _function = (VariableContext it) -> { + Exists _xblockexpression_1 = null; + { + final Variable x = it.addVar("x", oldRPS); + final Function1 _function_1 = (VariableContext it_1) -> { + And _xblockexpression_2 = null; + { + final Variable y = it_1.addVar("y", oldRPS); + SymbolicValue _call = VampireTest.builder.call(beats2, x, y); + Distinct _notEquals = VampireTest.builder.operator_notEquals(x, y); + _xblockexpression_2 = VampireTest.builder.And(_call, _notEquals, + VampireTest.builder.Not(VampireTest.builder.call(beats2, y, x))); + } + return _xblockexpression_2; + }; + _xblockexpression_1 = VampireTest.builder.Exists(_function_1); + } + return _xblockexpression_1; + }; + _xblockexpression = VampireTest.builder.add(problem, + VampireTest.builder.Assertion( + VampireTest.builder.Forall(_function))); + } + return _xblockexpression; + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.classpath b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.classpath new file mode 100644 index 000000000..428337e56 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.gitignore new file mode 100644 index 000000000..ae3c17260 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.project b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.project new file mode 100644 index 000000000..1701c3baa --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.project @@ -0,0 +1,40 @@ + + + ca.mcgill.ecse.dslreasoner.yakindu.test + + + + + + org.eclipse.viatra.query.tooling.ui.projectbuilder + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature + org.eclipse.viatra.query.projectnature + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.settings/org.eclipse.jdt.core.prefs b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..0c68a61dc --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/META-INF/MANIFEST.MF b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/META-INF/MANIFEST.MF new file mode 100644 index 000000000..a2562b0ff --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/META-INF/MANIFEST.MF @@ -0,0 +1,39 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Test +Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.yakindu.test;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.viatra.addon.querybasedfeatures.runtime, + org.eclipse.core.runtime, + org.eclipse.emf.ecore;visibility:=reexport, + org.eclipse.viatra.query.runtime.rete, + org.eclipse.viatra.query.runtime.localsearch, + com.google.guava, + org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib, + org.eclipse.xtend.lib.macro, + ca.mcgill.ecse.dslreasoner.vampire.language;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", + ca.mcgill.ecse.dslreasoner.vampire.reasoner;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0", + org.eclipse.emf.ecore.xmi;bundle-version="2.13.0", + hu.bme.mit.inf.dlsreasoner.alloy.reasoner;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.logic2ecore;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.visualisation;bundle-version="1.0.0", + ModelGenExampleFAM_plugin;bundle-version="1.0.0", + ModelGenExampleFAM_plugin.validation;bundle-version="0.0.1", + hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation;bundle-version="0.0.1", + org.eclipse.viatra.query.runtime;bundle-version="2.1.0", + org.eclipse.collections;bundle-version="9.2.0", + hu.bme.mit.inf.dslreasoner.application.FAMTest;bundle-version="1.0.0", + ca.mcgill.ecse.dslreasoner.standalone.test;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.alloy.language;bundle-version="1.0.0", + hu.bme.mit.inf.dslreasoner.alloy.language.ui;bundle-version="1.0.0" +Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.yakindu.test +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: org.apache.log4j diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/.YakinduTest.xtendbin b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/.YakinduTest.xtendbin new file mode 100644 index 000000000..d0f61cf19 Binary files /dev/null and b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/.YakinduTest.xtendbin differ diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/.gitignore b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/.gitignore new file mode 100644 index 000000000..5d3de4ba9 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/.gitignore @@ -0,0 +1 @@ +/.YakinduTest.java._trace diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/YakinduTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/YakinduTest.xtend new file mode 100644 index 000000000..b6aae6ab4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/bin/ca/mcgill/ecse/dslreasoner/yakindu/test/YakinduTest.xtend @@ -0,0 +1,178 @@ +package ca.mcgill.ecse.dslreasoner.yakindu.test + +import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage +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.LogicProblemBuilder +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder +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.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.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +import java.util.LinkedList +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.EPackage +import org.eclipse.emf.ecore.EReference +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +import hu.bme.mit.inf.dslreasoner.logic.model.builder.SolutionScope + +class YakinduTest { + + static String inWS = "input" + static String outWS = "output" + static String imName = "Yakindu.xmi" + + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + // Workspace setup + val inputs = new FileSystemWorkspace(inWS + '''/''', "") + val workspace = new FileSystemWorkspace(outWS + '''/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + //loading the modeling environment + val metamodel = loadMetamodel(YakindummPackage.eINSTANCE) // TODO + val partialModel = loadPartialModel(inputs, imName) +// val queries = loadQueries(metamodel, Patterns.instance) + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) + var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) +// var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, new Viatra2LogicConfiguration) + var problem = modelExtensionProblem.output + + println("Modelling environment Loaded") + + + val ss = new SolutionScope() + ss.numberOfRequiredSolution = 5 + + var reasoner = new ViatraReasoner + val vampireConfig = new ViatraReasonerConfiguration => [ + // add configuration things, in config file first +// it.documentationLevel = DocumentationLevel::FULL + it.solutionScope = ss + it.typeScopes.maxNewElements = 10 + it.typeScopes.minNewElements = 5 + ] + + println("Problem Ready") + + var LogicResult solution = reasoner.solve(problem, vampireConfig, 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, models) +// print((solution as ModelResult).representation.get(0)) +// val soln = ((solution as ModelResult).representation.get(0) as VampireModel) +// println(soln.confirmations) +// println((solution as ModelResult).representation) +// modelFound = !soln.confirmations.filter [ +// class == VLSFiniteModelImpl +// ].isEmpty + } + +// def static Map getTypeMap(Map classMap, EcoreMetamodelDescriptor metamodel, +// Ecore2Logic e2l, Ecore2Logic_Trace trace) { +// val typeMap = new HashMap +// val listMap = metamodel.classes.toMap[s|s.name] +// +// for (Class elem : classMap.keySet) { +// typeMap.put(e2l.TypeofEClass( +// trace, +// listMap.get(elem.simpleName) +// ), classMap.get(elem)) +// } +// return typeMap +// } + def static loadMetamodel(EPackage pckg) { + val List classes = pckg.getEClassifiers.filter(EClass).toList + val List enums = pckg.getEClassifiers.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 static loadPartialModel(ReasonerWorkspace inputs, String path) { + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()) + inputs.readModel(EObject, path).eResource.contents +// inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList + } + +// def static loadQueries(EcoreMetamodelDescriptor metamodel, IQueryGroup i) { +// val patterns = i.specifications.toList +// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet +// val derivedFeatures = emptyMap +// // NO DERIVED FEATURES +//// 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 +// } + +def static writeSolution(LogicResult solution, ReasonerWorkspace workspace, List models) { + if(solution instanceof ModelResult) { + val representations = solution.representation + + for(representationIndex : 0.. + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakinduPatterns.vql_ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakinduPatterns.vql_ new file mode 100644 index 000000000..f52113ca4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakinduPatterns.vql_ @@ -0,0 +1,227 @@ +package ca.mcgill.ecse.dslreasoner.yakindu.queries + +import epackage "hu.bme.mit.inf.yakindumm" + +///////// +// Entry +///////// + +pattern entryInRegion(r1 : Region, e1 : Entry) { + Region.vertices(r1, e1); +} + +@Constraint(severity="error", message="error", key = {r1}) +pattern noEntryInRegion(r1 : Region) { + neg find entryInRegion(r1, _); +} + +@Constraint(severity="error", message="error", key = {r}) +pattern multipleEntryInRegion(r : Region) { + find entryInRegion(r, e1); + find entryInRegion(r, e2); + e1 != e2; +} + +pattern transition(t : Transition, src : Vertex, trg : Vertex) { + Transition.source(t, src); + Transition.target(t, trg); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern incomingToEntry(t : Transition, e : Entry) { + find transition(t, _, e); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern noOutgoingTransitionFromEntry(e : Entry) { + neg find transition(_, e, _); +} + +@Constraint(severity="error", message="error", key = {e}) +pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) { + Entry.outgoingTransitions(e,t1); + Entry.outgoingTransitions(e,t2); + t1!=t2; +} + +///////// +// Exit +///////// + +@Constraint(severity="error", message="error", key = {e}) +pattern outgoingFromExit(t : Transition, e : Exit) { + Exit.outgoingTransitions(e,t); +} + +///////// +// Final +///////// + +@Constraint(severity="error", message="error", key = {f}) +pattern outgoingFromFinal(t : Transition, f : FinalState) { + FinalState.outgoingTransitions(f,t); +} + +///////// +// State vs Region +///////// + +@Constraint(severity="error", message="error", key = {region}) +pattern noStateInRegion(region: Region) { + neg find StateInRegion(region,_); +} +pattern StateInRegion(region: Region, state: State) { + Region.vertices(region,state); +} + +///////// +// Choice +///////// + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoOutgoing(c : Choice) { + neg find transition(_, c, _); +} + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoIncoming(c: Choice) { + neg find transition(_, _, c); +} + +///////// +// Synchronization +///////// + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoOutgoing(s : Synchronization) { + neg find transition(_, s, _); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoIncoming(s : Synchronization) { + neg find transition(_, _, s); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { + find transition(t1, v1, s); + find transition(t2, v2, s); + t1!=t2; + Region.vertices(r, v1); + Region.vertices(r, v2); +} or { + find transition(t1, s, v1); + find transition(t2, s, v2); + t1!=t2; + Region.vertices(r, v1); + Region.vertices(r, v2); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern notSynchronizingStates(s : Synchronization) { + neg find hasMultipleOutgoingTrainsition(s); + neg find hasMultipleIncomingTrainsition(s); +} + +pattern hasMultipleOutgoingTrainsition(v : Synchronization) { + find transition(_, v, trg1); + find transition(_, v, trg2); + trg1 != trg2; +} + +pattern hasMultipleIncomingTrainsition(v : Synchronization) { + find transition(_, src1, v); + find transition(_, src2, v); + src1 != src2; +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { + find transition(_, v1, s); + find transition(_, v2, s); + CompositeElement.regions.vertices(r1, v1); + CompositeElement.regions.vertices(r2, v2); + r1 != r2; +} or { + find transition(_, s, v1); + find transition(_, s, v2); + CompositeElement.regions.vertices(r1, v1); + CompositeElement.regions.vertices(r2, v2); + r1 != r2; +} + +/////////////////////////////// +// Extra +// +//@Constraint(severity="error", message="error", key = {s}) +//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) { +// find transition(_, v, s); +// neg find child(_,v); +//} or { +// find transition(_, s, v); +// neg find child(_,v); +//} + +pattern child(parent: CompositeElement, child: Vertex) { + CompositeElement.regions.vertices(parent, child); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) { + find transition(_, v, s); + find child(c,v); + neg find hasMultipleRegions(c); +} or { + find transition(_, s, v); + find child(c,v); + neg find hasMultipleRegions(c); +} + + +pattern hasMultipleRegions(composite: CompositeElement) { + CompositeElement.regions(composite,region1); + CompositeElement.regions(composite,region2); + region1 != region2; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s}) +pattern synchThree(s: Synchronization) { + Transition.target(t1,s); + Transition.target(t2,s); + Transition.target(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} or { + Transition.source(t1,s); + Transition.source(t2,s); + Transition.source(t3,s); + t1!=t2; + t2!=t3; + t1!=t3; +} + +/** + * Simplifying model generation + */ +@Constraint(severity="error", message="error", key = {s1,s2}) +pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { + Synchronization(s1); + Synchronization(s2); + s1 != s2; +} + +/** + * Model generation task: at least one synch + */ +@Constraint(severity="error", message="error", key = {s}) +pattern noSynch(s:Statechart) { + Statechart(s); + neg find synch(_); +} +pattern synch(s:Synchronization) { + Synchronization(s); +} \ No newline at end of file diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.aird b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.aird new file mode 100644 index 000000000..38b2b4100 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.aird @@ -0,0 +1,704 @@ + + + + yakindu_simplified.ecore + yakindu_simplified.genmodel + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + italic + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + labelSize + + + labelSize + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.ecore b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.ecore new file mode 100644 index 000000000..02b572526 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.ecore @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.genmodel b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.genmodel new file mode 100644 index 000000000..cfbafce66 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/input/yakindu_simplified.genmodel @@ -0,0 +1,40 @@ + + + yakindu_simplified.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model1.xmi new file mode 100644 index 000000000..bdf689773 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model1.xmi @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model2.xmi new file mode 100644 index 000000000..8bb0e0345 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model2.xmi @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model3.xmi b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model3.xmi new file mode 100644 index 000000000..344c4b811 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model3.xmi @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model4.xmi b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model4.xmi new file mode 100644 index 000000000..755c76467 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model4.xmi @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model5.xmi b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model5.xmi new file mode 100644 index 000000000..3b6017043 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/model5.xmi @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution1Visualisation.gml b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution1Visualisation.gml new file mode 100644 index 000000000..4c171e32f --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution1Visualisation.gml @@ -0,0 +1,646 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 217.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Normal literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "History literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 261.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "DeepHistory literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Choice class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution2Visualisation.gml b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution2Visualisation.gml new file mode 100644 index 000000000..f45394ea7 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution2Visualisation.gml @@ -0,0 +1,706 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 217.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Normal literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "History literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 261.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "DeepHistory literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Choice class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution3Visualisation.gml b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution3Visualisation.gml new file mode 100644 index 000000000..b9f96971c --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution3Visualisation.gml @@ -0,0 +1,764 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 217.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Normal literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "History literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 261.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "DeepHistory literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Choice class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 177.10000000000002 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Synchronization class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution4Visualisation.gml b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution4Visualisation.gml new file mode 100644 index 000000000..0e9040ed6 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution4Visualisation.gml @@ -0,0 +1,822 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 217.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Normal literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "History literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 261.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "DeepHistory literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Choice class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 177.10000000000002 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Synchronization class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution5Visualisation.gml b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution5Visualisation.gml new file mode 100644 index 000000000..b6332fe38 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/output/solution5Visualisation.gml @@ -0,0 +1,882 @@ +graph +[ + node + [ + id 0 + graphics + [ + w 217.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "Normal literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 1 + graphics + [ + w 226.60000000000002 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "History literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 2 + graphics + [ + w 261.8 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "DeepHistory literal EntryType" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + EntryType enum + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 3 + graphics + [ + w 277.20000000000005 + h 82 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "o 1" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Statechart class DefinedPart + CompositeElement class DefinedPart + Statechart class + CompositeElement class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 4 + graphics + [ + w 41.800000000000004 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "true" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 5 + graphics + [ + w 50.6 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "false" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 6 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 7 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Choice class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 8 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 9 + graphics + [ + w 146.3 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Entry class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 10 + graphics + [ + w 107.80000000000001 + h 40 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Region class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 11 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 12 + graphics + [ + w 177.10000000000002 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Pseudostate class + Vertex class + Synchronization class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 13 + graphics + [ + w 154.0 + h 68 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + RegularState class + FinalState class + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 14 + graphics + [ + w 292.6 + h 96 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "null" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + Vertex class + State class + RegularState class + CompositeElement class + CompositeElement class UndefinedPart + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 15 + graphics + [ + w 112.2 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Integers" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 16 + graphics + [ + w 85.80000000000001 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Reals" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 17 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Strings" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + + node + [ + id 18 + graphics + [ + w 103.4 + h 26 + type "rectangle" + fill "#FFFFFF" + fill2 "#FFFFFF" + outline "#000000" + ] + LabelGraphics + [ + text "New Objects" + outline "#000000" + fill "#FFFFFF" + fontSize 16 + fontName "Monospace" + autoSizePolicy "node_width" + anchor "t" + borderDistance 0.0 + ] + LabelGraphics + [ + text " + " + fontSize 14 + fontName "Consolas" + alignment "left" + anchor "tl" + borderDistance 6 + ] + ] + edge + [ + source 6 + target 7 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 8 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 9 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 11 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 6 + target 12 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 13 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 10 + target 14 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "vertices reference Region" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 6 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] + edge + [ + source 3 + target 10 + graphics + [ + fill "#000000" + width 3 + targetArrow "standard" + ] + LabelGraphics + [ + text "regions reference CompositeElement" + fontSize 14 + fontName "Consolas" + configuration "AutoFlippingLabel" + model "six_pos" + position "thead" + ] + ] +] + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/plugin.xml b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/plugin.xml new file mode 100644 index 000000000..c760d4efd --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/plugin.xml @@ -0,0 +1 @@ + diff --git a/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/src/ca/mcgill/ecse/dslreasoner/yakindu/test/YakinduTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/src/ca/mcgill/ecse/dslreasoner/yakindu/test/YakinduTest.xtend new file mode 100644 index 000000000..b6aae6ab4 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.yakindu.test/src/ca/mcgill/ecse/dslreasoner/yakindu/test/YakinduTest.xtend @@ -0,0 +1,178 @@ +package ca.mcgill.ecse.dslreasoner.yakindu.test + +import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage +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.LogicProblemBuilder +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder +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.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.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +import java.util.LinkedList +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.EPackage +import org.eclipse.emf.ecore.EReference +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +import hu.bme.mit.inf.dslreasoner.logic.model.builder.SolutionScope + +class YakinduTest { + + static String inWS = "input" + static String outWS = "output" + static String imName = "Yakindu.xmi" + + def static void main(String[] args) { + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + // Workspace setup + val inputs = new FileSystemWorkspace(inWS + '''/''', "") + val workspace = new FileSystemWorkspace(outWS + '''/''', "") + workspace.initAndClear + + // Logicproblem writing setup + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + + println("Input and output workspaces are created") + + //loading the modeling environment + val metamodel = loadMetamodel(YakindummPackage.eINSTANCE) // TODO + val partialModel = loadPartialModel(inputs, imName) +// val queries = loadQueries(metamodel, Patterns.instance) + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration()) + var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel) +// var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem, new Viatra2LogicConfiguration) + var problem = modelExtensionProblem.output + + println("Modelling environment Loaded") + + + val ss = new SolutionScope() + ss.numberOfRequiredSolution = 5 + + var reasoner = new ViatraReasoner + val vampireConfig = new ViatraReasonerConfiguration => [ + // add configuration things, in config file first +// it.documentationLevel = DocumentationLevel::FULL + it.solutionScope = ss + it.typeScopes.maxNewElements = 10 + it.typeScopes.minNewElements = 5 + ] + + println("Problem Ready") + + var LogicResult solution = reasoner.solve(problem, vampireConfig, 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, models) +// print((solution as ModelResult).representation.get(0)) +// val soln = ((solution as ModelResult).representation.get(0) as VampireModel) +// println(soln.confirmations) +// println((solution as ModelResult).representation) +// modelFound = !soln.confirmations.filter [ +// class == VLSFiniteModelImpl +// ].isEmpty + } + +// def static Map getTypeMap(Map classMap, EcoreMetamodelDescriptor metamodel, +// Ecore2Logic e2l, Ecore2Logic_Trace trace) { +// val typeMap = new HashMap +// val listMap = metamodel.classes.toMap[s|s.name] +// +// for (Class elem : classMap.keySet) { +// typeMap.put(e2l.TypeofEClass( +// trace, +// listMap.get(elem.simpleName) +// ), classMap.get(elem)) +// } +// return typeMap +// } + def static loadMetamodel(EPackage pckg) { + val List classes = pckg.getEClassifiers.filter(EClass).toList + val List enums = pckg.getEClassifiers.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 static loadPartialModel(ReasonerWorkspace inputs, String path) { + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()) + inputs.readModel(EObject, path).eResource.contents +// inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList + } + +// def static loadQueries(EcoreMetamodelDescriptor metamodel, IQueryGroup i) { +// val patterns = i.specifications.toList +// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet +// val derivedFeatures = emptyMap +// // NO DERIVED FEATURES +//// 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 +// } + +def static writeSolution(LogicResult solution, ReasonerWorkspace workspace, List models) { + if(solution instanceof ModelResult) { + val representations = solution.representation + + for(representationIndex : 0.. map = reg.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + map.put("logicproblem", _xMIResourceFactoryImpl); + InputOutput.println("Input and output workspaces are created"); + final EcoreMetamodelDescriptor metamodel = YakinduTest.loadMetamodel(YakindummPackage.eINSTANCE); + final EList partialModel = YakinduTest.loadPartialModel(inputs, YakinduTest.imName); + Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration(); + final TracedOutput modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration); + TracedOutput modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel); + LogicProblem problem = modelExtensionProblem.getOutput(); + InputOutput.println("Modelling environment Loaded"); + final SolutionScope ss = new SolutionScope(); + ss.numberOfRequiredSolution = 5; + ViatraReasoner reasoner = new ViatraReasoner(); + ViatraReasonerConfiguration _viatraReasonerConfiguration = new ViatraReasonerConfiguration(); + final Procedure1 _function = (ViatraReasonerConfiguration it) -> { + it.solutionScope = ss; + it.typeScopes.maxNewElements = 10; + it.typeScopes.minNewElements = 5; + }; + final ViatraReasonerConfiguration vampireConfig = ObjectExtensions.operator_doubleArrow(_viatraReasonerConfiguration, _function); + InputOutput.println("Problem Ready"); + LogicResult solution = reasoner.solve(problem, vampireConfig, workspace); + InputOutput.println("Problem solved"); + final List interpretations = reasoner.getInterpretations(((ModelResult) solution)); + final LinkedList models = new LinkedList(); + for (final LogicModelInterpretation interpretation : interpretations) { + { + final EObject instanceModel = logic2Ecore.transformInterpretation(interpretation, modelGenerationProblem.getTrace()); + models.add(instanceModel); + } + } + YakinduTest.writeSolution(solution, workspace, models); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } + + public static EcoreMetamodelDescriptor loadMetamodel(final EPackage pckg) { + final List classes = IterableExtensions.toList(Iterables.filter(pckg.getEClassifiers(), EClass.class)); + final List enums = IterableExtensions.toList(Iterables.filter(pckg.getEClassifiers(), EEnum.class)); + final Function1> _function = (EEnum it) -> { + return it.getELiterals(); + }; + final List literals = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(enums, _function))); + final Function1> _function_1 = (EClass it) -> { + return it.getEReferences(); + }; + final List references = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(classes, _function_1))); + final Function1> _function_2 = (EClass it) -> { + return it.getEAttributes(); + }; + final List attributes = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(classes, _function_2))); + return new EcoreMetamodelDescriptor(classes, Collections.unmodifiableSet(CollectionLiterals.newHashSet()), false, enums, literals, references, attributes); + } + + public static EList loadPartialModel(final ReasonerWorkspace inputs, final String path) { + EList _xblockexpression = null; + { + Map _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + _extensionToFactoryMap.put("*", _xMIResourceFactoryImpl); + _xblockexpression = inputs.readModel(EObject.class, path).eResource().getContents(); + } + return _xblockexpression; + } + + public static String writeSolution(final LogicResult solution, final ReasonerWorkspace workspace, final List models) { + String _xifexpression = null; + if ((solution instanceof ModelResult)) { + String _xblockexpression = null; + { + final EList representations = ((ModelResult)solution).getRepresentation(); + int _size = representations.size(); + ExclusiveRange _doubleDotLessThan = new ExclusiveRange(0, _size, true); + for (final Integer representationIndex : _doubleDotLessThan) { + { + final Object representation = representations.get((representationIndex).intValue()); + final int representationNumber = ((representationIndex).intValue() + 1); + if ((representation instanceof PartialInterpretation)) { + final PartialInterpretation2Gml partialInterpretation2GML = new PartialInterpretation2Gml(); + final String gml = partialInterpretation2GML.transform(((PartialInterpretation)representation)); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("solution"); + _builder.append(representationNumber); + _builder.append("Visualisation.gml"); + workspace.writeText(_builder.toString(), gml); + } else { + StringConcatenation _builder_1 = new StringConcatenation(); + _builder_1.append("solution"); + _builder_1.append(representationNumber); + _builder_1.append(".txt"); + workspace.writeText(_builder_1.toString(), representation.toString()); + } + } + } + int _size_1 = models.size(); + ExclusiveRange _doubleDotLessThan_1 = new ExclusiveRange(0, _size_1, true); + for (final Integer modelIndex : _doubleDotLessThan_1) { + { + final EObject model = models.get((modelIndex).intValue()); + final int representationNumber = ((modelIndex).intValue() + 1); + StringConcatenation _builder = new StringConcatenation(); + _builder.append("model"); + _builder.append(representationNumber); + _builder.append(".xmi"); + workspace.writeModel(model, _builder.toString()); + } + } + _xblockexpression = InputOutput.println("Solution saved and visualised"); + } + _xifexpression = _xblockexpression; + } + return _xifexpression; + } +} diff --git a/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/.classpath b/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/.classpath index 1c96fe2f6..2b46fc9bf 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/.classpath +++ b/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/.classpath @@ -4,5 +4,6 @@ + diff --git a/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/META-INF/MANIFEST.MF b/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/META-INF/MANIFEST.MF index 4e3222f9e..d32b92ce6 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/META-INF/MANIFEST.MF +++ b/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/META-INF/MANIFEST.MF @@ -1,15 +1,14 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: FAMTest -Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.application.FAMTest;singleton:=true -Bundle-Version: 1.0.0.qualifier -Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.application.FAMTest -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: com.google.guava, - org.eclipse.xtext.xbase.lib, - org.eclipse.xtend.lib, - org.eclipse.xtend.lib.macro, - hu.bme.mit.inf.dslreasoner.application;bundle-version="1.0.0", - org.junit;bundle-version="4.12.0", - org.eclipse.collections;bundle-version="7.1.1" - +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: FAMTest +Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.application.FAMTest;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: com.google.guava, + org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib, + org.eclipse.xtend.lib.macro, + hu.bme.mit.inf.dslreasoner.application;bundle-version="1.0.0", + org.junit;bundle-version="4.12.0", + org.eclipse.collections;bundle-version="7.1.1" +Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.application.FAMTest +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/build.properties b/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/build.properties index 41eb6ade2..aed85a48d 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/build.properties +++ b/Tests/hu.bme.mit.inf.dslreasoner.application.FAMTest/build.properties @@ -1,4 +1,5 @@ -source.. = src/ -output.. = bin/ bin.includes = META-INF/,\ . +source.. = src/,\ + src-gen/ +output.. = bin/ diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend index 863a91c88..d3afb7f71 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend @@ -72,10 +72,10 @@ class SimpleRun { it.typeScopes.maxNewElements = 40 it.typeScopes.minNewElements = 40 it.solutionScope.numberOfRequiredSolution = 1 - it.existingQueries = queries.patterns.map[it.internalQueryRepresentation] +// it.existingQueries = queries.patterns.map[it.internalQueryRepresentation] it.debugCongiguration.logging = false it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 - it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation +// it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation ] solution = reasoner.solve(logicProblem,viatraConfig,workspace) /*/ diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/TestForDP.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/TestForDP.xtend new file mode 100644 index 000000000..e112ab598 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/TestForDP.xtend @@ -0,0 +1,5 @@ +package hu.bme.mit.inf.dslreasoner.run + +class TestForDP { + +} \ No newline at end of file